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

Эндпоинты Content

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

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

Страницы

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

МетодПутьАутентификацияРазрешениеОписание
GET/:churchId/tree?url=&id=PublicЗагрузить полное дерево страницы (разделы, элементы, блоки) по URL или ID. Скрывает внутренние ID при получении по URL
GET/:idJWTПолучить страницу по ID
GET/JWTСписок всех страниц церкви
POST/duplicate/:idJWTContent.EditДублировать страницу со всеми разделами и элементами
POST/temp/aiJWTContent.EditСохранить сгенерированную ИИ страницу (страница, разделы и элементы за один вызов)
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/sermons

МетодПутьАутентификацияРазрешениеОписание
GET/public/freeshowSampleJWTПолучить пример структуры плейлиста FreeShow
GET/public/tvWrapper/:churchIdJWTПолучить обёртку ТВ-приложения с источниками проповедей, уроков и 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Генерация ИИ-предложений для постов в соцсетях из субтитров проповеди
GET/outline?url=&title=&author=JWTГенерация ИИ-плана урока по 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. *Также разрешено для участников группы. Максимум 100 МБ на элемент контента
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Создать детали песни из PraiseCharts ID (возвращает существующие, если уже созданы). Автоматически получает метаданные из 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Найти FreeShow ID, которые не существуют в церкви. Тело: { 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Получить публичные настройки церкви (возвращаются как пары ключ-значение)
GET/imports?playlistId=&channelId=&type=JWTSettings.EditПолучить настройки автоимпорта (ID каналов YouTube/Vimeo)
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>" }

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