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

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

Модуль контента управляет страницами веб-сайта, разделами, элементами, блоками, сообщениями блога, перенаправлениями, проповедями, плейлистами, потоковыми сервисами, событиями, курируемыми календарями, файлами, галереями, переводами Библии и поиском стихов, песнями, аранжировками, глобальными стилями, стоковыми фотографиями и параметрами. Это самый большой модуль в 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=Public—RSS 2.0 лента опубликованных сообщений (ссылки построены как {siteUrl}/blog/{slug})
GET/:idJWT—Получить сообщение по ID
GET/JWT—Список всех сообщений для церкви
POST/JWTContent.EditСоздать или обновить сообщения (пакет)
DELETE/:idJWTContent.EditУдалить сообщение

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

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

Перенаправления URL на церковь (fromPath → toPath), ограничено 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>" }

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