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.
Para autenticar las peticiones en todos los endpoints se debe enviar en la cabecera el parámetro access_token.

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": 32,

"origin": {

"country": "Chile",

"state": "Región Metropolitana",

"city": "Santiago",

"district": "Buin",

"address": "Camino Padre Hurtado 5696",

"zipcode": "",

"latitude": "0.0",

"longitude": "0.0"

},

"destination": {

"country": "Chile",

"state": "Región Metropolitana",

"city": "",

"district": "Vitacura",

"address": "mar jonico 7995",

"buildingNumber": "",

"zipcode": "",

"latitude": "0.0",

"longitude": "0.0"

}

,

"packagingType": 0,

"contact": {

"firstName": "Stefany Milagros",

"lastName": "Palma Giron",

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

"code": "",

"phone": "941257211"

},

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

"deliveryType": {

"id": 3,

"name": "Overnight",

"code": "over001",

"courierId": 2

},

"courierId": 2,

"sellerId": 1,

"stateId": 6,

"label": "",

"trackingNumber": "",

"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

  • origin(Object): objeto con la información desde donde se despachará

  • country(String): país

  • state(String): región(Chile)/departamento(Perú)

  • city(String): ciudad

  • district(String): comuna(Chile)/distrito(Perú)

  • address(String): dirección

  • zipcode(String): código postal

  • latitude(String): latitud

  • longitude(String): longitud

  • destination(Object): objeto con la información de destino del despacho

  • country(String): país

  • state(String): región(Chile)/departamento(Perú)

  • city(String): ciudad

  • district(String): comuna(Chile)/distrito(Perú)

  • address(String): nombre de la calle

  • buildingNumber(String): numero de la propiedad

  • zipcode(String): código postal

  • latitude(String): latitud (no disponible actualmente)

  • longitude(String): longitud (no disponible actualmente)

  • contact(Object): objeto con la información de contacto del destinatario

  • firstName(String): nombre

  • lastName(String): apellido

  • email(String): email de contacto

  • code(String): código del destinatario

  • phone(String): teléfono

  • seller(Object): información de contacto del remitente

  • firstName(String): nombre

  • lastName(String): apellido

  • email(String): email de contacto

  • code(String): código

  • phone(String): teléfono

  • comment(String): comentario opcional

  • packagingType(Integer): despacho en múltiples paquetes(0-no/1-si)

  • deliveryTypes(Object): tipo de despacho (expand: orders.deliveryType)

  • courierId(Integer): id del courier

  • sellerId(Integer): id del seller

  • stateId(Integer): id del estado del despacho

  • label(String): etiqueta del pedido

  • trackingNumber(String): numero de seguimiento

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

  • description(String): descripción del detalle

  • quantity(Float): cantidad

  • weight(Float): peso

  • length(Float): largo

  • width(Float): ancho

  • height(Float): altura

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)

Estados disponibles

1 Por retirar

2 En tránsito

3 Entregado

4 Problema con la entrega

5 Problema con los datos

6 Anulado

Respuesta


{

"orderId": 2,

"description": "paquete despachado",

"stateId": 1

}

Obtener información de empresa

GET /v1/couriers/sellers.json

Endpoint que retorna las empresas asociadas al courier

Parámetros

  • id: id de la empresa (Integer)

  • name: nombre de la empresa (String)

  • code: 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",

"code": "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)

Diagrama de flujo