Cómo obtener los detalles de una carrera de una escuela usando el API de Teachlr Organizaciones

Para obtener los detalles de una carrera de una escuela de Teachlr Organizaciones se debe realizar una petición GET al API de Teachlr Organizaciones utilizando el siguiente URL:

https://api.teachlr.com/<dominio>/api/careers-online/<slug>

en donde <dominio> se debe sustituir por el dominio teachlr de la escuela (no el dominio personalizado) y <slug> por el slug de la carrera de la cual se desea obtener los detalles.

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

Key Value
Content-Type application/json
Authorization 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.

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

?courses=true&badges=false

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

Parámetro courses
Valor true | false
Valor por defecto true
Significado Incluir el detalle de los cursos contenidos en la carrera
Ejemplo courses=false (no incluir el detalle de los cursos)
Parámetro badges
Valor true | false
Valor por defecto true
Significado Incluir el detalle de las insignias de la carrera
Ejemplo badges=false (no incluir el detalle de las insignias)
Parámetro category
Valor El slug de la categoría
Significado Filtrar el listado de cursos de la carrera con sólo aquellos cursos bajo la categoría especificada
Ejemplo category=mercadeo
Parámetro subcategory
Valor El slug de la subcategoría
Significado Filtrar el listado de cursos de la carrera con sólo aquellos cursos bajo la subcategoría especificada
Ejemplo subcategory=mercadeo-digital
Parámetro categories
Valor true | false
Valor por defecto true
Significado Incluir el detalle de las categorías y subcategorías de la carrera
Ejemplo categories=false (no incluir el detalle de las categorías)
Parámetro sort_courses
Valor id | title | headline | description | slug | visits | created_at | status | popular | sales | rating | views
Valor por defecto created_at
Significado Atributo por el cual se deben ordenar los cursos de la carrera: id: ID del curso. title: título del curso. headline: subtítulo del curso. description: descripción del curso. slug: slug del curso. visits: número de visitas a la descripción del curso. created_at: fecha de creación. status: estado del curso (borrador, pendiente, activo, desactivado). popular: cantidad de usuarios suscritos. sales: número de ventas. rating: valoración del curso. views: número de visitas a la vista del curso.
Ejemplo sort_courses=title (ordenados por título)
Parámetro ord_courses
Valor asc | desc
Valor por defecto asc
Significado Tipo de ordenamiento de los cursos de la carrera: asc: ascendente desc: descendente
Ejemplo ord_courses=desc (ordenados descendentemente)
Parámetro lang
Valor Código ISO 639-1 (código de 2 letras que representan un idioma)
Significado Se establece para poder hacer uso del parámetro multi_lang
Ejemplo lang=es (idioma español)
Parámetro multi_lang
Valor true | false
Valor por defecto true (todos los idiomas)
Significado Mostrar el nombre de las categorías/subcategorías en todos los idiomas o únicamente en el idioma especificado en el parámetro lang
Ejemplo multi_lang=false (sólo en el idioma especificado en lang)

Caso de ejemplo:

Se desea obtener la información de una carrera con el slug «marketing-digital» de la escuela https://escueladeprueba.teachlr.com.

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

https://api.teachlr.com/escueladeprueba/api/careers-online/marketing-digital

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

$.ajax({
    url:"https://api.teachlr.com/escueladeprueba/api/careers-online/marketing-digital",
	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": 17,
  "name": "Lorem ipsum dolor sit amet",
  "description": "Aenean commodo ligula eget dolor",
  "language": "es",
  "slug": "lorem-ipsum",
  "num_users": 9,
  "num_courses": 3,
  "num_badges": 7,
  "created_at": "2018-11-20 09:53:09",
  "is_public": true,
  "price": "22",
  "currency": "USD",
  "categories": [
    {
      "id": 10,
      "slug": "salud-y-fitness",
      "tx_name_en": "Health and Fitness",
      "tx_name_es": "Salud y Fitness",
      "tx_name_fr": "Santé et Fitness",
      "co_parent": -1,
      "subcategories": [
        {
          "id": 15,
          "slug": "yoga",
          "tx_name_en": "Yoga",
          "tx_name_es": "Yoga",
          "tx_name_fr": "Yoga",
          "co_parent": 10
        }
      ]
    },
    {
      "id": 11,
      "slug": "idiomas",
      "tx_name_en": "Languages",
      "tx_name_es": "Idiomas",
      "tx_name_fr": "Langues",
      "co_parent": -1,
      "subcategories": [
        {
          "id": 19,
          "slug": "frances",
          "tx_name_en": "French",
          "tx_name_es": "Francés",
          "tx_name_fr": "Français",
          "co_parent": 11
        },
        {
          "id": 13,
          "slug": "ingles",
          "tx_name_en": "English",
          "tx_name_es": "Inglés",
          "tx_name_fr": "Anglais",
          "co_parent": 11
        }
      ]
    }
  ],
  "has_coupons": true,
  "url": "https://escueladeprueba.teachlr.com/#careers-online/lorem-ipsum",
  "settings": {
    "id": 5,
    "career_id": 17,
    "deactivation_date": null,
    "assignment_time": null,
    "completation_setting": 100,
    "sequence": "None",
    "price": "22",
    "created_at": "2018-11-20 09:53:27",
    "updated_at": "2018-11-20 09:53:27"
  },
  "courses": [
    {
      "id": 70,
      "title": "Curso 1",
      "headline": "Donec quam felis, ultricies nec",
      "language": "es",
      "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": "course-1",
      "expired": false,
      "is_public": true,
      "in_home": true,
      "created_at": "2016-07-25 15:23:18",
      "status": "active",
      "num_sales": 0,
      "visits": 0,
      "views": 0,
      "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",
          "about": "Donec quam felis, ultricies nec",
          "job": "Desarrollador de software",
          "department": "Informática",
          "picture": {
              "thumb": "https://d2j3j1vpt0andh.../avatars/D02-32x32.jpg",
              "small": "https://d2j3j1vpt0andh.../avatars/D02-54x54.jpg",
              "medium": "https://d2j3j1vpt0andh.../avatars/D02-64x64.jpg",
              "medium_large": "https://d2j3j1vpt0andh.../avatars/D02-98x98.jpg",
              "large": "https://d2j3j1vpt0andh.../avatars/D02-198x198.jpg"
          }
        }
      ],
      "category": {
        "id": 11,
        "slug": "idiomas",
        "tx_name_en": "Languages",
        "tx_name_es": "Idiomas",
        "tx_name_fr": "Langues",
        "co_parent": -1
      },
      "subcategory": {
        "id": 13,
        "slug": "ingles",
        "tx_name_en": "English",
        "tx_name_es": "Inglés",
        "tx_name_fr": "Anglais",
        "co_parent": 11
      },
      "num_chapters": 1,
      "duration_unit": "Seconds",
      "duration_time": 231,
      "currency": "USD",
      "url": "https://escueladeprueba.teachlr.com/#courses-online/curso-1",
      "author_url": null,
      "is_purchased": false,
      "pivot": {
        "career_id": 17,
        "course_id": 70,
        "order": 0
      },
      "chapters": [
        {
          "id": 73,
          "title": "Capítulo 1",
          "order": 0,
          "course_id": 70,
          "available_at": null,
          "contents": [
            {
              "id": 339,
              "order": 0,
              "detail_id": 301,
              "detail_type": "App\\Lecture",
              "chapter_id": 73,
              "created_at": "2019-03-14 17:22:03",
              "updated_at": "2019-03-14 17:22:03",
              "available_at": null,
              "detail": {
                "id": 301,
                "title": "Aenean vulputate eleifend tellus.",
                "number": 1,
                "type": 0,
                "description": "Maecenas tempus, tellus eget condimentum rhoncus",
                "duration": 48,
                "preview": false,
                "thumb": "https://i.vimeocdn.com/video/524720241_640.jpg",
                "json_data": null,
                "attachments": [
                  
                ]
              }
            },
            {
              "id": 340,
              "order": 1,
              "detail_id": 302,
              "detail_type": "App\\Lecture",
              "chapter_id": 73,
              "created_at": "2019-03-14 17:22:51",
              "updated_at": "2019-03-14 17:22:51",
              "available_at": null,
              "detail": {
                "id": 302,
                "title": "Aliquam lorem ante, dapibus in",
                "number": 2,
                "type": 0,
                "description": null,
                "duration": 183,
                "preview": false,
                "thumb": "https://i.ytimg.com/vi/69ZtuVluvDI/mqdefault.jpg",
                "json_data": null,
                "attachments": [
                  
                ]
              }
            }
          ]
        }
      ],
      "objectives": [
        
      ]
    },
    {
      "id": 35,
      "title": "Curso 2",
      "headline": "Nulla consequat massa quis enim",
      "language": "en",
      "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": "course-2",
      "expired": false,
      "is_public": false,
      "in_home": false,
      "created_at": "2016-07-25 15:23:30",
      "status": "active",
      "num_sales": 0,
      "visits": 27,
      "views": 12,
      "total_rate": "2.25",
      "price": 0,
      "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": "luisvelasquez",
          "name": "Luis",
          "last_name": "Velásquez",
          "email": "luisvelasquez@dominio.com",
          "about": null,
          "job": null,
          "department": null,
          "picture": {
              "thumb": "https://d2j3j1vpt0.../default_user_icon-32x32.jpg",
              "small": "https://d2j3j1vpt0.../default_user_icon-54x54.jpg",
              "medium": "https://d2j3j1vpt0.../default_user_icon-64x64.jpg",
              "medium_large": "https://d2j3j1vpt0.../default_user_icon-98x98.jpg",
              "large": "https://d2j3j1vpt0.../default_user_icon-198x198.jpg"
          }
        },
        {
          "username": "mariaperez",
          "name": "María",
          "last_name": "Pérez",
          "email": "mariaperez@dominio.com",
          "about": null,
          "job": null,
          "department": null,
          "picture": {
              "thumb": "https://d2j3j1vpt0.../default_user_icon-32x32.jpg",
              "small": "https://d2j3j1vpt0.../default_user_icon-54x54.jpg",
              "medium": "https://d2j3j1vpt0.../default_user_icon-64x64.jpg",
              "medium_large": "https://d2j3j1vpt0.../default_user_icon-98x98.jpg",
              "large": "https://d2j3j1vpt0.../default_user_icon-198x198.jpg"
          }
        }
      ],
      "category": null,
      "subcategory": null,
      "num_chapters": 1,
      "duration_unit": "Seconds",
      "duration_time": 584,
      "currency": "USD",
      "url": "https://escueladeprueba.teachlr.com/#courses-online/curso-2",
      "author_url": "https://teachlr.com/irvingjm",
      "is_purchased": true,
      "pivot": {
        "career_id": 17,
        "course_id": 35,
        "order": 0
      },
      "chapters": [
        {
          "id": 55,
          "title": "Capítulo I",
          "order": 0,
          "course_id": 35,
          "available_at": null,
          "contents": [
            {
              "id": 172,
              "order": 0,
              "detail_id": 161,
              "detail_type": "App\\Lecture",
              "chapter_id": 55,
              "created_at": "2017-05-31 16:00:48",
              "updated_at": "2018-05-04 13:17:26",
              "available_at": null,
              "detail": {
                "id": 161,
                "title": "Nullam dictum felis eu pede mollis pretium",
                "number": 1,
                "type": 0,
                "description": null,
                "duration": 561,
                "preview": false,
                "thumb": "https://i.vimeocdn.com/video/91941467_640.jpg",
                "json_data": null,
                "attachments": [
                  
                ]
              }
            },
            {
              "id": 286,
              "order": 1,
              "detail_id": 260,
              "detail_type": "App\\Lecture",
              "chapter_id": 55,
              "created_at": "2018-08-01 01:24:56",
              "updated_at": "2018-08-01 01:24:56",
              "available_at": null,
              "detail": {
                "id": 260,
                "title": "Vivamus elementum semper nisi",
                "number": 2,
                "type": 0,
                "description": "Donec vitae sapien ut libero venenatis faucibus",
                "duration": 23,
                "preview": false,
                "thumb": "https://i.vimeocdn.com/video/166613737_640.jpg",
                "json_data": null,
                "attachments": [
                  
                ]
              }
            }
          ]
        }
      ],
      "objectives": [
        {
          "id": 37,
          "objective": "Donec pede justo, fringilla vel, aliquet nec, vulp",
          "order": 1
        }
      ]
    }
  ],
  "badges": [
    {
      "id": 2,
      "title": "Insignia I",
      "description": "Curabitur ullamcorper ultricies nisi",
      "picture": "https://d2j3j1vpt0.../badges/156516516.jpg",
      "num_users": 34,
      "num_groups": 16,
      "organization_id": 1,
      "created_at": "2017-07-28 00:17:08",
      "updated_at": "2019-09-13 12:22:06",
      "num_careers": 2,
      "pivot": {
        "career_id": 17,
        "badge_id": 2
      }
    },
    {
      "id": 5,
      "title": "Insignia II",
      "description": null,
      "picture": "https://d2j3j1vpt0.../badges/156516516.jpg",
      "num_users": 22,
      "num_groups": 4,
      "organization_id": 1,
      "created_at": "2017-07-28 00:18:14",
      "updated_at": "2019-09-13 12:22:06",
      "num_careers": 2,
      "pivot": {
        "career_id": 17,
        "badge_id": 5
      }
    }
  ]
}

Esta respuesta se obtiene cuando la petición fue exitosa. La respuesta de ejemplo muestra los detalles de la carrera con el detalle de los cursos y las insignias.

Nota: Utilizando como ejemplo los parámetros lang=es y multi_lang=false, la estructura de las categorías y subcategorías de la carrera se mostrará así:

"categories": [
    {
      "id": 10,
      "slug": "salud-y-fitness",
      "name": "Salud y Fitness",
      "co_parent": -1,
      "subcategories": [
        {
          "id": 15,
          "slug": "yoga",
          "name": "Yoga",
          "co_parent": 10
        }
      ]
    },
    {
      "id": 11,
      "slug": "idiomas",
      "name": "Idiomas",
      "co_parent": -1,
      "subcategories": [
        {
          "id": 19,
          "slug": "frances",
          "name": "Francés",
          "co_parent": 11
        },
        {
          "id": 13,
          "slug": "ingles",
          "name": "Inglés",
          "co_parent": 11
        }
      ]
    }
  ],

Y, para los cursos:

"category": {
  "id": 11,
  "slug": "idiomas",
  "name": "Idiomas",
  "co_parent": -1
},
"subcategory": {
  "id": 13,
  "slug": "ingles",
  "name": "Inglés",
  "co_parent": 11
},

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.

Leave A Comment?