Listar los cursos de una escuela usando el API de Teachlr Organizaciones

Para listar los cursos de una escuela de Teachlr Organizaciones se debe realizar una petición de tipo GET al API de Teachlr Organizaciones utilizando el siguiente URL: https://api.teachlr.com/<dominio>/api/courses
en donde <dominio> se debe sustituir por el dominio teachlr de la escuela (no el dominio personalizado).

En la petición se deben enviar las siguientes dos cabeceras:

Key: Content-Type Value: application/json
Key: Authorization Value: key_0123456789ABCDEFGHIJK

Nota: El valor de Authorization mostrado arriba es ficticio. Cada escuela tendrá su propia llave (key) que debe ser solicitada por el cliente.

Opcionalmente, se puede agregar un parámetro al final del URL para filtrar la búsqueda de la siguiente manera:

https://api.teachlr.com/<dominio>/api/courses/<filtro>

donde <filtro> puede ser una de las siguientes palabras:

all => todos los cursos (no expirados, comprados o no, cualquier estado). draft => cursos en estado borrador.
pending => cursos en estado pendiente.
active => cursos en estado activo (no comprados).
deactivated => cursos en estado desactivado.
inactive => cursos en estado borrador, pendiente o desactivado. purchased => cursos comprados (expirados o no).
library => cursos en la biblioteca pública.
available => cursos en estado activo (no expirados, comprados o no).

Adicionalmente, se pueden especificar parámetros de filtrado y ordenamiento mediante una cadena de consulta, esto es, agregando al final del URL una estructura como la siguiente:

?category=mercadeo&subcategory=mercadeo-digital&sort=created_at&ord=desc

Los distintos parámetros que se pueden especificar y sus posibles valores se detallan a continuación:

Los parámetros a continuación sólo tienen efecto si se envía el parámetro paginate con valor true:

Caso de ejemplo:

Se desea obtener el listado no paginado de cursos activos, no expirados, comprados o no, que pertenezcan a la categoría «mercadeo» de la escuela https://escueladeprueba.teachlr.com, con la frase «plan de mercadeo», ordenados por título, descendentemente.

La petición al API de Teachlr Organizaciones se debe hacer al siguiente URL:

https://api.teachlr.com/escueladeprueba/api/courses/available?category=mercadeo &search=plan de mercadeo&sort=title&ord=desc

Una implementación utilizando la función $.ajax() de jQuery sería como sigue:

$.ajax({ 
url: "https://api.teachlr.com/escueladeprueba/api/courses/available?category= mercadeo&search=plan de marketing&sort=title&ord=desc", dataType: "json", type: "GET", contentType: "application/json", headers: { 
"Authorization": "key_0123456789ABCDEFGHIJK" }, success: function(data) { 
// la petición fue exitosa console.log('data', data); }, error: function(xhr, status, err) { 
// falló la petición console.log('xhr', xhr); console.log('status', status); console.log('err', err); } });

Posibles respuestas del API:

Status: 200 OK



"id": 1105, "title": "Nemo enim ipsam", "headline": "Ut enim ad minima veniam", "cover": { 
"thumb": "https:\/\/d2j3j1vpt0.../img/course_cover-118x66.jpg", "small": "https:\/\/d2j3j1vpt0.../img/course_cover-222x125.jpg", "medium": "https:\/\/d2j3j1vpt0.../img/course_cover-236x132.jpg", "large": "https:\/\/d2j3j1vpt0.../img/course_cover-506x285.jpg" }, "description": null, "slug": "nemo-enim-ips", "expired": false, "is_public": true, "created_at": "2019-06-04 14:36:28", "status": "active", "num_sales": 0, "visits": 41, "total_rate": "3.5", "price": 0, "author_about": null, "author_picture": null, "author_username": null, "author_headline": null, "author_name": null, "author_last_name": null, "author_country": null, "instructors": [ 

"username": "pedroperez", "name": "Pedro", "last_name": "Pérez", "email": "pedroperez@dominio.com" }, { 
"username": "luisvelasquez", "name": "Luis", "last_name": "Velásquez", "email": "luisvelasquez@dominio.com" } ], "duration_unit": "Seconds", "duration_time": 2046, "url": "https://escueladeprueba.teachlr.com/#courses-online/nemo-enim-ips", "author_url": null, "is_purchased": false }, { 
"id": 3048, "title": "At vero eos et accusamus et", "headline": "Quis autem vel eum iure.", "cover": {
"thumb": "https:\/\/d2j3j1vpt0.../img/course_cover-118x66.jpg", "small": "https:\/\/d2j3j1vpt0.../img/course_cover-222x125.jpg", "medium": "https:\/\/d2j3j1vpt0.../img/course_cover-236x132.jpg", "large": "https:\/\/d2j3j1vpt0.../img/course_cover-506x285.jpg" }, "description": "<p>Lorem ipsum dolor sit amet, consectetuer adipis.<p>", "slug": "at-vero-eos", "expired": false, "is_public": false, "created_at": "2019-06-09 19:42:44", "status": "active", "num_sales": 4, "visits": 32, "total_rate": "4.8", "price": "15", "author_about": "Programador", "author_picture": "https://d2j3j1vpt...net/api_content/avatars/L04-", "author_username": "irvingjm", "author_headline": "Analista programador", "author_name": "Irving", "author_last_name": "Martínez", "author_country": "Venezuela", "instructors": [ 

"username": "danielfuentes", "name": "Daniel", "last_name": "Fuentes", "email": "danielfuentes@dominio.com" }, { 
"username": "hectorlopez", "name": "Héctor", "last_name": "López", "email": "hectorlopez@dominio.com" } ], "duration_unit": "Seconds", "duration_time": 851, "url": "https://escueladeprueba.teachlr.com/#courses-online/at-vero-eos", "author_url": "https://teachlr.com/irvingjm", "is_purchased": true } ]

Esta respuesta se obtiene cuando la petición fue exitosa. La respuesta de ejemplo muestra el formato de respuesta no paginado con un arreglo que contiene dos (2) cursos.

Status: 200 OK

[]

Esta respuesta se obtiene cuando la petición fue exitosa. La respuesta de ejemplo muestra el formato de respuesta no paginado con un arreglo vacío, es decir, la escuela no tiene cursos con los parámetros especificados.

Status: 200 OK 


"total": 20, "per_page": "2", "current_page": 1, "last_page": 10, "next_page_url": "https://api.teachlr.com/escueladeprueba/api/courses?page=2", "prev_page_url": null, "from": 1, "to": 2, "data": [ { 
"id": 1105, "title": "Nemo enim ipsam", "headline": "Ut enim ad minima veniam", "cover": { 
"thumb": "https:\/\/d2j3j1vpt0.../img/course_cover-118x66.jpg", "small": "https:\/\/d2j3j1vpt0.../img/course_cover-222x125.jpg", "medium": "https:\/\/d2j3j1vpt0.../img/course_cover-236x132.jpg", "large": "https:\/\/d2j3j1vpt0.../img/course_cover-506x285.jpg" }, "description": null, "slug": "nemo-enim-ips", "expired": false, "is_public": true, "created_at": "2019-06-04 14:36:28", "status": "active", "num_sales": 0, "visits": 41, "total_rate": "3.5", "price": 0, "author_about": null, "author_picture": null, "author_username": null, "author_headline": null, "author_name": null, "author_last_name": null, "author_country": null, "instructors": [ 
"username": "pedroperez", "name": "Pedro", "last_name": "Pérez", "email": "pedroperez@dominio.com" }, { 

"username": "luisvelasquez", "name": "Luis", "last_name": "Velásquez", "email": "luisvelasquez@dominio.com" } ], "duration_unit": "Seconds", "duration_time": 2046, "url": "https://escueladepru...teachlr.com/#courses-online/nemo-enim-ips", "author_url": null, "is_purchased": false
}, { 
"id": 3048, "title": "At vero eos et accusamus et", "headline": "Quis autem vel eum iure.", "cover": { 
"thumb": "https:\/\/d2j3j1vpt0.../img/course_cover-118x66.jpg", "small": "https:\/\/d2j3j1vpt0.../img/course_cover-222x125.jpg", "medium": "https:\/\/d2j3j1vpt0.../img/course_cover-236x132.jpg", "large": "https:\/\/d2j3j1vpt0.../img/course_cover-506x285.jpg" }, "description": "<p>Lorem ipsum dolor sit amet, consectetuer adipis.<p>", "slug": "at-vero-eos", "expired": false, "is_public": false, "created_at": "2019-06-09 19:42:44", "status": "active", "num_sales": 4, "visits": 32, "total_rate": "4.8", "price": "15", "author_about": "Programador", "author_picture": "https://d2j3j1vpt...net/api_content/avatars/L04-", "author_username": "irvingjm", "author_headline": "Analista programador", "author_name": "Irving", "author_last_name": "Martínez", "author_country": "Venezuela", "instructors": [ 

"username": "danielfuentes", "name": "Daniel", "last_name": "Fuentes", "email": "danielfuentes@dominio.com" }, { 
"username": "hectorlopez", "name": "Héctor", "last_name": "López", "email": "hectorlopez@dominio.com" } ], "duration_unit": "Seconds", "duration_time": 851, "url": "https://escueladeprueba.teachlr.com/#courses-online/at-vero-eos", "author_url": "https://teachlr.com/irvingjm", "is_purchased": true } ] }

Esta respuesta se obtiene cuando la petición fue exitosa. La respuesta de ejemplo muestra el formato de respuesta paginado (página 1), mostrando dos (2) cursos por página. El atributo total indica la cantidad total de cursos con los parámetros especificados.

Status: 200 OK 


"total": 0, "per_page": 8, "current_page": 1, "last_page": 0, "next_page_url": null, "prev_page_url": null, "from": 1, "to": 0, "data": [] }

Esta respuesta se obtiene cuando la petición fue exitosa. La respuesta de ejemplo muestra el formato de respuesta paginado (página 1), mostrando un arreglo data vacío, es decir, la escuela no tiene cursos con los parámetros especificados. El atributo total indica la cantidad total de cursos con los parámetros especificados.

Status: 400 Bad Request

["Bad request"]

Esta respuesta se obtiene cuando la petición falla.

Status: 401 Unauthorized

["Unauthorized"]

Esta respuesta se obtiene cuando la llave (key) enviada en la cabecera «Authorization» de la petición no es válida.


Status: 404 Not Found

["Not Found"]

Esta respuesta se obtiene cuando el URL al cual se está haciendo la petición está incorrecto.