Por medio de un request GET puede obtenerse una lista filtrada, paginada y ordenada de cualquier endpoint que implemente la librería filters-util. Los diferentes criterios de búsqueda se pasan como query string parameters en la URL.
En este apartado explicaremos cómo construir una URL compatible con el uso de esta librería.
Tipos de parámetro
El servicio de búsqueda está preparado para recibir los siguientes parámetros en la URL, todos opcionales:
filters[ ]
Construido en semejanza a un array de objetos, contiene a los campos por los cuáles realizar la búsqueda y sus valores. Por cada elemento se esperan los siguientes atributos:
- field: Nombre del campo
- value: Valor del campo
- operation: Operación aplicada entre el campo y el valor. Las operaciones disponibles están especificadas aquí.
sorts[ ]
Es otro array de las mismas características que contiene los criterios de ordenamiento. Sus claves son:
- <nombre del campo>: La clave debe ser el nombre del campo a ordenar. Su valor va a ser la dirección del ordenamiento (ascending/descending)
- <nombre del campo>: La clave debe ser el nombre del campo a ordenar. Su valor va a ser la dirección del ordenamiento (ascending/descending)
limit
Indica la cantidad de registros por página
page
Indica el número de página a obtener
https://api.paypertic.com/pagos?filters[0]field=status&filters[0]operation=EQUAL&filters[0]value=approved&filters[1]field=request_date&filters[1]operation=GREATER_THAN_OR_EQUAL_TO&filters[1]value=20191006T060000-0000&sorts[0]collector_id=ascending&limit=10&page=1
En el ejemplo se piden aquellos pagos cuyo estado sea aprobado y su fecha de envío sea igual o mayor al 06/10/2019 6:00. La lista se ordena por collector_id de forma ascendente y se solicita la primer página. Los pagos obtenidos se agrupan de a 10 registros por página.
Resultado
El cuerpo del response obtenido luego de una operación exitosa será un objeto JSON con la siguiente estructura:
- page: Número de página del listado
- limit: Cantidad de registros por página
- size: Cantidad total de registros
- rows: Array conteniendo el listado de objetos
{ "page": 1, "limit": 10, "size": 23, "rows": [ { "id": "11111111-1111-1111-1111-111111111111", "external_transaction_id": "123456789", "collector_id": "999", "collector_detail": { "name": "PRUEBA" }, "status": "approved", "request_date": "2019-10-06T06:01:30+0000", (...) }, { "id": "22222222-2222-2222-2222-222222222222", "external_transaction_id": "987654321", "collector_id": "1000", "collector_detail": { "name": "PRUEBA" }, "status": "approved", "request_date": "2019-10-07T11:21:10+0000", (...) }, (...) ] }
Operaciones disponibles
Operación | Valor esperado | Descripción |
---|---|---|
EXISTS | Boolean (true / false) | Consulta si el campo proporcionado existe o no en el objeto |
EQUAL | Texto, Número o Fecha | Compara por igualdad |
NOT_EQUAL | Texto, Número o Fecha | Compara por desigualdad |
GREATER_THAN | Texto, Número o Fecha | Compara por mayor estricto |
GREATER_THAN_OR_EQUAL_TO | Texto, Número o Fecha | Compara por mayor o igual |
LESS_THAN | Texto, Número o Fecha | Compara por menor estricto |
LESS_THAN_OR_EQUAL_TO | Texto, Número o Fecha | Compara por menor o igual |
IN | Lista [valor1,valor2,...] | Consulta si el valor del campo está incluído dentro del conjunto proporcionado. Incluir corchetes. |
NOT_IN | Lista [valor1,valor2,...] | Consulta si el valor del campo no está incluído dentro del conjunto proporcionado. Incluir corchetes. |
CONTAINS | String | Consulta si el valor del campo tiene como subcadena al valor proporcionado |
STARTS_WITH | String | Consulta si el valor del campo comienza con el valor proporcionado |
ENDS_WITH | String | Consulta si el valor del campo finaliza con el valor proporcionado |
Errores comunes
{ "code": 400, "message": "<nombre del campo> can not be filter.", "extended_code": 4601 }
{ "code": 400, "message": "Invalid field \"<nombre del campo>\".", "extended_code": 4601 }
{ "code": 400, "message": "No enum constant com.paypertic.filter.util.enums.Operation.<OPERACIÓN>", "extended_code": 4601 }
{ "code": 400, "message": "<nombre_del campo> can not be filtered with <OPERACIÓN>.", "extended_code": 4601 }
Si el error que recibe no se encuentra resuelto en este apartado, le rogamos comunicarse con nuestro equipo de soporte.