Cómo listar las transacciones de una escuela usando el API de Teachlr Organizaciones.

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 &currency=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&currency=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?