Para listar las transacciones 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/transactions
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 | 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.
Opcionalmente, se puede agregar un ID de transacción al final del URL para obtener la información de esa transacción específica:
https://api.teachlr.com/<dominio>/api/transactions/<id_transaccion>
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:
?date_from=2021-03-01&date_to=2021-03-31&format=netsuite&sort=date&ord=desc
Los distintos parámetros que se pueden especificar y sus posibles valores se detallan a continuación:
Parámetro | date_from |
Valor | Fecha en formato yyyy-mm-dd |
Significado | Transacciones desde la fecha especificada. Si no se especifica el parámetro date_to, se obtendrán los registros de los 12 meses siguientes a la fecha especificada. |
Ejemplo | date_from=2021-03-01 |
Parámetro | date_to |
Valor | Fecha en formato yyyy-mm-dd |
Significado | Transacciones hasta la fecha especificada. Si no se especifica el parámetro date_from, se obtendrán los registros de los 12 meses antes de la fecha especificada. |
Ejemplo | date_to=2021-03-31 |
Nota: Si se especifica tanto el parámetro date_from como date_to, se debe contemplar un rango de máximo 12 meses, de lo contrario se obtendrá un error. Si no se especifica ni date_from ni date_to, se obtendrán las transacciones desde hace 12 meses atrás, contados desde la fecha actual.
Parámetro | format |
Valor | default | netsuite |
Valor por defecto | default |
Significado | Transacciones en el formato especificado |
Ejemplo | format=netsuite |
Nota: El formato netsuite requiere que la escuela tenga registrada su cédula jurídica, de lo contrario se obtendrá un error.
Parámetro | status |
Valor | all | successful | failed | canceled |
Valor por defecto | successful |
Significado | Transacciones con el estado especificado |
Ejemplo | status=failed |
Parámetro | item_type |
Valor | all | course | career | subscription |
Valor por defecto | all |
Significado | Tipo de ítem (todos, curso, carrera, suscripción) |
Ejemplo | item_type=course |
Parámetro | currency |
Valor | any | código ISO 4217 de 3 letras para monedas |
Valor por defecto | any |
Significado | Moneda usada en la transacción |
Ejemplo | currency=USD |
Parámetro | sort |
Valor | id | description | amount | payment_method | date | status | identifier | item_type | coupon_code | instructors_names | username | name | last_name |
Valor por defecto | date |
Significado | Atributo por el cual se deben ordenar los cursos: id: ID de la transacción. description: título del curso, título de la carrera o nombre del plan. amount: monto de la transacción. payment_method: nombre del método de pago utilizado. date: fecha de la transacción. status: estado de la transacción (exitosa, fallida, cancelada). identifier: identificador de la transacción del método de pago. coupon_code: código de cupón utilizado (cuando aplique). instructors_names: nombre de los instructores (cuando aplique). username: usuario de quien realizó la operación. name: nombre del usuario que realizó la operación. last_name: apellido del usuario que realizó la operación. |
Ejemplo | sort=payment_method (ordenados por método de pago) |
Parámetro | ord |
Valor | asc | desc |
Valor por defecto | asc |
Significado | Tipo de ordenamiento: asc: ascendente desc: descendente |
Ejemplo | ord=desc (ordenados descendentemente) |
Parámetro | search |
Valor | Palabra o frase |
Significado | Transacciones que contengan la palabra o frase especificada como parte del contenido de cualquiera de los atributos especificados en el parámetro sort |
Ejemplo | search=stripe |
Caso de ejemplo:
Se desea obtener el listado de transacciones exitosas de compra de cursos únicamente, en dólares estadounidenses, realizadas en el mes de marzo de 2021 de la escuela https://escueladeprueba.teachlr.com, con la frase «mercadeo», ordenados por descripción (título del curso), descendentemente.
La petición al API de Teachlr Organizaciones se debe hacer al siguiente URL:
https://api.teachlr.com/escueladeprueba/api/transactions?item_type=course ¤cy=USD&date_from=2021-03-01&date_to=2021-03-31&search=mercadeo
&sort=description&ord=desc
Una implementación utilizando la función $.ajax() de jQuery sería como sigue:
$.ajax({
url: "https://api.teachlr.com/escueladeprueba/api/transactions?
item_type=course¤cy=USD&date_from=2021-03-01&date_to=2021-03-31
&search=mercadeo&sort=description&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": 318,
"organization_id": 1,
"date": "2021-03-21 16:41:08",
"detail_id": 1,
"detail_type": "Course",
"type_sale": "Course",
"marketplace_id": 0,
"description": "Publicidad y Mercadeo",
"currency": "USD",
"amount": "15",
"original_price": "15",
"affiliate_percent": "0",
"payment_method": "Stripe",
"status": "Successful",
"identifier": "ch_1I0vBlAdGIOqh2q9yGfDY68d",
"instructors_names": "Pedro Pérez",
"coupon_code": null,
"user_id": 5,
"username": "luisvelasquez",
"name": "Luis",
"last_name": "Velásquez",
"identification_number": "14275521",
"user_email": "luisvelasquez@dominio.com"
},
{
"id": 299,
"organization_id": 1,
"date": "2021-03-24 15:05:45",
"detail_id": 88,
"detail_type": "Course",
"type_sale": "Course",
"marketplace_id": 0,
"description": "Mercadeo y Ventas",
"currency": "USD",
"amount": "19",
"original_price": "19",
"affiliate_percent": "0",
"payment_method": "PayPal",
"status": "Successful",
"identifier": "PAYID-L4NTB2Y2ME74602058453805",
"instructors_names": "Irving Martínez",
"coupon_code": null,
"user_id": 139,
"username": "danielfuentes",
"name": "Daniel",
"last_name": "Fuentes",
"identification_number": "45214528",
"user_email": "danielfuentes@dominio.com"
},
{
"id": 244,
"organization_id": 1,
"date": "2021-03-20 11:53:37",
"detail_id": 9,
"detail_type": "Course",
"type_sale": "Course",
"marketplace_id": 0,
"description": "Curso de Gerencia en Mercadeo y Ventas",
"currency": "USD",
"amount": "0",
"original_price": "5",
"affiliate_percent": "0",
"payment_method": "Coupon100",
"status": "Successful",
"identifier": "CPN-3336E493E8C8B4B89B9DA8128FEC40FE",
"instructors_names": "Andres Fuentes, Héctor López",
"coupon_code": "CUPON100",
"user_id": 323,
"username": "adrianmontenegro",
"name": "Adrian",
"last_name": "Montenegro",
"identification_number": null,
"user_email": "adrianmontenegro@dominio.com"
},
{
"id": 189,
"organization_id": 1,
"date": "2021-03-06 15:40:42",
"detail_id": 51,
"detail_type": "Course",
"type_sale": "Affiliate",
"marketplace_id": 2,
"description": "Aprende sobre Mercadeo Digital",
"currency": "USD",
"amount": "14.52",
"original_price": "17.5",
"affiliate_percent": "32.7",
"payment_method": "Stripe",
"status": "Successful",
"identifier": "ch_1D7TLKAdGIOqh2q9qy3mR9W7",
"instructors_names": "Arturo González",
"coupon_code": PRUEBACUPON,
"user_id": 98,
"username": "pedroprez",
"name": "Pedro",
"last_name": "Pérez",
"identification_number": null,
"user_email": "pedroperez@dominio.com"
}
]
Esta respuesta se obtiene cuando la petición fue exitosa. La respuesta de ejemplo muestra el formato de respuesta con un arreglo que contiene cuatro (4) transacciones que cumplen con los parámetros especificados.
A continuación, se muestra la misma respuesta cuando se especifica el parámetro format=netsuite teniendo la escuela la cédula jurídica 1000000001:
[
{
"cliente": {
"nombre": "Escuela de Prueba, C.A.",
"correo_electronico": "escueladeprueba@dominio.com",
"correos_copia": [],
"identificacion": {
"tipo": "02",
"numero": "1000000001"
}
},
"detalle": [
{
"cantidad": "1.000",
"unidadMedida": "",
"idItem": 1,
"detalle": "Publicidad y Mercadeo",
"precio_unitario": "15.00000",
"monto_total": "15.00000",
"descuento": "0.00000",
"monto_descuento": "0.00000",
"subtotal": "15.00000",
"impuesto_Linea": "0.00",
"impuesto": "0.00",
"tasa_Impuesto": 0,
"base_Impuestos": "0.00000",
"impuestoneto": "0.00000",
"baseimponible": "0.00000",
"unidad_medida": "Sp",
"unidad_medida_comercial": "Sp",
"montototalitem": "15.00000",
"montototallinea": "15.00000"
}
]
},
{
"cliente": {
"nombre": "Escuela de Prueba, C.A.",
"correo_electronico": "escueladeprueba@dominio.com",
"correos_copia": [],
"identificacion": {
"tipo": "02",
"numero": "1000000001"
}
},
"detalle": [
{
"cantidad": "1.000",
"unidadMedida": "",
"idItem": 88,
"detalle": "Mercadeo y Ventas",
"precio_unitario": "19.00000",
"monto_total": "19.00000",
"descuento": "0.00000",
"monto_descuento": "0.00000",
"subtotal": "19.00000",
"impuesto_Linea": "0.00",
"impuesto": "0.00",
"tasa_Impuesto": 0,
"base_Impuestos": "0.00000",
"impuestoneto": "0.00000",
"baseimponible": "0.00000",
"unidad_medida": "Sp",
"unidad_medida_comercial": "Sp",
"montototalitem": "19.00000",
"montototallinea": "19.00000"
}
]
},
{
"cliente": {
"nombre": "Escuela de Prueba, C.A.",
"correo_electronico": "escueladeprueba@dominio.com",
"correos_copia": [],
"identificacion": {
"tipo": "02",
"numero": "1000000001"
}
},
"detalle": [
{
"cantidad": "1.000",
"unidadMedida": "",
"idItem": 9,
"detalle": "Curso de Gerencia en Mercadeo y Ventas",
"precio_unitario": "5.00000",
"monto_total": "5.00000",
"descuento": "100.00000",
"monto_descuento": "5.00000",
"subtotal": "0.00000",
"impuesto_Linea": "0.00",
"impuesto": "0.00",
"tasa_Impuesto": 0,
"base_Impuestos": "0.00000",
"impuestoneto": "0.00000",
"baseimponible": "0.00000",
"unidad_medida": "Sp",
"unidad_medida_comercial": "Sp",
"montototalitem": "0.00000",
"montototallinea": "0.00000"
}
]
},
{
"cliente": {
"nombre": "Escuela de Prueba, C.A.",
"correo_electronico": "escueladeprueba@dominio.com",
"correos_copia": [],
"identificacion": {
"tipo": "02",
"numero": "1000000001"
}
},
"detalle": [
{
"cantidad": "1.000",
"unidadMedida": "",
"idItem": 51,
"detalle": "Aprende sobre Mercadeo Digital",
"precio_unitario": "17.50000",
"monto_total": "17.50000",
"descuento": "17.02857",
"monto_descuento": "2.98000",
"subtotal": "14.52000",
"impuesto_Linea": "0.00",
"impuesto": "0.00",
"tasa_Impuesto": 0,
"base_Impuestos": "0.00000",
"impuestoneto": "0.00000",
"baseimponible": "0.00000",
"unidad_medida": "Sp",
"unidad_medida_comercial": "Sp",
"montototalitem": "14.52000",
"montototallinea": "14.52000"
}
]
}
]
Status: 200 OK
[]
Esta respuesta se obtiene cuando la petición fue exitosa. La respuesta de ejemplo muestra el formato de respuesta con un arreglo vacío, es decir, la escuela no tiene transacciones 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.
Status: 422 Unprocessable Entity
{
"errors": {
"date_from": [
{
"code": "dateformat_rule_error"
}
]
}
}
Esta respuesta se obtiene cuando lo que se especificó en el parámetro «date_from» no es una fecha válida y/o no tiene el formato yyyy-mm-dd.
Status: 422 Unprocessable Entity
{
"errors": {
"date_to": [
{
"code": "dateformat_rule_error"
}
]
}
}
Esta respuesta se obtiene cuando lo que se especificó en el parámetro «date_to» no es una fecha válida y/o no tiene el formato yyyy-mm-dd.
Status: 422 Unprocessable Entity
{
"errors": {
"dates": [
{
"code": "out_of_range_error"
}
]
}
}
Esta respuesta se obtiene cuando el rango establecido entre los parámetros «date_from» y «date_to» es mayor a 12 meses.
Status: 422 Unprocessable Entity
{
"errors": {
"dates": [
{
"code": "range_error"
}
]
}
}
Esta respuesta se obtiene cuando el rango establecido entre los parámetros «date_from» y «date_to» es incorrecto (fecha «desde» superior a la fecha «hasta»).
Status: 422 Unprocessable Entity
{
"errors": {
"legal_id": [
{
"code": "required_rule_error"
}
]
}
}
Esta respuesta se obtiene cuando se especifica el parámetro format=netsuite y la escuela no tiene registrada su cédula jurídica.
Status: 422 Unprocessable Entity
{
"errors": {
"legal_id": [
{
"code": "format_rule_error"
}
]
}
}
Esta respuesta se obtiene cuando se especifica el parámetro format=netsuite y la cédula jurídica de escuela no tiene un formato válido, el cual debe contener 10 dígitos, sin cero al inicio y sin guiones.
Leave A Comment?