Перейти к основному содержимому

Конечные точки контента

Модуль контента управляет страницами веб-сайта, разделами, элементами, блоками, сообщениями блога, перенаправлениями, проповедями, плейлистами, потоковыми сервисами, событиями, курируемыми календарями, файлами, галереями, переводами Библии и поиском стихов, песнями, аранжировками, глобальными стилями, стоковыми фотографиями и параметрами. Это самый большой модуль в API и питает CMS, медиа/потоковую трансляцию, планирование поклонения и функции Библии во всех приложениях ChurchApps.

Базовый путь: /content

Страницы

Базовый путь: /content/pages

МетодПутьАут.РазрешениеОписание
GET/:churchId/tree?url=&id=PublicЗагрузить полное дерево страницы (разделы, элементы, блоки) по URL или ID. Убирает внутренние ID при выборке по URL. Выборки на основе URL применяют pages.visibility — закрытая страница возвращает { restricted: true, visibility }, если только JWT не удовлетворяет условию
GET/public/:churchIdPublicСписок открытых страниц (url, title, metaDescription); только visibility = everyone
GET/:idJWTПолучить страницу по ID
GET/JWTСписок всех страниц для церкви
POST/duplicate/:idJWTContent.EditДублировать страницу со всеми разделами и элементами
POST/temp/aiJWTContent.EditСохранить генерируемую AI страницу (страница, разделы и элементы в одном вызове)
POST/JWTContent.EditСоздать или обновить страницы (пакет)
DELETE/:idJWTContent.EditУдалить страницу

Пример: загрузить дерево страниц

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

Разделы

Базовый путь: /content/sections

МетодПутьАут.РазрешениеОписание
GET/:idJWTПолучить раздел по ID
POST/duplicate/:id?convertToBlock=JWTContent.EditДублировать раздел или преобразовать его в многоразовый блок
POST/JWTContent.EditСоздать или обновить разделы (пакет). Автоматически обновляет порядок сортировки
DELETE/:idJWTContent.EditУдалить раздел (автоматически обновляет порядок сортировки)

Элементы

Базовый путь: /content/elements

МетодПутьАут.РазрешениеОписание
GET/:idJWTПолучить элемент по ID
POST/duplicate/:idJWTContent.EditДублировать элемент со всеми потомками
POST/JWTContent.EditСоздать или обновить элементы (пакет). Автоматически управляет столбцами строк и слайдами карусели
DELETE/:idJWTContent.EditУдалить элемент

Блоки

Базовый путь: /content/blocks

Расширяет стандартный CRUD (GET /:id, GET /, POST /, DELETE /:id из базового класса с разрешением Content.Edit для записей).

МетодПутьАут.РазрешениеОписание
GET/:idJWTПолучить блок по ID
GET/JWTСписок всех блоков
GET/:churchId/tree/:idPublicЗагрузить полное дерево блока с разделами и элементами
GET/blockType/:blockTypeJWTЗагрузить блоки по типу (например, footerBlock, elementBlock)
GET/public/footer/:churchIdPublicЗагрузить дерево блока подвала для церкви
POST/JWTContent.EditСоздать или обновить блоки
DELETE/:idJWTContent.EditУдалить блок

Ссылки

Базовый путь: /content/links

Расширяет стандартный CRUD (GET /:id, GET /, POST /, DELETE /:id из базового класса с разрешением Content.Edit для записей).

МетодПутьАут.РазрешениеОписание
GET/:idJWTПолучить ссылку по ID
GET/JWTСписок всех ссылок. Опциональный фильтр ?category=. Автоматически сортирует после сохранения
GET/church/:churchId/filtered?category=JWTЗагрузить ссылки, отфильтрованные по видимости (все, посетители, члены, персонал, группы)
GET/church/:churchId?category=PublicЗагрузить ссылки для церкви по категории (открытый доступ)
POST/JWTContent.EditСоздать или обновить ссылки (пакет). Автоматически сортирует по категориям
DELETE/:idJWTContent.EditУдалить ссылку

Глобальные стили

Базовый путь: /content/globalStyles

Расширяет стандартный CRUD (POST /, DELETE /:id из базового класса с разрешением Content.Edit для записей).

МетодПутьАут.РазрешениеОписание
GET/church/:churchIdPublicЗагрузить глобальные стили для церкви (возвращает значения по умолчанию, если не установлены)
GET/JWTЗагрузить глобальные стили для аутентифицированной церкви
POST/JWTContent.EditСоздать или обновить глобальные стили
DELETE/:idJWTContent.EditУдалить глобальные стили

История страниц

Базовый путь: /content/pageHistory

МетодПутьАут.РазрешениеОписание
GET/page/:pageIdJWTContent.EditСписок записей истории для страницы
GET/block/:blockIdJWTContent.EditСписок записей истории для блока
GET/:idJWTContent.EditПолучить запись истории по ID
POST/JWTContent.EditСохранить снимок страницы/блока. Периодически очищает записи старше 30 дней
POST/restore/:idJWTContent.EditВосстановить страницу/блок из снимка истории (удаляет текущее содержимое и пересоздаёт из снимка)
POST/restoreSnapshotJWTContent.EditВосстановить из встроенного объекта снимка. Тело: { pageId, blockId, snapshot }

Сообщения (блог)

Базовый путь: /content/posts

Сообщения блога — самостоятельные строки: title, slug (уникален в пределах церкви), excerpt, content (тело в формате markdown), authorId, photoUrl, publishDate, category и tags. Сообщение считается опубликованным, когда publishDate установлена и находится в прошлом. Конечные точки чтения дополняют каждое сообщение полем authorName, определённым по authorId. См. Архитектура конструктора веб-сайта.

МетодПутьАут.РазрешениеОписание
GET/public/:churchId?category=&tag=&page=&pageSize=PublicСписок опубликованных сообщений, разбит на страницы (макс. 50 на странице)
GET/public/:churchId/categoriesPublicУникальные категории среди опубликованных сообщений
GET/public/:churchId/slug/:slugPublicПолучить опубликованное сообщение по slug
GET/rss/:churchId?siteUrl=PublicRSS 2.0 лента опубликованных сообщений (ссылки построены как {siteUrl}/blog/{slug})
GET/:idJWTПолучить сообщение по ID
GET/JWTСписок всех сообщений для церкви
POST/JWTContent.EditСоздать или обновить сообщения (пакет)
DELETE/:idJWTContent.EditУдалить сообщение

Перенаправления

Базовый путь: /content/redirects

Перенаправления URL на церковь (fromPathtoPath), ограничено 200 на церковь. Пути нормализованы (малые буквы, ведущий слэш, без завершающего слэша) и fromPath уникален на церковь. B1App разрешает их на было бы 404 и выдаёт HTTP 308.

МетодПутьАут.РазрешениеОписание
GET/public/:churchId?path=PublicРазрешить путь (или список всех перенаправлений, когда path опущен)
GET/:idJWTПолучить перенаправление по ID
GET/JWTСписок всех перенаправлений для церкви
POST/JWTContent.EditСоздать или обновить перенаправления. Отклоняет fromPath = toPath и применяет ограничение в 200 строк
DELETE/:idJWTContent.EditУдалить перенаправление

Проповеди

Базовый путь: /content/sermons

МетодПутьАут.РазрешениеОписание
GET/public/freeshowSampleJWTПолучить структуру примера плейлиста FreeShow
GET/public/tvWrapper/:churchIdJWTПолучить обёртку приложения TV с источниками проповедей, уроков и FreeShow
GET/public/tvFeed/:churchId/:sermonIdPublicПолучить одну проповедь как плейлист ТВ-ленты
GET/public/tvFeed/:churchIdPublicПолучить все открытые плейлисты/проповеди как ТВ-ленту
GET/public/:churchIdPublicСписок всех открытых проповедей для церкви
GET/timeline?sermonIds=JWTЗагрузить данные временной шкалы для проповедей
GET/lookup?videoType=&videoData=PublicПоиск метаданных проповеди с YouTube или Vimeo
GET/socialSuggestions?youtubeVideoId=JWTГенерировать предложения для постов в социальных сетях AI из субтитров проповеди
GET/outline?url=&title=&author=JWTГенерировать очертание урока AI из URL
GET/youtubeImport/:channelIdJWTИмпортировать видео из канала YouTube
GET/vimeoImport/:channelIdJWTИмпортировать видео из канала Vimeo
GET/:idJWTПолучить проповедь по ID
GET/JWTСписок всех проповедей
POST/JWTStreamingServices.EditСоздать или обновить проповеди (пакет, поддерживает загрузку миниатюры base64)
DELETE/:idJWTStreamingServices.EditУдалить проповедь

Пример: поиск проповеди с YouTube

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"
}

Плейлисты

Базовый путь: /content/playlists

Расширяет стандартный CRUD (GET /:id, GET /, DELETE /:id из базового класса с разрешением StreamingServices.Edit для записей).

МетодПутьАут.РазрешениеОписание
GET/:idJWTПолучить плейлист по ID
GET/JWTСписок всех плейлистов
GET/public/:churchIdPublicСписок всех открытых плейлистов для церкви
POST/JWTStreamingServices.EditСоздать или обновить плейлисты (пакет, поддерживает загрузку миниатюры base64)
DELETE/:idJWTStreamingServices.EditУдалить плейлист

Потоковые сервисы

Базовый путь: /content/streamingServices

МетодПутьАут.РазрешениеОписание
GET/:id/hostChatJWTChat.HostПолучить зашифрованный ID комнаты чата хоста для служения
GET/JWTСписок всех потоковых сервисов. Автоматически очищает истёкшие не повторяющиеся сервисы и продвигает повторяющиеся
POST/JWTStreamingServices.EditСоздать или обновить потоковые сервисы (пакет)
DELETE/:idJWTStreamingServices.EditУдалить потоковый сервис (также очищает заблокированные IP)

События

Базовый путь: /content/events

МетодПутьАут.РазрешениеОписание
GET/timeline/group/:groupId?eventIds=JWTЗагрузить события временной шкалы для группы
GET/timeline?eventIds=JWTЗагрузить события временной шкалы для групп текущего пользователя
GET/subscribe?churchId=&groupId=&curatedCalendarId=PublicПодписаться на события как ICS ленту календаря
GET/group/:groupIdJWTПолучить события для группы (включает даты исключений)
GET/public/group/:churchId/:groupIdPublicПолучить открытые события для группы
GET/:idJWTПолучить событие по ID
POST/JWTСоздать или обновить события (пакет)
DELETE/:idJWTContent.EditУдалить событие

Исключения событий

Базовый путь: /content/eventExceptions

МетодПутьАут.РазрешениеОписание
GET/:idJWTПолучить исключение события по ID
POST/JWTContent.EditСоздать или обновить исключения событий (пакет)
DELETE/:idJWTContent.EditУдалить исключение события

Курируемые календари

Базовый путь: /content/curatedCalendars

МетодПутьАут.РазрешениеОписание
GET/:idJWTПолучить курируемый календарь по ID
GET/JWTСписок всех курируемых календарей
POST/JWTContent.EditСоздать или обновить курируемые календари (пакет)
DELETE/:idJWTContent.EditУдалить курируемый календарь

Курируемые события

Базовый путь: /content/curatedEvents

МетодПутьАут.РазрешениеОписание
GET/calendar/:curatedCalendarId?withoutEventsJWTПолучить курируемые события для календаря (включает детали событий и даты исключений, если только ?withoutEvents не установлен)
GET/public/calendar/:churchId/:curatedCalendarIdPublicПолучить открытые курируемые события для календаря
GET/:idJWTПолучить курируемое событие по ID
GET/JWTСписок всех курируемых событий
POST/JWTContent.EditСоздать или обновить курируемые события. Поддерживает массив eventIds для добавления конкретных событий группы
DELETE/:idJWTContent.EditУдалить курируемое событие
DELETE/calendar/:curatedCalendarId/event/:eventIdJWTContent.EditУдалить конкретное событие из курируемого календаря
DELETE/calendar/:curatedCalendarId/group/:groupIdJWTContent.EditУдалить все события для группы из курируемого календаря

Файлы

Базовый путь: /content/files

МетодПутьАут.РазрешениеОписание
GET/:contentType/:contentIdJWTПолучить файлы по типу контента и ID контента
GET/JWTСписок всех файлов для веб-сайта церкви
GET/:idJWTПолучить файл по ID
POST/JWTContent.Edit*Загрузить файлы (base64). *Также допускается, если пользователь является членом группы, соответствующей contentId
POST/postUrlJWTContent.Edit*Получить предподписанный URL загрузки S3. *Также допускается для членов группы. Макс. 100MB на элемент контента
DELETE/:idJWTContent.Edit*Удалить файл и удалить из хранилища. *Также допускается для членов группы

Галерея

Базовый путь: /content/gallery

МетодПутьАут.РазрешениеОписание
GET/stock/:folderPublicСписок стоковых фотографий в папке
GET/:folderJWTContent.EditСписок изображений галереи в папке
POST/requestUploadJWTContent.EditПолучить предподписанный URL загрузки S3 для изображения галереи
DELETE/:folder/:imageJWTContent.EditУдалить изображение галереи

Библии

Базовый путь: /content/bibles

Все конечные точки Библии открыты (не требует аутентификации). Данные выбираются из внешних источников и кэшируются локально.

МетодПутьАут.РазрешениеОписание
GET/PublicСписок всех переводов Библии (выбирает из источника, если кэш пуст)
GET/stats?startDate=&endDate=PublicПолучить статистику поиска Библии за диапазон дат
GET/availableTranslations/:sourcePublicСписок доступных переводов из источника (например, api.bible)
GET/updateTranslationsPublicСинхронизировать все переводы со всех источников
GET/updateTranslations/:sourcePublicСинхронизировать переводы из конкретного источника
GET/updateCopyrightsPublicОбновить информацию об авторском праве для переводов без неё
GET/:translationKey/updateCopyrightPublicОбновить авторское право для конкретного перевода
GET/:translationKey/search?query=&limit=PublicПоиск стихов в переводе
GET/:translationKey/booksPublicПолучить книги для перевода (кэшируется локально)
GET/:translationKey/:bookKey/chaptersPublicПолучить главы для книги (кэшируется локально)
GET/:translationKey/chapters/:chapterKey/versesPublicПолучить стихи для главы (кэшируется локально)
GET/:translationKey/verses/:startVerseKey-:endVerseKeyPublicПолучить текст стиха для диапазона. Записывает поиски. Некоторые переводы обходят кэширование из-за лицензирования

Пример: получить текст стиха

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 }
]

Песни

Базовый путь: /content/songs

МетодПутьАут.РазрешениеОписание
GET/search?q=JWTПоиск песен по запросу
GET/:idJWTПолучить песню по ID
GET/JWTContent.EditСписок всех песен
POST/JWTContent.EditСоздать или обновить песни (пакет)
POST/importJWTИмпортировать песни с FreeShow (пакет)
DELETE/:idJWTContent.EditУдалить песню

Детали песни

Базовый путь: /content/songDetails

Детали песни являются глобальными (не ограничены церковью). Они представляют канонические метаданные песни, общие для церквей.

МетодПутьАут.РазрешениеОписание
GET/:idJWTПолучить детали песни по ID (глобальные)
GET/JWTСписок деталей песен для церкви
POST/createJWTСоздать детали песни с ID PraiseCharts (возвращает существующие, если уже созданы). Автоматически выбирает метаданные с PraiseCharts и MusicBrainz
POST/JWTСоздать или обновить детали песни (пакет)

Ссылки на детали песни

Базовый путь: /content/songDetailLinks

МетодПутьАут.РазрешениеОписание
GET/:idJWTПолучить ссылку на детали песни по ID
GET/songDetail/:songDetailIdJWTПолучить все ссылки для деталей песни
POST/JWTСоздать или обновить ссылки на детали песни (пакет). Автоматически выбирает данные MusicBrainz, если связана
DELETE/:idJWTУдалить ссылку на детали песни

Аранжировки

Базовый путь: /content/arrangements

МетодПутьАут.РазрешениеОписание
GET/:idJWTПолучить аранжировку по ID
GET/song/:songIdJWTContent.EditПолучить аранжировки для песни
GET/songDetail/:songDetailIdJWTContent.EditПолучить аранжировки для деталей песни
GET/JWTContent.EditСписок всех аранжировок
POST/JWTContent.EditСоздать или обновить аранжировки (пакет)
POST/freeShow/missingJWTНайти ID FreeShow, которых нет в церкви. Тело: { freeShowIds: string[] }
DELETE/:idJWTContent.EditУдалить аранжировку (также удаляет ключи; удаляет песню, если не остаются аранжировки)

Ключи аранжировки

Базовый путь: /content/arrangementKeys

МетодПутьАут.РазрешениеОписание
GET/presenter/:churchId/:idPublicПолучить ключ аранжировки с полными данными песни для представления презентатора
GET/:idJWTПолучить ключ аранжировки по ID
GET/arrangement/:arrangementIdJWTContent.EditПолучить ключи для аранжировки
GET/JWTContent.EditСписок всех ключей аранжировки
POST/JWTContent.EditСоздать или обновить ключи аранжировки (пакет)
DELETE/:idJWTContent.EditУдалить ключ аранжировки

Параметры

Базовый путь: /content/settings

МетодПутьАут.РазрешениеОписание
GET/myJWTПолучить параметры текущего пользователя
GET/JWTSettings.EditПолучить все параметры для церкви
GET/public/:churchIdPublicПолучить открытые параметры для церкви (возвращены как пары ключ-значение)
POST/myJWTСохранить параметры на уровне пользователя (поддерживает загрузку изображения base64)
POST/JWTSettings.EditСохранить параметры на уровне церкви (поддерживает загрузку изображения base64)
DELETE/my/:idJWTУдалить параметр пользователя

Предпросмотр

Базовый путь: /content/preview

МетодПутьАут.РазрешениеОписание
GET/data/:keyPublicЗагрузить данные предпросмотра потока для церкви по ключу поддомена (вкладки, ссылки, служения, проповеди)

Галерея (стоковые фотографии)

Базовый путь: /content/stock

МетодПутьАут.РазрешениеОписание
POST/searchPublicПоиск стоковых фотографий Pexels. Тело: { term: "church" }

PraiseCharts

Базовый путь: /content/praiseCharts

Интеграция с PraiseCharts для обнаружения песен поклонения и загрузки нотной записи.

МетодПутьАут.РазрешениеОписание
GET/raw/:idJWTПолучить необработанные данные PraiseCharts для песни
GET/hasAccountJWTПроверить, есть ли у пользователя связанный аккаунт PraiseCharts
GET/search?q=JWTПоиск в каталоге PraiseCharts
GET/products/:id?keys=JWTПолучить продукты для песни (из библиотеки, если аутентифицирован, иначе каталог)
GET/arrangement/raw/:id?keys=JWTПолучить необработанные данные аранжировки из библиотеки
GET/download?skus=&keys=&file_name=JWTЗагрузить файл с PraiseCharts (PDF или ZIP). Возвращает { redirectUrl }
GET/authUrl?returnUrl=PublicПолучить URL авторизации OAuth для PraiseCharts
GET/access?verifier=&token=&secret=JWTОбменять верификатор OAuth на маркер доступа и сохранить в параметры пользователя
GET/libraryJWTОбзор библиотеки PraiseCharts пользователя

Поддержка

Базовый путь: /content/support

МетодПутьАут.РазрешениеОписание
POST/createAudioPublicПреобразовать SSML в аудио MP3 с использованием AWS Polly. Тело: { ssml: "<speak>...</speak>" }

Связанные страницы