Saltar al contenido principal

Puntos Finales de Contenido

El módulo de Contenido gestiona páginas del sitio web, secciones, elementos, bloques, publicaciones de blog, redirecciones, sermones, listas de reproducción, servicios de transmisión, eventos, calendarios curados, archivos, galerías, traducciones bíblicas y búsquedas de versículos, canciones, arreglos, estilos globales, fotos de stock, y configuración. Es el módulo más grande en la API y alimenta el CMS, características de medios/transmisión, planificación de adoración, y características bíblicas en todas las aplicaciones de ChurchApps.

Ruta base: /content

Páginas

Ruta base: /content/pages

MétodoRutaAuthPermisoDescripción
GET/:churchId/tree?url=&id=PúblicoCargar árbol completo de página (secciones, elementos, bloques) por URL o ID. Elimina IDs internos cuando se obtiene por URL. Las búsquedas basadas en URL aplican pages.visibility — una página cerrada devuelve { restricted: true, visibility } a menos que el JWT (opcional) satisfaga la condición
GET/public/:churchIdPúblicoEnumera páginas públicas (url, title, metaDescription); solo visibility = everyone
GET/:idJWTObtener una página por ID
GET/JWTEnumera todas las páginas de la iglesia
POST/duplicate/:idJWTContent.EditDuplicar una página con todas las secciones y elementos
POST/temp/aiJWTContent.EditGuardar una página generada por IA (página, secciones, y elementos en una llamada)
POST/JWTContent.EditCrear o actualizar páginas (lote)
DELETE/:idJWTContent.EditEliminar una página

Ejemplo: Cargar Árbol de Página

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

Secciones

Ruta base: /content/sections

MétodoRutaAuthPermisoDescripción
GET/:idJWTObtener una sección por ID
POST/duplicate/:id?convertToBlock=JWTContent.EditDuplicar una sección o convertirla en un bloque reutilizable
POST/JWTContent.EditCrear o actualizar secciones (lote). Actualiza automáticamente el orden de clasificación
DELETE/:idJWTContent.EditEliminar una sección (actualiza automáticamente el orden de clasificación)

Elementos

Ruta base: /content/elements

MétodoRutaAuthPermisoDescripción
GET/:idJWTObtener un elemento por ID
POST/duplicate/:idJWTContent.EditDuplicar un elemento con todos sus hijos
POST/JWTContent.EditCrear o actualizar elementos (lote). Gestiona automáticamente columnas de fila y diapositivas de carrusel
DELETE/:idJWTContent.EditEliminar un elemento

Bloques

Ruta base: /content/blocks

Extiende CRUD estándar (GET /:id, GET /, POST /, DELETE /:id de la clase base con permiso Content.Edit para escrituras).

MétodoRutaAuthPermisoDescripción
GET/:idJWTObtener un bloque por ID
GET/JWTEnumera todos los bloques
GET/:churchId/tree/:idPúblicoCargar árbol completo de bloque con secciones y elementos
GET/blockType/:blockTypeJWTCargar bloques por tipo (p. ej. footerBlock, elementBlock)
GET/public/footer/:churchIdPúblicoCargar árbol de bloque de pie de página para una iglesia
POST/JWTContent.EditCrear o actualizar bloques
DELETE/:idJWTContent.EditEliminar un bloque

Enlaces

Ruta base: /content/links

Extiende CRUD estándar (GET /:id, GET /, POST /, DELETE /:id de la clase base con permiso Content.Edit para escrituras).

MétodoRutaAuthPermisoDescripción
GET/:idJWTObtener un enlace por ID
GET/JWTEnumera todos los enlaces. Filtro opcional ?category=. Se ordena automáticamente después de guardar
GET/church/:churchId/filtered?category=JWTCargar enlaces filtrados por visibilidad (everyone, visitors, members, staff, groups)
GET/church/:churchId?category=PúblicoCargar enlaces para una iglesia por categoría (público)
POST/JWTContent.EditCrear o actualizar enlaces (lote). Se ordena automáticamente por categoría
DELETE/:idJWTContent.EditEliminar un enlace

Estilos Globales

Ruta base: /content/globalStyles

Extiende CRUD estándar (POST /, DELETE /:id de la clase base con permiso Content.Edit para escrituras).

MétodoRutaAuthPermisoDescripción
GET/church/:churchIdPúblicoCargar estilos globales para una iglesia (devuelve valores predeterminados si no hay ninguno establecido)
GET/JWTCargar estilos globales para la iglesia autenticada
POST/JWTContent.EditCrear o actualizar estilos globales
DELETE/:idJWTContent.EditEliminar estilos globales

Historial de Página

Ruta base: /content/pageHistory

MétodoRutaAuthPermisoDescripción
GET/page/:pageIdJWTContent.EditEnumera entradas de historial para una página
GET/block/:blockIdJWTContent.EditEnumera entradas de historial para un bloque
GET/:idJWTContent.EditObtener una entrada de historial por ID
POST/JWTContent.EditGuardar una instantánea de página/bloque. Limpia periódicamente entradas de más de 30 días
POST/restore/:idJWTContent.EditRestaurar una página/bloque desde una instantánea de historial (elimina el contenido actual y lo recrea desde la instantánea)
POST/restoreSnapshotJWTContent.EditRestaurar desde un objeto de instantánea en línea. Cuerpo: { pageId, blockId, snapshot }

Publicaciones (Blog)

Ruta base: /content/posts

Las publicaciones de blog son filas independientes: title, slug (único por iglesia), excerpt, content (cuerpo en markdown), authorId, photoUrl, publishDate, category, y tags. Una publicación se publica una vez que publishDate está establecido y en el pasado. Los puntos finales de lectura enriquecen cada publicación con authorName resuelto a partir de authorId. Consulta Arquitectura del Generador de Sitios Web.

MétodoRutaAuthPermisoDescripción
GET/public/:churchId?category=&tag=&page=&pageSize=PúblicoEnumera publicaciones publicadas, paginadas (máximo 50 por página)
GET/public/:churchId/categoriesPúblicoCategorías distintas entre las publicaciones publicadas
GET/public/:churchId/slug/:slugPúblicoObtener una publicación publicada por slug
GET/rss/:churchId?siteUrl=PúblicoFeed RSS 2.0 de publicaciones publicadas (enlaces construidos como {siteUrl}/blog/{slug})
GET/:idJWTObtener una publicación por ID
GET/JWTEnumera todas las publicaciones de la iglesia
POST/JWTContent.EditCrear o actualizar publicaciones (lote)
DELETE/:idJWTContent.EditEliminar una publicación

Redirecciones

Ruta base: /content/redirects

Redirecciones de URL por iglesia (fromPathtoPath), limitadas a 200 por iglesia. Las rutas se normalizan (en minúsculas, barra inicial, sin barra final) y fromPath es único por iglesia. B1App resuelve estas en potenciales 404 y emite un HTTP 308.

MétodoRutaAuthPermisoDescripción
GET/public/:churchId?path=PúblicoResolver una ruta (o enumerar todas las redirecciones cuando se omite path)
GET/:idJWTObtener una redirección por ID
GET/JWTEnumera todas las redirecciones de la iglesia
POST/JWTContent.EditCrear o actualizar redirecciones. Rechaza fromPath = toPath y aplica el límite de 200 filas
DELETE/:idJWTContent.EditEliminar una redirección

Sermones

Ruta base: /content/sermons

MétodoRutaAuthPermisoDescripción
GET/public/freeshowSampleJWTObtener una estructura de lista de reproducción FreeShow de muestra
GET/public/tvWrapper/:churchIdJWTObtener el wrapper de la aplicación TV con fuentes de sermón, lección, y FreeShow
GET/public/tvFeed/:churchId/:sermonIdPúblicoObtener un solo sermón como lista de reproducción de feed TV
GET/public/tvFeed/:churchIdPúblicoObtener todas las listas de reproducción/sermones públicos como feed TV
GET/public/:churchIdPúblicoEnumera todos los sermones públicos de una iglesia
GET/timeline?sermonIds=JWTCargar datos de línea de tiempo para sermones
GET/lookup?videoType=&videoData=PúblicoBuscar metadatos de sermón desde YouTube o Vimeo
GET/socialSuggestions?youtubeVideoId=JWTGenerar sugerencias de publicaciones de redes sociales con IA a partir de subtítulos del sermón
GET/outline?url=&title=&author=JWTGenerar un esquema de lección con IA a partir de una URL
GET/youtubeImport/:channelIdJWTImportar videos de un canal de YouTube
GET/vimeoImport/:channelIdJWTImportar videos de un canal de Vimeo
GET/:idJWTObtener un sermón por ID
GET/JWTEnumera todos los sermones
POST/JWTStreamingServices.EditCrear o actualizar sermones (lote, admite carga de miniatura en base64)
DELETE/:idJWTStreamingServices.EditEliminar un sermón

Ejemplo: Buscar un Sermón de 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"
}

Listas de Reproducción

Ruta base: /content/playlists

Extiende CRUD estándar (GET /:id, GET /, DELETE /:id de la clase base con permiso StreamingServices.Edit para escrituras).

MétodoRutaAuthPermisoDescripción
GET/:idJWTObtener una lista de reproducción por ID
GET/JWTEnumera todas las listas de reproducción
GET/public/:churchIdPúblicoEnumera todas las listas de reproducción públicas de una iglesia
POST/JWTStreamingServices.EditCrear o actualizar listas de reproducción (lote, admite carga de miniatura en base64)
DELETE/:idJWTStreamingServices.EditEliminar una lista de reproducción

Servicios de Transmisión

Ruta base: /content/streamingServices

MétodoRutaAuthPermisoDescripción
GET/:id/hostChatJWTChat.HostObtener el ID de sala de chat de anfitrión encriptado para un servicio
GET/JWTEnumera todos los servicios de transmisión. Limpia automáticamente servicios no recurrentes expirados y avanza los recurrentes
POST/JWTStreamingServices.EditCrear o actualizar servicios de transmisión (lote)
DELETE/:idJWTStreamingServices.EditEliminar un servicio de transmisión (también limpia IPs bloqueadas)

Eventos

Ruta base: /content/events

MétodoRutaAuthPermisoDescripción
GET/timeline/group/:groupId?eventIds=JWTCargar eventos de línea de tiempo para un grupo
GET/timeline?eventIds=JWTCargar eventos de línea de tiempo para los grupos del usuario actual
GET/subscribe?churchId=&groupId=&curatedCalendarId=PúblicoSuscribirse a eventos como feed de calendario ICS
GET/group/:groupIdJWTObtener eventos para un grupo (incluye fechas de excepción)
GET/public/group/:churchId/:groupIdPúblicoObtener eventos públicos para un grupo
GET/:idJWTObtener un evento por ID
POST/JWTCrear o actualizar eventos (lote)
DELETE/:idJWTContent.EditEliminar un evento

Excepciones de Evento

Ruta base: /content/eventExceptions

MétodoRutaAuthPermisoDescripción
GET/:idJWTObtener una excepción de evento por ID
POST/JWTContent.EditCrear o actualizar excepciones de evento (lote)
DELETE/:idJWTContent.EditEliminar una excepción de evento

Calendarios Curados

Ruta base: /content/curatedCalendars

MétodoRutaAuthPermisoDescripción
GET/:idJWTObtener un calendario curado por ID
GET/JWTEnumera todos los calendarios curados
POST/JWTContent.EditCrear o actualizar calendarios curados (lote)
DELETE/:idJWTContent.EditEliminar un calendario curado

Eventos Curados

Ruta base: /content/curatedEvents

MétodoRutaAuthPermisoDescripción
GET/calendar/:curatedCalendarId?withoutEventsJWTObtener eventos curados para un calendario (incluye detalles de evento y fechas de excepción a menos que se establezca ?withoutEvents)
GET/public/calendar/:churchId/:curatedCalendarIdPúblicoObtener eventos curados públicos para un calendario
GET/:idJWTObtener un evento curado por ID
GET/JWTEnumera todos los eventos curados
POST/JWTContent.EditCrear o actualizar eventos curados. Admite un arreglo eventIds para agregar eventos de grupo específicos
DELETE/:idJWTContent.EditEliminar un evento curado
DELETE/calendar/:curatedCalendarId/event/:eventIdJWTContent.EditQuitar un evento específico de un calendario curado
DELETE/calendar/:curatedCalendarId/group/:groupIdJWTContent.EditQuitar todos los eventos de un grupo de un calendario curado

Archivos

Ruta base: /content/files

MétodoRutaAuthPermisoDescripción
GET/:contentType/:contentIdJWTObtener archivos por tipo de contenido e ID de contenido
GET/JWTEnumera todos los archivos para el sitio web de la iglesia
GET/:idJWTObtener un archivo por ID
POST/JWTContent.Edit*Cargar archivos (base64). *También permitido si el usuario es miembro del grupo que coincide con contentId
POST/postUrlJWTContent.Edit*Obtener una URL de carga S3 pre-firmada. *También permitido para miembros de grupo. Máximo 100MB por elemento de contenido
DELETE/:idJWTContent.Edit*Eliminar un archivo y quitarlo del almacenamiento. *También permitido para miembros de grupo

Galería

Ruta base: /content/gallery

MétodoRutaAuthPermisoDescripción
GET/stock/:folderPúblicoEnumera fotos de stock en una carpeta
GET/:folderJWTContent.EditEnumera imágenes de galería en una carpeta
POST/requestUploadJWTContent.EditObtener una URL de carga S3 pre-firmada para una imagen de galería
DELETE/:folder/:imageJWTContent.EditEliminar una imagen de galería

Biblias

Ruta base: /content/bibles

Todos los puntos finales de Biblia son públicos (no se requiere autenticación). Los datos se obtienen de fuentes externas y se almacenan en caché localmente.

MétodoRutaAuthPermisoDescripción
GET/PúblicoEnumera todas las traducciones de la Biblia (obtiene de la fuente si la caché está vacía)
GET/stats?startDate=&endDate=PúblicoObtener estadísticas de búsqueda bíblica para un rango de fechas
GET/availableTranslations/:sourcePúblicoEnumera traducciones disponibles de una fuente (p. ej. api.bible)
GET/updateTranslationsPúblicoSincronizar todas las traducciones de todas las fuentes
GET/updateTranslations/:sourcePúblicoSincronizar traducciones de una fuente específica
GET/updateCopyrightsPúblicoActualizar información de derechos de autor para traducciones a las que les falta
GET/:translationKey/updateCopyrightPúblicoActualizar los derechos de autor de una traducción específica
GET/:translationKey/search?query=&limit=PúblicoBuscar versículos en una traducción
GET/:translationKey/booksPúblicoObtener libros para una traducción (almacena en caché localmente)
GET/:translationKey/:bookKey/chaptersPúblicoObtener capítulos para un libro (almacena en caché localmente)
GET/:translationKey/chapters/:chapterKey/versesPúblicoObtener versículos para un capítulo (almacena en caché localmente)
GET/:translationKey/verses/:startVerseKey-:endVerseKeyPúblicoObtener texto de versículo para un rango. Registra las búsquedas. Algunas traducciones omiten el almacenamiento en caché por licencia

Ejemplo: Obtener Texto de Versículo

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

Canciones

Ruta base: /content/songs

MétodoRutaAuthPermisoDescripción
GET/search?q=JWTBuscar canciones por consulta
GET/:idJWTObtener una canción por ID
GET/JWTContent.EditEnumera todas las canciones
POST/JWTContent.EditCrear o actualizar canciones (lote)
POST/importJWTImportar canciones desde FreeShow (lote)
DELETE/:idJWTContent.EditEliminar una canción

Detalles de Canción

Ruta base: /content/songDetails

Los detalles de canción son globales (no delimitados por iglesia). Estos representan metadatos canónicos de canción compartidos entre iglesias.

MétodoRutaAuthPermisoDescripción
GET/:idJWTObtener un detalle de canción por ID (global)
GET/JWTEnumera detalles de canción para la iglesia
POST/createJWTCrear un detalle de canción a partir de un ID de PraiseCharts (devuelve el existente si ya fue creado). Obtiene automáticamente metadatos de PraiseCharts y MusicBrainz
POST/JWTCrear o actualizar detalles de canción (lote)

Enlaces de Detalle de Canción

Ruta base: /content/songDetailLinks

MétodoRutaAuthPermisoDescripción
GET/:idJWTObtener un enlace de detalle de canción por ID
GET/songDetail/:songDetailIdJWTObtener todos los enlaces para un detalle de canción
POST/JWTCrear o actualizar enlaces de detalle de canción (lote). Obtiene automáticamente datos de MusicBrainz si está vinculado
DELETE/:idJWTEliminar un enlace de detalle de canción

Arreglos

Ruta base: /content/arrangements

MétodoRutaAuthPermisoDescripción
GET/:idJWTObtener un arreglo por ID
GET/song/:songIdJWTContent.EditObtener arreglos para una canción
GET/songDetail/:songDetailIdJWTContent.EditObtener arreglos para un detalle de canción
GET/JWTContent.EditEnumera todos los arreglos
POST/JWTContent.EditCrear o actualizar arreglos (lote)
POST/freeShow/missingJWTEncontrar IDs de FreeShow que no existen en la iglesia. Cuerpo: { freeShowIds: string[] }
DELETE/:idJWTContent.EditEliminar un arreglo (también elimina claves; elimina la canción si no quedan arreglos)

Claves de Arreglo

Ruta base: /content/arrangementKeys

MétodoRutaAuthPermisoDescripción
GET/presenter/:churchId/:idPúblicoObtener la clave de arreglo con datos completos de canción para la vista de presentador
GET/:idJWTObtener una clave de arreglo por ID
GET/arrangement/:arrangementIdJWTContent.EditObtener claves para un arreglo
GET/JWTContent.EditEnumera todas las claves de arreglo
POST/JWTContent.EditCrear o actualizar claves de arreglo (lote)
DELETE/:idJWTContent.EditEliminar una clave de arreglo

Configuración

Ruta base: /content/settings

MétodoRutaAuthPermisoDescripción
GET/myJWTObtener la configuración del usuario actual
GET/JWTSettings.EditObtener toda la configuración de la iglesia
GET/public/:churchIdPúblicoObtener configuración pública de una iglesia (devuelta como pares clave-valor)
POST/myJWTGuardar configuración a nivel de usuario (admite carga de imagen en base64)
POST/JWTSettings.EditGuardar configuración a nivel de iglesia (admite carga de imagen en base64)
DELETE/my/:idJWTEliminar una configuración de usuario

Vista Previa

Ruta base: /content/preview

MétodoRutaAuthPermisoDescripción
GET/data/:keyPúblicoCargar datos de vista previa de transmisión para una iglesia por clave de subdominio (pestañas, enlaces, servicios, sermones)

Galería (Fotos de Stock)

Ruta base: /content/stock

MétodoRutaAuthPermisoDescripción
POST/searchPúblicoBuscar fotos de stock de Pexels. Cuerpo: { term: "church" }

PraiseCharts

Ruta base: /content/praiseCharts

Integración con PraiseCharts para descubrimiento de canciones de adoración y descargas de partituras.

MétodoRutaAuthPermisoDescripción
GET/raw/:idJWTObtener datos crudos de PraiseCharts para una canción
GET/hasAccountJWTVerificar si el usuario tiene una cuenta de PraiseCharts vinculada
GET/search?q=JWTBuscar en el catálogo de PraiseCharts
GET/products/:id?keys=JWTObtener productos para una canción (desde la biblioteca si está autenticado, de lo contrario del catálogo)
GET/arrangement/raw/:id?keys=JWTObtener datos crudos de arreglo desde la biblioteca
GET/download?skus=&keys=&file_name=JWTDescargar un archivo de PraiseCharts (PDF o ZIP). Devuelve { redirectUrl }
GET/authUrl?returnUrl=PúblicoObtener URL de autorización OAuth para PraiseCharts
GET/access?verifier=&token=&secret=JWTIntercambiar el verificador OAuth por un token de acceso y guardarlo en la configuración de usuario
GET/libraryJWTExplorar la biblioteca de PraiseCharts del usuario

Soporte

Ruta base: /content/support

MétodoRutaAuthPermisoDescripción
POST/createAudioPúblicoConvertir SSML a audio MP3 usando AWS Polly. Cuerpo: { ssml: "<speak>...</speak>" }

Páginas Relacionadas