Bsale API Despachos

El equipo de Bsale ha puesto a disposición de la comunidad de desarrolladores endpoints y webhooks para la comunicación con distintos tipos de courriers de envíos. Pudiendo notificar despachos, estados de éstos y obtención de sus detalles.

Diagrama de flujo

Vista

Endpoints

Obtener orden

GET /v1/couriers/orders/:id.json

Endpoint que retorna la información de una orden para un courier

Parámetros

  • id: id de la orden (Integer)

  • expand: indicar opcional para expandir nodos (String)

Respuesta


{

"code": 200,

"data": {

"id": 3,

"originAddress": "Calle La Republica 811",

"originLatitud": "",

"originLongitude": "",

"destinationAddress": "Perú, Junín, Calle San Jose, San Ramón, 310",

"destinationLatitud": "",

"destinationLongitude": "0",

"contactFirstName": "Stefany Milagros",

"contactLastName": "Palma Giron",

"contactEmail": "sgcobranzas@gmail.com",

"contactRut": "",

"contactPhone": "941257211",

"comment": "A dos cuadras del colegio Sagrado Corazon de Jesús",

"type": "Express Delivery",

"courierId": 2,

"sellerId": 1,

"stateId": 1,

"details": [

{

"id": 2,

"description": "el ananá de Pablo HUESO",

"quantity": 1.0,

"weight": 5.0,

"length": 5.0,

"width": 5.0,

"height": 5.0

}

]

}

}

Donde:

  • id(Integer): id de la orden

  • originAddress(String): dirección de origen

  • originLatitud(String): latitud de origen

  • originLongitude(String): longitud de origen

  • destinationAddress(String): dirección de destino

  • destinationLatitud(String): latitud de origen

  • destinationLongitude(String): longitud de origen

  • contactFirstName(String): nombre del destinatario

  • contactLastName(String): apellido del destinatario

  • contactEmail(String): email destinatario

  • contactRut(String): rut destinatario

  • contactPhone(String): teléfono destinatario

  • comment(String): comentario opcional

  • type(String): tipo de despacho

  • courierId(Integer): id del courier

  • sellerId(Integer): id del courier

  • details: detalle del despacho (expand: orders.details)

Envía estados del despacho

POST /v1/logs.json

Endpoint que registra de movimientos y estados del despacho

Parámetros

  • id: id de la orden (Integer)

  • description: descripción del detalle (String)

  • stateId: id del estado (Integer)

Respuesta


{

"orderId": 2,

"description": "paquete despachado",

"stateId": 1

}

Obtener información de empresa

GET /v1/couriers/sellers/all.json

Endpoint que retorna las empresas asociadas al courier

Parámetros

  • id: id de la empresa (Integer)

  • name: nombre de la empresa (String)

  • rut: rut de la empresa (String)

Respuesta


{

"code": 200,

"href": "http://13.52.251.252:8383/v1/couriers/sellers/all.json",

"count": 1,

"limit": 25,

"offset": 0,

"data": [

{

"id": 1,

"name": "empresa",

"rut": "11.111.111-1"

}

]

}

Webhooks

Estructura JSON

Se realizará una petición POST al endpoint que designe el Courier, la cual contendrá en su cuerpo el siguiente detalle;

{

"sellerId”: 33345,

"resource":"/v1/orders/333.json",

"resourceId":”333",

"topic":”courierOrder",

"action":”POST",

"send”: 1595597064

}

  • sellerId: id de la empresa que solicita la orden (Integer)

  • resource: Endpoint para obtener la información del recurso (String)

  • resourceId: id del recurso notificado (String)

  • topic: motivo o recurso de la notificación (String)

  • action: verbo REST de la notificación (String)

  • send: UNIX Timestamp de la notificación (Integer)