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úblico—Cargar á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úblico—Enumera páginas públicas (url, title, metaDescription); solo visibility = everyone
GET/:idJWT—Obtener una página por ID
GET/JWT—Enumera 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/:idJWT—Obtener 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/:idJWT—Obtener 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/:idJWT—Obtener un bloque por ID
GET/JWT—Enumera todos los bloques
GET/:churchId/tree/:idPúblico—Cargar árbol completo de bloque con secciones y elementos
GET/blockType/:blockTypeJWT—Cargar bloques por tipo (p. ej. footerBlock, elementBlock)
GET/public/footer/:churchIdPúblico—Cargar á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/:idJWT—Obtener un enlace por ID
GET/JWT—Enumera todos los enlaces. Filtro opcional ?category=. Se ordena automáticamente después de guardar
GET/church/:churchId/filtered?category=JWT—Cargar enlaces filtrados por visibilidad (everyone, visitors, members, staff, groups)
GET/church/:churchId?category=Público—Cargar 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úblico—Cargar estilos globales para una iglesia (devuelve valores predeterminados si no hay ninguno establecido)
GET/JWT—Cargar 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úblico—Enumera publicaciones publicadas, paginadas (máximo 50 por página)
GET/public/:churchId/categoriesPúblico—Categorías distintas entre las publicaciones publicadas
GET/public/:churchId/slug/:slugPúblico—Obtener una publicación publicada por slug
GET/rss/:churchId?siteUrl=Público—Feed RSS 2.0 de publicaciones publicadas (enlaces construidos como {siteUrl}/blog/{slug})
GET/:idJWT—Obtener una publicación por ID
GET/JWT—Enumera 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 (fromPath → toPath), 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úblico—Resolver una ruta (o enumerar todas las redirecciones cuando se omite path)
GET/:idJWT—Obtener una redirección por ID
GET/JWT—Enumera 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/freeshowSampleJWT—Obtener una estructura de lista de reproducción FreeShow de muestra
GET/public/tvWrapper/:churchIdJWT—Obtener el wrapper de la aplicación TV con fuentes de sermón, lección, y FreeShow
GET/public/tvFeed/:churchId/:sermonIdPúblico—Obtener un solo sermón como lista de reproducción de feed TV
GET/public/tvFeed/:churchIdPúblico—Obtener todas las listas de reproducción/sermones públicos como feed TV
GET/public/:churchIdPúblico—Enumera todos los sermones públicos de una iglesia
GET/timeline?sermonIds=JWT—Cargar datos de línea de tiempo para sermones
GET/lookup?videoType=&videoData=Público—Buscar metadatos de sermón desde YouTube o Vimeo
GET/socialSuggestions?youtubeVideoId=JWT—Generar sugerencias de publicaciones de redes sociales con IA a partir de subtítulos del sermón
GET/outline?url=&title=&author=JWT—Generar un esquema de lección con IA a partir de una URL
GET/youtubeImport/:channelIdJWT—Importar videos de un canal de YouTube
GET/vimeoImport/:channelIdJWT—Importar videos de un canal de Vimeo
GET/:idJWT—Obtener un sermón por ID
GET/JWT—Enumera 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/:idJWT—Obtener una lista de reproducción por ID
GET/JWT—Enumera todas las listas de reproducción
GET/public/:churchIdPúblico—Enumera 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/JWT—Enumera 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=JWT—Cargar eventos de línea de tiempo para un grupo
GET/timeline?eventIds=JWT—Cargar eventos de línea de tiempo para los grupos del usuario actual
GET/subscribe?churchId=&groupId=&curatedCalendarId=Público—Suscribirse a eventos como feed de calendario ICS
GET/group/:groupIdJWT—Obtener eventos para un grupo (incluye fechas de excepción)
GET/public/group/:churchId/:groupIdPúblico—Obtener eventos públicos para un grupo
GET/:idJWT—Obtener un evento por ID
POST/JWT—Crear o actualizar eventos (lote)
DELETE/:idJWTContent.EditEliminar un evento

Excepciones de Evento​

Ruta base: /content/eventExceptions

MétodoRutaAuthPermisoDescripción
GET/:idJWT—Obtener 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/:idJWT—Obtener un calendario curado por ID
GET/JWT—Enumera 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?withoutEventsJWT—Obtener 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úblico—Obtener eventos curados públicos para un calendario
GET/:idJWT—Obtener un evento curado por ID
GET/JWT—Enumera 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/:contentIdJWT—Obtener archivos por tipo de contenido e ID de contenido
GET/JWT—Enumera todos los archivos para el sitio web de la iglesia
GET/:idJWT—Obtener 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úblico—Enumera 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úblico—Enumera todas las traducciones de la Biblia (obtiene de la fuente si la caché está vacía)
GET/stats?startDate=&endDate=Público—Obtener estadísticas de búsqueda bíblica para un rango de fechas
GET/availableTranslations/:sourcePúblico—Enumera traducciones disponibles de una fuente (p. ej. api.bible)
GET/updateTranslationsPúblico—Sincronizar todas las traducciones de todas las fuentes
GET/updateTranslations/:sourcePúblico—Sincronizar traducciones de una fuente específica
GET/updateCopyrightsPúblico—Actualizar información de derechos de autor para traducciones a las que les falta
GET/:translationKey/updateCopyrightPúblico—Actualizar los derechos de autor de una traducción específica
GET/:translationKey/search?query=&limit=Público—Buscar versículos en una traducción
GET/:translationKey/booksPúblico—Obtener libros para una traducción (almacena en caché localmente)
GET/:translationKey/:bookKey/chaptersPúblico—Obtener capítulos para un libro (almacena en caché localmente)
GET/:translationKey/chapters/:chapterKey/versesPúblico—Obtener versículos para un capítulo (almacena en caché localmente)
GET/:translationKey/verses/:startVerseKey-:endVerseKeyPúblico—Obtener 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=JWT—Buscar canciones por consulta
GET/:idJWT—Obtener una canción por ID
GET/JWTContent.EditEnumera todas las canciones
POST/JWTContent.EditCrear o actualizar canciones (lote)
POST/importJWT—Importar 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/:idJWT—Obtener un detalle de canción por ID (global)
GET/JWT—Enumera detalles de canción para la iglesia
POST/createJWT—Crear 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/JWT—Crear o actualizar detalles de canción (lote)

Enlaces de Detalle de Canción​

Ruta base: /content/songDetailLinks

MétodoRutaAuthPermisoDescripción
GET/:idJWT—Obtener un enlace de detalle de canción por ID
GET/songDetail/:songDetailIdJWT—Obtener todos los enlaces para un detalle de canción
POST/JWT—Crear o actualizar enlaces de detalle de canción (lote). Obtiene automáticamente datos de MusicBrainz si está vinculado
DELETE/:idJWT—Eliminar un enlace de detalle de canción

Arreglos​

Ruta base: /content/arrangements

MétodoRutaAuthPermisoDescripción
GET/:idJWT—Obtener 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/missingJWT—Encontrar 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úblico—Obtener la clave de arreglo con datos completos de canción para la vista de presentador
GET/:idJWT—Obtener 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/myJWT—Obtener la configuración del usuario actual
GET/JWTSettings.EditObtener toda la configuración de la iglesia
GET/public/:churchIdPúblico—Obtener configuración pública de una iglesia (devuelta como pares clave-valor)
POST/myJWT—Guardar 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/:idJWT—Eliminar una configuración de usuario

Vista Previa​

Ruta base: /content/preview

MétodoRutaAuthPermisoDescripción
GET/data/:keyPúblico—Cargar 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úblico—Buscar 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/:idJWT—Obtener datos crudos de PraiseCharts para una canción
GET/hasAccountJWT—Verificar si el usuario tiene una cuenta de PraiseCharts vinculada
GET/search?q=JWT—Buscar en el catálogo de PraiseCharts
GET/products/:id?keys=JWT—Obtener productos para una canción (desde la biblioteca si está autenticado, de lo contrario del catálogo)
GET/arrangement/raw/:id?keys=JWT—Obtener datos crudos de arreglo desde la biblioteca
GET/download?skus=&keys=&file_name=JWT—Descargar un archivo de PraiseCharts (PDF o ZIP). Devuelve { redirectUrl }
GET/authUrl?returnUrl=Público—Obtener URL de autorización OAuth para PraiseCharts
GET/access?verifier=&token=&secret=JWT—Intercambiar el verificador OAuth por un token de acceso y guardarlo en la configuración de usuario
GET/libraryJWT—Explorar la biblioteca de PraiseCharts del usuario

Soporte​

Ruta base: /content/support

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

Páginas Relacionadas​