Zum Hauptinhalt springen

Content-Endpunkte

Das Content-Modul verwaltet Website-Seiten, Abschnitte, Elemente, Blöcke, Blogbeiträge, Weiterleitungen, Predigten, Playlists, Streaming-Dienste, Termine, kuratierte Kalender, Dateien, Galerien, Bibelübersetzungen und Versnachschlagewerke, Songs, Arrangements, globale Stile, Stockfotos und Einstellungen. Es ist das größte Modul der API und treibt das CMS, Medien-/Streaming-Funktionen, die Gottesdienstplanung und die Bibel-Funktionen in allen ChurchApps-Anwendungen an.

Basispfad: /content

Seiten (Pages)

Basispfad: /content/pages

MethodePfadAuthBerechtigungBeschreibung
GET/:churchId/tree?url=&id=ÖffentlichVollständigen Seitenbaum (Abschnitte, Elemente, Blöcke) anhand von URL oder ID laden. Entfernt interne IDs bei Abruf über URL. URL-basierte Abrufe erzwingen pages.visibility — eine gesperrte Seite liefert { restricted: true, visibility }, sofern das (optionale) JWT die Bedingung nicht erfüllt
GET/public/:churchIdÖffentlichÖffentliche Seiten auflisten (url, title, metaDescription); nur visibility = everyone
GET/:idJWTEine Seite anhand der ID abrufen
GET/JWTAlle Seiten der Kirche auflisten
POST/duplicate/:idJWTContent.EditEine Seite mit allen Abschnitten und Elementen duplizieren
POST/temp/aiJWTContent.EditEine KI-generierte Seite speichern (Seite, Abschnitte und Elemente in einem Aufruf)
POST/JWTContent.EditSeiten erstellen oder aktualisieren (Batch)
DELETE/:idJWTContent.EditEine Seite löschen

Beispiel: Seitenbaum laden

GET /content/pages/abc-church-id/tree?url=/about
{
"name": "About",
"url": "/about",
"sections": [
{
"background": "#FFFFFF",
"textColor": "dark",
"elements": [
{ "elementType": "textWithPhoto", "answers": { "text": "Welcome" } }
]
}
]
}

Abschnitte (Sections)

Basispfad: /content/sections

MethodePfadAuthBerechtigungBeschreibung
GET/:idJWTEinen Abschnitt anhand der ID abrufen
POST/duplicate/:id?convertToBlock=JWTContent.EditEinen Abschnitt duplizieren oder in einen wiederverwendbaren Block umwandeln
POST/JWTContent.EditAbschnitte erstellen oder aktualisieren (Batch). Aktualisiert die Sortierreihenfolge automatisch
DELETE/:idJWTContent.EditEinen Abschnitt löschen (aktualisiert die Sortierreihenfolge automatisch)

Elemente (Elements)

Basispfad: /content/elements

MethodePfadAuthBerechtigungBeschreibung
GET/:idJWTEin Element anhand der ID abrufen
POST/duplicate/:idJWTContent.EditEin Element mit allen untergeordneten Elementen duplizieren
POST/JWTContent.EditElemente erstellen oder aktualisieren (Batch). Verwaltet Zeilenspalten und Karussell-Folien automatisch
DELETE/:idJWTContent.EditEin Element löschen

Blöcke (Blocks)

Basispfad: /content/blocks

Erweitert Standard-CRUD (GET /:id, GET /, POST /, DELETE /:id aus der Basisklasse, mit Content.Edit-Berechtigung für Schreibzugriffe).

MethodePfadAuthBerechtigungBeschreibung
GET/:idJWTEinen Block anhand der ID abrufen
GET/JWTAlle Blöcke auflisten
GET/:churchId/tree/:idÖffentlichVollständigen Blockbaum mit Abschnitten und Elementen laden
GET/blockType/:blockTypeJWTBlöcke nach Typ laden (z. B. footerBlock, elementBlock)
GET/public/footer/:churchIdÖffentlichFooter-Blockbaum einer Kirche laden
POST/JWTContent.EditBlöcke erstellen oder aktualisieren
DELETE/:idJWTContent.EditEinen Block löschen

Basispfad: /content/links

Erweitert Standard-CRUD (GET /:id, GET /, POST /, DELETE /:id aus der Basisklasse, mit Content.Edit-Berechtigung für Schreibzugriffe).

MethodePfadAuthBerechtigungBeschreibung
GET/:idJWTEinen Link anhand der ID abrufen
GET/JWTAlle Links auflisten. Optionaler ?category=-Filter. Sortiert nach dem Speichern automatisch
GET/church/:churchId/filtered?category=JWTLinks gefiltert nach Sichtbarkeit laden (everyone, visitors, members, staff, groups)
GET/church/:churchId?category=ÖffentlichLinks einer Kirche nach Kategorie laden (öffentlich)
POST/JWTContent.EditLinks erstellen oder aktualisieren (Batch). Sortiert automatisch nach Kategorie
DELETE/:idJWTContent.EditEinen Link löschen

Globale Stile (Global Styles)

Basispfad: /content/globalStyles

Erweitert Standard-CRUD (POST /, DELETE /:id aus der Basisklasse, mit Content.Edit-Berechtigung für Schreibzugriffe).

MethodePfadAuthBerechtigungBeschreibung
GET/church/:churchIdÖffentlichGlobale Stile einer Kirche laden (liefert Standardwerte, falls keine gesetzt sind)
GET/JWTGlobale Stile der authentifizierten Kirche laden
POST/JWTContent.EditGlobale Stile erstellen oder aktualisieren
DELETE/:idJWTContent.EditGlobale Stile löschen

Seitenverlauf (Page History)

Basispfad: /content/pageHistory

MethodePfadAuthBerechtigungBeschreibung
GET/page/:pageIdJWTContent.EditVerlaufseinträge für eine Seite auflisten
GET/block/:blockIdJWTContent.EditVerlaufseinträge für einen Block auflisten
GET/:idJWTContent.EditEinen Verlaufseintrag anhand der ID abrufen
POST/JWTContent.EditEinen Seiten-/Block-Snapshot speichern. Bereinigt periodisch Einträge, die älter als 30 Tage sind
POST/restore/:idJWTContent.EditEine Seite/einen Block aus einem Verlaufs-Snapshot wiederherstellen (löscht den aktuellen Inhalt und erstellt ihn aus dem Snapshot neu)
POST/restoreSnapshotJWTContent.EditAus einem eingebetteten Snapshot-Objekt wiederherstellen. Body: { pageId, blockId, snapshot }

Beiträge (Blog)

Basispfad: /content/posts

Blogbeiträge sind eigenständige Datensätze: title, slug (eindeutig je Kirche), excerpt, content (Markdown-Text), authorId, photoUrl, publishDate, category und tags. Ein Beitrag ist veröffentlicht, sobald publishDate gesetzt ist und in der Vergangenheit liegt. Lese-Endpunkte reichern jeden Beitrag mit dem aus authorId aufgelösten authorName an. Siehe Website-Builder-Architektur.

MethodePfadAuthBerechtigungBeschreibung
GET/public/:churchId?category=&tag=&page=&pageSize=ÖffentlichVeröffentlichte Beiträge auflisten, paginiert (max. 50 pro Seite)
GET/public/:churchId/categoriesÖffentlichEindeutige Kategorien aller veröffentlichten Beiträge
GET/public/:churchId/slug/:slugÖffentlichEinen veröffentlichten Beitrag anhand des Slugs abrufen
GET/rss/:churchId?siteUrl=ÖffentlichRSS-2.0-Feed veröffentlichter Beiträge (Links werden als {siteUrl}/blog/{slug} gebildet)
GET/:idJWTEinen Beitrag anhand der ID abrufen
GET/JWTAlle Beiträge der Kirche auflisten
POST/JWTContent.EditBeiträge erstellen oder aktualisieren (Batch)
DELETE/:idJWTContent.EditEinen Beitrag löschen

Weiterleitungen (Redirects)

Basispfad: /content/redirects

Kirchenspezifische URL-Weiterleitungen (fromPathtoPath), begrenzt auf 200 pro Kirche. Pfade werden normalisiert (Kleinschreibung, führender Schrägstrich, kein abschließender Schrägstrich), und fromPath ist je Kirche eindeutig. B1App löst diese bei drohenden 404-Fehlern auf und gibt einen HTTP-308-Status aus.

MethodePfadAuthBerechtigungBeschreibung
GET/public/:churchId?path=ÖffentlichEinen Pfad auflösen (oder alle Weiterleitungen auflisten, wenn path weggelassen wird)
GET/:idJWTEine Weiterleitung anhand der ID abrufen
GET/JWTAlle Weiterleitungen der Kirche auflisten
POST/JWTContent.EditWeiterleitungen erstellen oder aktualisieren. Lehnt fromPath = toPath ab und erzwingt die 200-Zeilen-Obergrenze
DELETE/:idJWTContent.EditEine Weiterleitung löschen

Predigten (Sermons)

Basispfad: /content/sermons

MethodePfadAuthBerechtigungBeschreibung
GET/public/freeshowSampleJWTEine Beispiel-FreeShow-Playlist-Struktur abrufen
GET/public/tvWrapper/:churchIdJWTTV-App-Wrapper mit Predigt-, Lektions- und FreeShow-Quellen abrufen
GET/public/tvFeed/:churchId/:sermonIdÖffentlichEine einzelne Predigt als TV-Feed-Playlist abrufen
GET/public/tvFeed/:churchIdÖffentlichAlle öffentlichen Playlists/Predigten als TV-Feed abrufen
GET/public/:churchIdÖffentlichAlle öffentlichen Predigten einer Kirche auflisten
GET/timeline?sermonIds=JWTZeitleistendaten für Predigten laden
GET/lookup?videoType=&videoData=ÖffentlichPredigt-Metadaten von YouTube oder Vimeo nachschlagen
GET/socialSuggestions?youtubeVideoId=JWTKI-Vorschläge für Social-Media-Beiträge anhand der Predigt-Untertitel erzeugen
GET/outline?url=&title=&author=JWTKI-generierte Lektionsgliederung aus einer URL erzeugen
GET/youtubeImport/:channelIdJWTVideos von einem YouTube-Kanal importieren
GET/vimeoImport/:channelIdJWTVideos von einem Vimeo-Kanal importieren
GET/:idJWTEine Predigt anhand der ID abrufen
GET/JWTAlle Predigten auflisten
POST/JWTStreamingServices.EditPredigten erstellen oder aktualisieren (Batch, unterstützt Base64-Thumbnail-Upload)
DELETE/:idJWTStreamingServices.EditEine Predigt löschen

Beispiel: Eine YouTube-Predigt nachschlagen

GET /content/sermons/lookup?videoType=youtube&videoData=dQw4w9WgXcQ
{
"title": "Sunday Service - Faith in Action",
"description": "Pastor John speaks about faith...",
"thumbnail": "https://img.youtube.com/vi/dQw4w9WgXcQ/default.jpg",
"duration": 2400,
"publishDate": "2025-01-15T10:00:00Z"
}

Playlists

Basispfad: /content/playlists

Erweitert Standard-CRUD (GET /:id, GET /, DELETE /:id aus der Basisklasse, mit StreamingServices.Edit-Berechtigung für Schreibzugriffe).

MethodePfadAuthBerechtigungBeschreibung
GET/:idJWTEine Playlist anhand der ID abrufen
GET/JWTAlle Playlists auflisten
GET/public/:churchIdÖffentlichAlle öffentlichen Playlists einer Kirche auflisten
POST/JWTStreamingServices.EditPlaylists erstellen oder aktualisieren (Batch, unterstützt Base64-Thumbnail-Upload)
DELETE/:idJWTStreamingServices.EditEine Playlist löschen

Streaming-Dienste (Streaming Services)

Basispfad: /content/streamingServices

MethodePfadAuthBerechtigungBeschreibung
GET/:id/hostChatJWTChat.HostVerschlüsselte Host-Chatraum-ID für einen Dienst abrufen
GET/JWTAlle Streaming-Dienste auflisten. Bereinigt automatisch abgelaufene, nicht wiederkehrende Dienste und führt wiederkehrende Dienste weiter
POST/JWTStreamingServices.EditStreaming-Dienste erstellen oder aktualisieren (Batch)
DELETE/:idJWTStreamingServices.EditEinen Streaming-Dienst löschen (löscht auch blockierte IPs)

Termine (Events)

Basispfad: /content/events

MethodePfadAuthBerechtigungBeschreibung
GET/timeline/group/:groupId?eventIds=JWTZeitleisten-Termine für eine Gruppe laden
GET/timeline?eventIds=JWTZeitleisten-Termine für die Gruppen des aktuellen Benutzers laden
GET/subscribe?churchId=&groupId=&curatedCalendarId=ÖffentlichTermine als ICS-Kalender-Feed abonnieren
GET/group/:groupIdJWTTermine für eine Gruppe abrufen (inklusive Ausnahmedaten)
GET/public/group/:churchId/:groupIdÖffentlichÖffentliche Termine für eine Gruppe abrufen
GET/:idJWTEinen Termin anhand der ID abrufen
POST/JWTTermine erstellen oder aktualisieren (Batch)
DELETE/:idJWTContent.EditEinen Termin löschen

Termin-Ausnahmen (Event Exceptions)

Basispfad: /content/eventExceptions

MethodePfadAuthBerechtigungBeschreibung
GET/:idJWTEine Terminausnahme anhand der ID abrufen
POST/JWTContent.EditTerminausnahmen erstellen oder aktualisieren (Batch)
DELETE/:idJWTContent.EditEine Terminausnahme löschen

Kuratierte Kalender (Curated Calendars)

Basispfad: /content/curatedCalendars

MethodePfadAuthBerechtigungBeschreibung
GET/:idJWTEinen kuratierten Kalender anhand der ID abrufen
GET/JWTAlle kuratierten Kalender auflisten
POST/JWTContent.EditKuratierte Kalender erstellen oder aktualisieren (Batch)
DELETE/:idJWTContent.EditEinen kuratierten Kalender löschen

Kuratierte Termine (Curated Events)

Basispfad: /content/curatedEvents

MethodePfadAuthBerechtigungBeschreibung
GET/calendar/:curatedCalendarId?withoutEventsJWTKuratierte Termine für einen Kalender abrufen (inklusive Termindetails und Ausnahmedaten, sofern ?withoutEvents nicht gesetzt ist)
GET/public/calendar/:churchId/:curatedCalendarIdÖffentlichÖffentliche kuratierte Termine für einen Kalender abrufen
GET/:idJWTEinen kuratierten Termin anhand der ID abrufen
GET/JWTAlle kuratierten Termine auflisten
POST/JWTContent.EditKuratierte Termine erstellen oder aktualisieren. Unterstützt ein eventIds-Array, um bestimmte Gruppentermine hinzuzufügen
DELETE/:idJWTContent.EditEinen kuratierten Termin löschen
DELETE/calendar/:curatedCalendarId/event/:eventIdJWTContent.EditEinen bestimmten Termin aus einem kuratierten Kalender entfernen
DELETE/calendar/:curatedCalendarId/group/:groupIdJWTContent.EditAlle Termine einer Gruppe aus einem kuratierten Kalender entfernen

Dateien (Files)

Basispfad: /content/files

MethodePfadAuthBerechtigungBeschreibung
GET/:contentType/:contentIdJWTDateien nach Content-Typ und Content-ID abrufen
GET/JWTAlle Dateien für die Kirchen-Website auflisten
GET/:idJWTEine Datei anhand der ID abrufen
POST/JWTContent.Edit*Dateien hochladen (Base64). *Auch erlaubt, wenn der Benutzer Mitglied der Gruppe ist, die contentId entspricht
POST/postUrlJWTContent.Edit*Eine vorsignierte S3-Upload-URL abrufen. *Auch für Gruppenmitglieder erlaubt. Max. 100 MB pro Content-Element
DELETE/:idJWTContent.Edit*Eine Datei löschen und aus dem Speicher entfernen. *Auch für Gruppenmitglieder erlaubt

Basispfad: /content/gallery

MethodePfadAuthBerechtigungBeschreibung
GET/stock/:folderÖffentlichStockfotos in einem Ordner auflisten
GET/:folderJWTContent.EditGaleriebilder in einem Ordner auflisten
POST/requestUploadJWTContent.EditEine vorsignierte S3-Upload-URL für ein Galeriebild abrufen
DELETE/:folder/:imageJWTContent.EditEin Galeriebild löschen

Bibeln (Bibles)

Basispfad: /content/bibles

Alle Bibel-Endpunkte sind öffentlich (keine Authentifizierung erforderlich). Die Daten werden aus externen Quellen bezogen und lokal zwischengespeichert.

MethodePfadAuthBerechtigungBeschreibung
GET/ÖffentlichAlle Bibelübersetzungen auflisten (ruft von der Quelle ab, falls der Cache leer ist)
GET/stats?startDate=&endDate=ÖffentlichBibel-Nachschlagestatistiken für einen Datumsbereich abrufen
GET/availableTranslations/:sourceÖffentlichVerfügbare Übersetzungen einer Quelle auflisten (z. B. api.bible)
GET/updateTranslationsÖffentlichAlle Übersetzungen aus allen Quellen synchronisieren
GET/updateTranslations/:sourceÖffentlichÜbersetzungen aus einer bestimmten Quelle synchronisieren
GET/updateCopyrightsÖffentlichCopyright-Informationen für Übersetzungen aktualisieren, denen diese fehlen
GET/:translationKey/updateCopyrightÖffentlichCopyright für eine bestimmte Übersetzung aktualisieren
GET/:translationKey/search?query=&limit=ÖffentlichVerse in einer Übersetzung durchsuchen
GET/:translationKey/booksÖffentlichBücher einer Übersetzung abrufen (wird lokal zwischengespeichert)
GET/:translationKey/:bookKey/chaptersÖffentlichKapitel eines Buches abrufen (wird lokal zwischengespeichert)
GET/:translationKey/chapters/:chapterKey/versesÖffentlichVerse eines Kapitels abrufen (wird lokal zwischengespeichert)
GET/:translationKey/verses/:startVerseKey-:endVerseKeyÖffentlichVerstext für einen Bereich abrufen. Protokolliert Nachschlagevorgänge. Manche Übersetzungen umgehen aus Lizenzgründen das Caching

Beispiel: Verstext abrufen

GET /content/bibles/de4e12af7f28f599-02/verses/GEN.1.1-GEN.1.3
[
{ "verseKey": "GEN.1.1", "content": "In the beginning God created the heavens and the earth.", "bookKey": "GEN", "chapterNumber": 1, "verseNumber": 1 },
{ "verseKey": "GEN.1.2", "content": "Now the earth was formless and empty...", "bookKey": "GEN", "chapterNumber": 1, "verseNumber": 2 },
{ "verseKey": "GEN.1.3", "content": "And God said, \"Let there be light,\" and there was light.", "bookKey": "GEN", "chapterNumber": 1, "verseNumber": 3 }
]

Songs

Basispfad: /content/songs

MethodePfadAuthBerechtigungBeschreibung
GET/search?q=JWTSongs anhand einer Suchanfrage durchsuchen
GET/:idJWTEinen Song anhand der ID abrufen
GET/JWTContent.EditAlle Songs auflisten
POST/JWTContent.EditSongs erstellen oder aktualisieren (Batch)
POST/importJWTSongs aus FreeShow importieren (Batch)
DELETE/:idJWTContent.EditEinen Song löschen

Song-Details (Song Details)

Basispfad: /content/songDetails

Song-Details sind global (nicht kirchenspezifisch). Sie repräsentieren kanonische Song-Metadaten, die kirchenübergreifend gemeinsam genutzt werden.

MethodePfadAuthBerechtigungBeschreibung
GET/:idJWTEin Song-Detail anhand der ID abrufen (global)
GET/JWTSong-Details für die Kirche auflisten
POST/createJWTEin Song-Detail aus einer PraiseCharts-ID erstellen (liefert das vorhandene, falls bereits erstellt). Ruft Metadaten automatisch von PraiseCharts und MusicBrainz ab
POST/JWTSong-Details erstellen oder aktualisieren (Batch)

Basispfad: /content/songDetailLinks

MethodePfadAuthBerechtigungBeschreibung
GET/:idJWTEinen Song-Detail-Link anhand der ID abrufen
GET/songDetail/:songDetailIdJWTAlle Links für ein Song-Detail abrufen
POST/JWTSong-Detail-Links erstellen oder aktualisieren (Batch). Ruft bei Verknüpfung automatisch MusicBrainz-Daten ab
DELETE/:idJWTEinen Song-Detail-Link löschen

Arrangements

Basispfad: /content/arrangements

MethodePfadAuthBerechtigungBeschreibung
GET/:idJWTEin Arrangement anhand der ID abrufen
GET/song/:songIdJWTContent.EditArrangements für einen Song abrufen
GET/songDetail/:songDetailIdJWTContent.EditArrangements für ein Song-Detail abrufen
GET/JWTContent.EditAlle Arrangements auflisten
POST/JWTContent.EditArrangements erstellen oder aktualisieren (Batch)
POST/freeShow/missingJWTFreeShow-IDs finden, die in der Kirche nicht existieren. Body: { freeShowIds: string[] }
DELETE/:idJWTContent.EditEin Arrangement löschen (löscht auch Tonarten; löscht den Song, falls keine Arrangements mehr verbleiben)

Arrangement-Tonarten (Arrangement Keys)

Basispfad: /content/arrangementKeys

MethodePfadAuthBerechtigungBeschreibung
GET/presenter/:churchId/:idÖffentlichArrangement-Tonart mit vollständigen Songdaten für die Präsentationsansicht abrufen
GET/:idJWTEine Arrangement-Tonart anhand der ID abrufen
GET/arrangement/:arrangementIdJWTContent.EditTonarten für ein Arrangement abrufen
GET/JWTContent.EditAlle Arrangement-Tonarten auflisten
POST/JWTContent.EditArrangement-Tonarten erstellen oder aktualisieren (Batch)
DELETE/:idJWTContent.EditEine Arrangement-Tonart löschen

Einstellungen (Settings)

Basispfad: /content/settings

MethodePfadAuthBerechtigungBeschreibung
GET/myJWTEinstellungen des aktuellen Benutzers abrufen
GET/JWTSettings.EditAlle Einstellungen der Kirche abrufen
GET/public/:churchIdÖffentlichÖffentliche Einstellungen einer Kirche abrufen (als Schlüssel-Wert-Paare geliefert)
POST/myJWTEinstellungen auf Benutzerebene speichern (unterstützt Base64-Bild-Upload)
POST/JWTSettings.EditEinstellungen auf Kirchenebene speichern (unterstützt Base64-Bild-Upload)
DELETE/my/:idJWTEine Benutzereinstellung löschen

Vorschau (Preview)

Basispfad: /content/preview

MethodePfadAuthBerechtigungBeschreibung
GET/data/:keyÖffentlichStreaming-Vorschaudaten einer Kirche anhand des Subdomain-Schlüssels laden (Tabs, Links, Dienste, Predigten)

Galerie (Stockfotos)

Basispfad: /content/stock

MethodePfadAuthBerechtigungBeschreibung
POST/searchÖffentlichPexels-Stockfotos durchsuchen. Body: { term: "church" }

PraiseCharts

Basispfad: /content/praiseCharts

Integration mit PraiseCharts zur Entdeckung von Gottesdienstliedern und für Notenblatt-Downloads.

MethodePfadAuthBerechtigungBeschreibung
GET/raw/:idJWTRohdaten von PraiseCharts für einen Song abrufen
GET/hasAccountJWTPrüfen, ob der Benutzer ein verknüpftes PraiseCharts-Konto hat
GET/search?q=JWTDen PraiseCharts-Katalog durchsuchen
GET/products/:id?keys=JWTProdukte für einen Song abrufen (aus der Bibliothek, falls authentifiziert, andernfalls aus dem Katalog)
GET/arrangement/raw/:id?keys=JWTRohe Arrangement-Daten aus der Bibliothek abrufen
GET/download?skus=&keys=&file_name=JWTEine Datei von PraiseCharts herunterladen (PDF oder ZIP). Liefert { redirectUrl }
GET/authUrl?returnUrl=ÖffentlichOAuth-Autorisierungs-URL für PraiseCharts abrufen
GET/access?verifier=&token=&secret=JWTOAuth-Verifier gegen ein Zugriffstoken eintauschen und in den Benutzereinstellungen speichern
GET/libraryJWTDie PraiseCharts-Bibliothek des Benutzers durchsuchen

Support

Basispfad: /content/support

MethodePfadAuthBerechtigungBeschreibung
POST/createAudioÖffentlichSSML mittels AWS Polly in MP3-Audio umwandeln. Body: { ssml: "<speak>...</speak>" }

Verwandte Seiten