Saltar al contenido principal

Formato Abierto de Lecciones

El Formato Abierto de Lecciones es un esquema JSON estandarizado que permite a proveedores de contenido de terceros publicar currículum para Lessons.church. Cualquier organización que hospede un feed en este formato puede agregarse como proveedor externo, haciendo su contenido explorable y reproducible junto con la biblioteca integrada.

Cómo Funciona

Un proveedor hospeda dos tipos de puntos finales:

  1. Árbol de Proveedor -- Una URL única que devuelve el catálogo completo de programas, estudios, lecciones y lugares. Cada lugar incluye una URL de feed que apunta al contenido detallado de la lección.
  2. Feed de Lugar -- Una URL por lugar, devolviendo el contenido completo de la lección (secciones, acciones y archivos multimedia).

Cuando una iglesia agrega la URL de su proveedor en Lessons.church, la plataforma obtiene su árbol para descubrir contenido disponible, luego obtiene feeds de lugares individuales bajo demanda.

Árbol de Proveedor

Su URL de proveedor debe devolver un objeto JSON con esta estructura:

{
"programs": [
{
"id": "program-1",
"name": "Gospel of Mark",
"slug": "gospel-of-mark",
"image": "https://example.com/images/mark.jpg",
"about": "A 12-week study through the Gospel of Mark.",
"studies": [
{
"id": "study-1",
"name": "The Beginning",
"slug": "the-beginning",
"image": "https://example.com/images/study1.jpg",
"lessons": [
{
"id": "lesson-1",
"name": "The Baptism of Jesus",
"slug": "baptism-of-jesus",
"title": "The Baptism of Jesus",
"image": "https://example.com/images/lesson1.jpg",
"description": "An introduction to Jesus' ministry.",
"venues": [
{
"id": "venue-1",
"name": "Kids",
"apiUrl": "https://example.com/feed/venues/venue-1"
},
{
"id": "venue-2",
"name": "Adults",
"apiUrl": "https://example.com/feed/venues/venue-2"
}
]
}
]
}
]
}
]
}

Campos del Árbol

CampoTipoDescripción
programs[].idstringIdentificador único de programa
programs[].namestringNombre mostrado
programs[].slugstringNombre amigable para URL
programs[].imagestringURL de imagen del programa (opcional)
programs[].aboutstringDescripción (opcional)
studies[].idstringIdentificador único de estudio
studies[].namestringNombre mostrado
studies[].slugstringNombre amigable para URL
studies[].imagestringURL de imagen del estudio (opcional)
lessons[].idstringIdentificador único de lección
lessons[].namestringNombre mostrado
lessons[].slugstringNombre amigable para URL
lessons[].titlestringTítulo completo
lessons[].imagestringURL de imagen de lección (opcional)
lessons[].descriptionstringResumen de lección (opcional)
venues[].idstringIdentificador único de lugar
venues[].namestringNombre del lugar (ej. "Niños", "Adultos", "Jóvenes")
venues[].apiUrlstringURL que devuelve el feed de lugar (ver abajo)

Lugares representan diferentes versiones de la misma lección adaptadas para diferentes audiencias (grupos de edad, configuraciones, etc.).

Feed de Lugar

El apiUrl de cada lugar debe devolver un objeto JSON que coincida con este esquema:

{
"id": "venue-1",
"name": "Kids",
"lessonId": "lesson-1",
"lessonName": "The Baptism of Jesus",
"lessonImage": "https://example.com/images/lesson1.jpg",
"lessonDescription": "An introduction to Jesus' ministry.",
"studyName": "The Beginning",
"studySlug": "the-beginning",
"programName": "Gospel of Mark",
"programSlug": "gospel-of-mark",
"programAbout": "A 12-week study through the Gospel of Mark.",
"downloads": [],
"sections": [
{
"id": "section-1",
"name": "Opening Discussion",
"sort": 1,
"materials": "Whiteboard and markers",
"actions": [
{
"id": "action-1",
"actionType": "text",
"content": "**Key Verse:** Mark 1:9-11",
"sort": 1
},
{
"id": "action-2",
"actionType": "question",
"content": "What do you know about baptism?",
"sort": 2,
"role": "Leader"
},
{
"id": "action-3",
"actionType": "play",
"content": "Intro Video",
"sort": 3,
"files": [
{
"id": "file-1",
"name": "intro-video.mp4",
"url": "https://example.com/media/intro.mp4",
"streamUrl": "https://vimeo.com/123456789",
"fileType": "video/mp4",
"seconds": 180,
"bytes": 52428800,
"thumbnail": "https://example.com/media/intro-thumb.jpg",
"loop": false
}
]
}
]
}
]
}

Campos de Feed de Lugar

Objeto Raíz

CampoTipoDescripción
idstringIdentificador de lugar
namestringNombre del lugar
lessonIdstringIdentificador de lección
lessonNamestringNombre mostrado de lección
lessonImagestringURL de imagen de lección
lessonDescriptionstringResumen de lección
studyNamestringNombre del estudio padre
studySlugstringSlug del estudio padre
programNamestringNombre del programa padre
programSlugstringSlug del programa padre
programAboutstringDescripción del programa
downloadsarrayPaquetes de archivos descargables
sectionsarraySecciones de lección ordenadas

Sección

CampoTipoDescripción
idstringIdentificador de sección
namestringTítulo de sección
sortnumberOrden de visualización
materialsstringMateriales o notas de preparación (opcional)
actionsarrayAcciones ordenadas dentro de esta sección

Acción

CampoTipoDescripción
idstringIdentificador de acción
actionTypestringUno de: play, text, question, quote, subhead
contentstringContenido de texto o etiqueta de medios
sortnumberOrden de visualización
rolestringNombre de rol, ej. "Líder", "Niños" (opcional)
roleIdstringIdentificador de rol (opcional)
filesarrayArchivos multimedia para acciones play (opcional)

Archivo

CampoTipoDescripción
idstringIdentificador de archivo
namestringNombre de archivo
urlstringURL de descarga directa
streamUrlstringURL de transmisión, ej. enlace de Vimeo (opcional)
fileTypestringTipo MIME (ej. video/mp4, image/jpeg)
secondsnumberDuración en segundos para audio/vídeo (opcional)
bytesnumberTamaño de archivo en bytes (opcional)
thumbnailstringURL de imagen en miniatura (opcional)
loopbooleanSi los medios deben repetirse en bucle (opcional, predeterminado false)

Descarga

CampoTipoDescripción
namestringNombre del paquete de descarga (ej. "Materiales Imprimibles")
filesarrayArchivos en este paquete de descarga (mismos campos que Archivo arriba)

Tipos de Acción

TipoPropósito
playReproducción de medios -- vídeo, audio o presentación de diapositivas. Debe incluir files.
textContenido de texto estático. Soporta bold de estilo markdown (**text**).
questionPregunta de discusión o reflexión para la audiencia.
quoteUna cita destacada o pasaje de Escritura.
subheadUn encabezado o divisor dentro de una sección.
tip

Para ver un ejemplo funcional del feed en acción, puede ver el árbol de contenido integrado de Lessons.church en https://api.lessons.church/lessons/public/tree y obtener cualquier URL de feed de lugar desde él.