Listar las carreras de una escuela usando el API de Teachlr Organizaciones

Para listar las carreras 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/careers

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:

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/careers/<filtro>

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

library => carreras en la biblioteca pública.

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:

?coupons=true&search=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 las carreras en la biblioteca pública de la escuela https://escueladeprueba.teachlr.com, con la frase «plan de mercadeo», ordenadas por nombre, descendentemente.

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

https://api.teachlr.com/escueladeprueba/api/careers/library?sort=name&ord=desc &search=plan de mercadeo

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

$.ajax({ 
url: "https://api.teachlr.com/escueladeprueba/api/careers/library?sort=name& ord=desc&search=plan de mercadeo", 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": 10, "name": "Nemo enim ipsam", "description": "Ut enim ad minima veniam", "slug": "nemo-enim-ips", "num_users": 14, "num_courses": 3, "num_badges": 0, "num_sales": 2, "is_public": true, "created_at": "2018-07-16 21:08:54", "price": "15", "url": "https://escueladeprueba.teachlr.com/#careers-online/nemo-enim-ips", "courses": [ { 

"id": 21, "title": "Aenean commodo ligula", "headline": "Cum sociis natoque penatibus et magnis dis parturien", "cover": { 

"thumb": "https://d2j3j1vpt.../covers/1487606501-118x66.jpg", "small": "https://d2j3j1vpt.../covers/1487606501-222x125.jpg", "medium": "https://d2j3j1vpt.../covers/1487606501-236x132.jpg", "large": "https://d2j3j1vpt.../covers/1487606501-506x285.jpg" }, "slug": "aenean-commodo-ligula", "status": "active", "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" } ], "url": "https://es...eachlr.com/#courses-online/aenean-commodo-ligula", "author_url": null, "is_purchased": false, "pivot": { 

"career_id": 10,

"course_id": 21, "order": 0 } }, { 
"id": 41, "title": "Donec quam felis, ultricies nec", "headline": "Pellentesque eu, pretium quis, sem", "cover": { 
"thumb": "https://d2j3j1vpt.../img/course_cover-118x66.jpg", "small": "https://d2j3j1vpt.../img/course_cover-222x125.jpg", "medium": "https://d2j3j1vpt.../img/course_cover-236x132.jpg", "large": "https://d2j3j1vpt.../img/course_cover-506x285.jpg" }, "slug": "donec-quam-felis-ult", "status": "active", "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" } ], "url": "https://es...teachlr.com/#courses-online/donec-quam-felis-ult", "author_url": "https://teachlr.com/irvingjm", "is_purchased": true "pivot": { 
"career_id": 10, "course_id": 41, "order": 0 } } ] }, { 
"id": 17, "name": "In enim justo ", "description": "Nullam dictum felis eu pede mollis pretium", "slug": "in-enim-justo", "num_users": 9, "num_courses": 3, "num_badges": 7, "num_sales": 6, "is_public": true, 

"created_at": "2018-11-20 09:53:09", "price": "22", "url": "https://escueladeprueba.teachlr.com/#careers-online/in-enim-justo", "courses": [ 

"id": 70, "title": "Integer tincidunt", "headline": "Vivamus elementum semper nisi!", "cover": { 
"thumb": "https://d2j3j1vpt.../img/course_cover-118x66.jpg", "small": "https://d2j3j1vpt.../img/course_cover-222x125.jpg", "medium": "https://d2j3j1vpt.../img/course_cover-236x132.jpg", "large": "https://d2j3j1vpt.../img/course_cover-506x285.jpg" }, "slug": "integer-tincidunt", "status": "active", "author_about": null, "author_picture": null, "author_username": null, "author_headline": null, "author_name": null, "author_last_name": null, "author_country": null, "instructors": [ 

"username": "luismeza", "name": "Luis", "last_name": "Meza", "email": "luisameza@dominio.com" } ], "url": "https://escue...teachlr.com/#courses-online/integer-tincidunt", "author_url": null, "is_purchased": false, "pivot": { 
"career_id": 17, "course_id": 70, "order": 0 } } ] } ]

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) carreras.

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 carreras con los parámetros especificados.

Status: 200 OK

{
"total": 7, "per_page": "2", "current_page": 1, "last_page": 4, "next_page_url": "https://api.teachlr.com/escuela...eba/api/careers?page=2", "prev_page_url": null, "from": 1, "to": 2, "data": [ {  

"id": 10, "name": "Nemo enim ipsam", "description": "Ut enim ad minima veniam", "slug": "nemo-enim-ips", "num_users": 14, "num_courses": 3, "num_badges": 0, "num_sales": 2, "is_public": true, "created_at": "2018-07-16 21:08:54", "price": "15", "url": "https://escuel...teachlr.com/#careers-online/nemo-enim-ips", "courses": [ { 

"id": 21, "title": "Aenean commodo ligula", "headline": "Cum sociis natoque penatibus et magnis dis partur", "cover": { "thumb": "https://d2j3j1v.../covers/1487606501-118x66.jpg", "small": "https://d2j3j1v.../covers/1487606501-222x125.jpg", "medium": "https://d2j3j1v.../covers/1487606501-236x132.jpg", "large": "https://d2j3j1v.../covers/1487606501-506x285.jpg" }, "slug": "aenean-commodo-ligula", "status": "active", "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" } 
], "url": "https://es...com/#courses-online/aenean-commodo-ligula", "author_url": null, "is_purchased": false, "pivot": { 
"career_id": 10, "course_id": 21, "order": 0 } }, { 
"id": 41, "title": "Donec quam felis, ultricies nec", "headline": "Pellentesque eu, pretium quis, sem", "cover": { 
"thumb": "https://d2j3j1v.../img/course_cover-118x66.jpg", "small": "https://d2j3j1v.../img/course_cover-222x125.jpg", "medium": "https://d2j3j1v.../img/course_cover-236x132.jpg", "large": "https://d2j3j1v.../img/course_cover-506x285.jpg" }, "slug": "donec-quam-felis-ult", "status": "active", "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" } ], "url": "https://es...com/#courses-online/donec-quam-felis-ult", "author_url": "https://teachlr.com/irvingjm", "is_purchased": true "pivot": { 
"career_id": 10, "course_id": 41, "order": 0 } } ] }, { 
"id": 17, "name": "In enim justo", "description": "Nullam dictum felis eu pede mollis pretium",
"slug": "in-enim-justo", "num_users": 9, "num_courses": 3, "num_badges": 7, "num_sales": 6, "is_public": true, "created_at": "2018-11-20 09:53:09", "price": "22", "url": "https://escuel...teachlr.com/#careers-online/in-enim-justo", "courses": [ 

"id": 70, "title": "Integer tincidunt", "headline": "Vivamus elementum semper nisi!", "cover": { 
"thumb": "https://d2j3j1v.../img/course_cover-118x66.jpg", "small": "https://d2j3j1v.../img/course_cover-222x125.jpg", "medium": "https://d2j3j1v.../img/course_cover-236x132.jpg", "large": "https://d2j3j1v.../img/course_cover-506x285.jpg" }, "slug": "integer-tincidunt", "status": "active", "author_about": null, "author_picture": null, "author_username": null, "author_headline": null, "author_name": null, "author_last_name": null, "author_country": null, "instructors": [ 

"username": "luismeza", "name": "Luis", "last_name": "Meza", "email": "luisameza@dominio.com" } ], "url": "https://escuel...com/#courses-online/integer-tincidunt", "author_url": null, "is_purchased": false, "pivot": { 
"career_id": 17, "course_id": 70, "order": 0 } } ] } ] }

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) carreras por página. El atributo total indica la cantidad total de carreras 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 carreras con los parámetros especificados. El atributo total indica la cantidad total de carreras 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.