Theme switcher

Descripción General

Bienvenido a la documentación de Picker Express API.

Picker te permitirá conectar tus plataformas y/o comercios a distintos proveedores de delivery de la región en la que te encuentras. La integración con Picker a través de su API te ofrece las siguientes capacidades:

  • Administración de locales.
  • Automatizar la creación de pedidos desde tu plataforma.
  • Realizar consultas de tarifas.
  • Recibir en tiempo real las actualizaciones de tu pedido.

La siguiente guía te permitirá saber los primeros pasos, buenas practicas y las referencias de la API que debes de tomar en cuenta en tu desarrollo.

Was this section helpful?

What made this section unhelpful for you?

Por Dónde Empezar

En esta página podrás ver cuales son los primeros pasos y que cosas se deben tener en cuenta antes de desarrollar la integración. Si tienes alguna duda acerca de algún concepto de nuestra plataforma, puedes visitar la página de Glosario donde tendrás información mas detallada.

Ten en cuenta que para empezar a desarrollar tu integración con Picker, debes tener una cuenta creada con nosotros; o en su defecto, haber contactado a ventas para que les pueda facilitar una cuenta de desarrollo. Para poder comunicarte con ellos, puedes seguir los pasos en nuestra pagina oficial aquí.

Una vez que tengas credenciales, ten en consideración que estas te permitirán acceder al dashboard. Estos son las url's del dashboard para producción y sandbox:


Para entender un poco la lógica que maneja Picker, una cuenta se la denomina Empresa. Cada empresa puede tener N locales (que pueden representar tiendas, restaurantes, puntos de despacho). Cada local obligatoriamente debe estar referenciado con una dirección y una geolocalización (se las requiere al momento de crearlas). Por ejemplo: Si tu empresa va a manejar 2 sucursales, deberás crear 2 locales.

Para poder identificar tu empresa o local, nuestra API utiliza dos tipos de keys:

  • API Key de Local: Permite hacer operaciones sobre cada local (actualizaciones) y permite realizar operaciones de pedidos (crear, consultar estado, consultar precio)
  • Master Key de Empresa: Permite consultar y hacer operaciones sobre mi empresa (crear locales, consultar locales).

Bajo este criterio, al integrarte tendrás un api key por cada local y un master key por tu empresa creado. Por ejemplo: Si tienes un empresa con 3 locales, básicamente tendrías 1 Master Key (representando tu empresa) y 3 Api Keys (cada Api Key representando un local).


API KEY

Al tener acceso al dashboard podrás obtener los api keys de cada local que vayas creando en la opción de Locales.

En la esquina superior derecha de cada local, podrás visualizar el api key del local.


MASTER KEY

Para poder acceder al Master Key de tu tienda, debes ingresar a la opción de Configuraciones (representado por el engrane).

En configuraciones, podrás encontrar el key de tu empresa.

Was this section helpful?

What made this section unhelpful for you?

Autenticación

La autenticación que maneja Picker API para cada enpoint es una autenticación de tipo Bearer; y usar como key el api key de tu local o el master key de tu empresa de acuerdo al endpoint que estes usando.

BASH

bash
Select...
curl --location 'https://dev-api.pickerexpress.com/api/createBooking' \
--header 'content-language: en' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{apiKey}}' \

BASH

bash
Select...
curl --location 'https://dev-api.pickerexpress.com/api/createStore' \
--header 'content-language: en' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{masterKey}}' \

Was this section helpful?

What made this section unhelpful for you?

Ciclo de Vida del Pedido

Todo pedido creado en la plataforma de Picker es determinado por un estado. El estado de un pedido es una parte importante del ciclo de vida del mismo. Estos estados pueden indicar si el pedido esta terminado, cancelado o aun en proceso. Es importante que en la integración que se vaya a desarrollar se mapeen todos los estados posibles, para que el cliente tenga muy claro lo que significa cada estado.

API Reference

En este apartado podrás encontrar todos los endpoints expuestos en nuestra API Suite. Este apartado estará dividido en cada una de las entidades a las que tendrás acceso en este API:

Ten muy en cuenta las URLs que estés usando para tus endpoint. En la parte derecha de esta página, tendrás el direccionamiento a cada uno de los ambientes que tenemos.

Was this section helpful?

What made this section unhelpful for you?

Base URL

Production:

https://api.pickerexpress.com

Sandbox:

https://dev-api.pickerexpress.com

Was this section helpful?

What made this section unhelpful for you?

Stores

En este apartado podrás encontrar los endpoints usados para la administración de los locales de tu empresa. Podrás encontrar los endpoints de:

Ten en consideración que los endpoints de Create Store y Get Stores usan como autenticación Master Key (para identificar el Empresa). En cambio el de Update Store y Get Store usa Api Key (para identificar el local).

Webhooks

En este apartado encontraras los endpoints a utilizar para el manejo de webhooks. Podrás encontrar los endpoints de:

Así mismo, podrás encontrar los detalles de los payloads que se envian a los webhooks registrados según cada evento. Los eventos que se devuelven en los webhooks son:

Para todos los endpoints de webhooks, necesitas como autorización el api key del local

Si necesitas mas información acerca de los estados que llegan en los webhooks, puedes visitar la pagina de Estados del Pedido.

Was this section helpful?

What made this section unhelpful for you?

Get Webhooks

El endpoint de Get Webhooks te permitirá consultar los webhooks configurados en el local. Te retornará todas las urls configuradas a los respectivos eventos del booking. Como esta configuración es por local, deberás utilizar Api Key.

Header Parameters

Authorizationstring

Token de autenticación tipo Bearer. Se debe usar Api Key

Response

200
Object
Listado de Webhooks configurados por local

Response Attributes

undefinedobject

Show child attributes

undefinedobject

Show child attributes

Was this section helpful?

What made this section unhelpful for you?

Language Box

GET

/api/webhooks

Select
1 2 curl --location 'https://api.pickerexpress.com/api/webhooks' \ --header 'Authorization: Bearer {{apiKey}}' \

Response

[
  [
    {
      "url": "https://mysite.com/api/driver-assigned",
      "type": "DRIVER_ASSIGNED"
    },
    {
      "url": "https://mysite.com/api/update-booking-status",
      "type": "UPDATE_BOOKING_STATUS"
    }
  ]
]

Status Codes

200

Webhooks consultados

401

Workspace suspendido o eliminado

403

Api Key es inválido

Was this section helpful?

What made this section unhelpful for you?

Add Webhook

El endpoint de Add Webhook te permitirá agregar webhooks a los eventos que afectan un booking. Los eventos que pueden registrarse con una url para su respuesta son:

Cuando cualquiera de estos eventos se dispara en nuestra plataforma, automáticamente enviamos un POST a la url registrada para el evento con el payload respectivo (Los payloads enviados por evento, los puedes revisar en páginas posteriores).

Ten en cuenta que los webhooks son configurados por local.

Header Parameters

Content-Typestring

Content type de payload

Authorizationstring

Token de autenticación tipo Bearer. Se debe usar Api Key

Body Parameters

typestring Required

Indicates the specific event that will trigger the webhook. The webhook will be activated when this type of event occurs.

Enum values:
DRIVER_ASSIGNEDUPDATE_BOOKING_STATUS
urlstring Required

Endpoint to receive the payload of the webhook. It is the destination where the POST request will be sent.

Response

200
Object
Confirmación de webhook registrado

Response Attributes

databoolean

Confirmación de webhook registrado

Was this section helpful?

What made this section unhelpful for you?

Language Box

POST

/api/webhooks

Select
1 2 3 4 5 6 7 curl --location 'https://api.pickerexpress.com/api/webhooks' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {{apiKey}}' \ --data '{ "type": "UPDATE_BOOKING_STATUS", "url": "https://mysite.com/api/webhook" }'

Response

{
  "data": true
}

Status Codes

200

Webhook agregado exitosamente

400

Parámetros inválidos

401

Workspace suspendido o eliminado

403

Api Key inválido

Was this section helpful?

What made this section unhelpful for you?

Driver Assigned

El evento de DRIVER_ASSIGNED se enviará al webhook registrado en el local cada vez que se asigne un nuevo conductor a un pedido. Este evento puede enviarse desde 1 hasta varias veces durante un pedido. Esto puede pasar en los siguientes escenarios:

  • Se asigna un conductor al pedido.
  • Se reasigna un nuevo conductor a un pedido que ya tenía un conductor.
  • Se hace una nueva búsqueda a un pedido que ya tiene conductor asignado. Previo a esto, se elimina al conductor del pedido y este último se devuelve al estado READY_FOR_PICKUP.

Cabe recalcar que si a un pedido se le asigna un conductor, automáticamente se lo pasará al estado ACCEPTED.

Es recomendable de que si se va hacer tracking del pedido, debes tener guardado el id del booking para poder hacerle match al momento de que llegue el webhook en tu integración.

Si el llamado al webhook registrado falla, se harán hasta 2 intentos nuevos de llamada con un intervalo de 30 segundos.

Response

200
Object

Response Attributes

driverNamestring

Nombre del conductor

driverImageobject

Foto del conductor

Show child attributes

driverEmailstring

Correo del conductor

driverMobilestring

Número de teléfono del conductor

bookingIDstring

ID alfanumérico del pedido

bookingNumericIdnumber

ID público numérico del pedido

deliveryProviderstring

Proveedor encargado del pedido

Was this section helpful?

What made this section unhelpful for you?

Response

{
  "driverName": "Conductor Prueba",
  "driverImage": {
    "original": "",
    "thumbnail": ""
  },
  "driverEmail": "conductor@prueba.com",
  "driverMobile": "+593999999999",
  "bookingID": "5e1f51e302a16510209a11be",
  "bookingNumericId": 1234,
  "deliveryProvider": "UBER"
}
Was this section helpful?

What made this section unhelpful for you?

Update Booking Status

El evento de UPDATE_BOOKING_STATUS se enviará a los webhooks registrados cada vez que un pedido cambie de estado. Por cada cambio de estado que sufra un pedido, se ejecutará un POST hacia el webhook registrado para este evento en el local.

Cuando existe una cancelación de un pedido, el payload puede incluir la razón por la cual se canceló el pedido.

Es recomendable de que si se va hacer tracking del pedido, debes tener guardado el id del booking para poder hacerle match al momento de que llegue el webhook en tu integración.

Si tu Workspace o Empresa tiene activado la funcionalidad de Prueba de Entrega, a partir del estado WAY_TO_DELIVER, se te enviará el campo validationCode. El contenido de este campo deberá ser proveído al cliente para poder completar la entrega (el conductor solicitará este código).

Si el llamado al webhook registrado falla, se harán hasta 2 intentos nuevos de llamada con un intervalo de 30 segundos.

Response

200
Object

Response Attributes

statusTextstring

Estado del pedido

currentStatusnumber

Código de estado del pedido

bookingIDstring

ID alfanumério del pedido

bookingNumericIdnumber

ID público y numérico del pedido

cancelReasonstring

Razón de cancelación

validationCodestring

Código de entrega. Debe ser proveída al cliente para poder completar la entrega

Was this section helpful?

What made this section unhelpful for you?

Response

{
  "statusText": "WAY_TO_DELIVER",
  "currentStatus": 3,
  "bookingID": "5e1f51e302a16510209a11be",
  "bookingNumericId": 1234,
  "cancelReason": "",
  "validationCode": "123456"
}
Was this section helpful?

What made this section unhelpful for you?

Pre-Booking

Esta funcionalidad esta en certificación y unicamente existe en al ambiente de sandbox.

Un Pre-booking es denominada a una plantilla con datos preliminares de un pedido sin los datos del punto final de entrega. Para poder convertirlo en un booking, es necesario que se pueda ingresar la dirección de entrega mediante una url que es retornado al momento de crear o consultar un pre-booking. Una vez ingresada la dirección final, el booking se crea y se inicia automáticamente la búsqueda de un conductor.

En este apartado podrás encontrar todos los endpoints utilizados para poder crear un pre-booking:

Bookings

En este apartado encontrarás todos los endpoints relacionados a los pedidos o bookings. Podras encontrar desde consultas de precios, creación de bookings, consultas y cancelaciones. Los endpoints que puedes encontrar en esta sección son:

Todos estos endpoints usan como autorización el api key del negocio.

Certificación

Previo a la salida a producción, es imperativo que se coordine una reunión para poder certificar tu integración con Picker. Dentro de esta certificación se van a revisar los siguientes puntos, dependiendo de las funcionalidades que tengas integradas:

  • Bookings:
    • Pre Checkout
    • Create Booking
      • Datos correctos y concretos del cliente
      • Valores a cobrar
      • Uso correcto de métodos de pago
      • Uso de cook time (Opcional)
    • Cancel Booking (Opcional)
  • Webhooks
    • Registro de Webhooks
    • Interpretación de estados en su sistema
  • Stores
    • Create Store
    • Get Store (Opcional)
  • Pre Booking
    • Create Pre Booking
      • Datos del cliente y del negocio sea correcto
      • Flujo de envió de link para confirmar dirección
    • Cancel Pre Booking (Opcional)
  • Interacción con Usuario Final
    • Visualización de Estados
    • Visualización de datos de pedido
    • Visualización de Tracking de Picker

Para acordar una reunión de certificación, se la puede agendar mediante este link.

Was this section helpful?

What made this section unhelpful for you?

FAQ

  • ¿Es necesario usar el endpoint de pre-checkout para usar el API?
    • No es imperativo usar el endpoint de pre-checkout; sin embargo lo recomendamos para que puedas saber con anterioridad el precio de un pedido antes de crearlo.
  • ¿Para que me sirve el Dashboard?
    • El Dashboard de Picker es una herramienta visual donde podrás:
      • Visualizar, administrar y crear pedidos.
      • Visualizar y administrar tus locales.
      • Manejar tus configuraciones generales.
      • Consultar los keys para la integración.
  • ¿En que escenario debo enviar CASH o CARD en paymentMethod al crear un booking?
    • CASH: Cuando el pedido requiere un pago contra entrega en efectivo.
    • CARD: Cuando unicamente requieres que el conductor recoja el pedido y lo entregue en sitio. Esto funciona si de tu lado de la integración ya estas realizando el cobro al cliente (Por transferencia, pasarela de pagos, etc).
  • ¿Qué valor debo ingresar en el campo orderAmount?
    • Nosotros recomendamos fuertemente que se coloque el valor en bruto del pedido (sin delivery fee, descuentos u otros rubros), inclusive si el pedido tiene como método de pago CASH. Esto es necesario para la auditoría de los proveedores en el caso que suceda alguna incidencia con el pedido en curso.
  • Acabo de crear mi pedido, pero no esta buscando en ningún proveedor. ¿Qué me esta haciendo falta?
    • Es muy probable que tu pedido tenga cooktime y este en estado ON_HOLD. Cuando un pedido se inicia con cooktime, tiene un tiempo de espera hasta antes de iniciar una búsqueda en los proveedores. Para iniciar una búsqueda, hay las siguientes opciones:
      • Esperar que se cumpla el tiempo de espera
      • Iniciar la búsqueda manualmente mediante la opción de Iniciar Búsqueda en el menu del pedido en Dashboard
      • Usar endpoint de Start Search.
  • Me aparece que mi workspace esta suspendido. ¿Qué debo hacer?
    • Si tu empresa esta suspendida, puedes contactar a soporte mediante la opción de chat que existe en Dashboard para conocer mas del asunto.

Was this section helpful?

What made this section unhelpful for you?

Glosario

  • Empresa: Espacio de trabajo que representa la empresa o marca, el cual puede tener 1 o mas locales asociados. Tiene un master key único, el cual es utilizado para las operaciones vía API. También es conocido como Workspace en algunas nomenclaturas.
  • Local: Es la representación de un comercio/local/restaurante/punto de despacho en la plataforma de Picker. Cada local tiene un identificativo único (Api Key); y tiene asociado una dirección y una geolocalización necesarias para la operación.
  • Master Key: Es el identificador único de cada empresa. Es obligatorio usarlo en cada operación vía API que requiere la identificación del empresa. Ejemplo: En el endpoint Create Store, es necesario para poder indicar a que empresa se debe asociar la tienda recién creada.
  • Api Key: Es el identificador único de cada tienda. Es obligatorio usarlo en las operaciones vía API en que se requiere la identificación del local. Ejemplo: En el endpoint Create Booking, es necesario para poder identificar la tienda a donde el conductor tiene que recoger el pedido.
  • Booking: Es la representación del pedido como tal en la plataforma de Picker. Cada booking o pedido tiene un identificador único interno (id), público (bookingNumericId) y un estado (statusText). Este ultimo campo representa en que estado del proceso se encuentra el pedido.
  • Orden: Es la representación de cada llamado a un proveedor. Cuando un booking se crea, este llama a todos los proveedores que tiene activado el local; cada uno de estos llamados es una orden. Un booking puede tener de N ordenes de acuerdo al número de proveedores que puede atenderlo.
  • Dashboard: Es la plataforma visual de Picker. Desde esta web se podrán administrar y configurar la empresa como sus locales. Para acceder al dashboard de producción haz click aquí.
  • Restart Search: Se lo conoce también como una rebúsqueda. Sucede cuando un pedido ya con conductor ejecuta una nueva busqueda de conductor en cada proveedor debido a que el conductor asignado no puede cumplir con el pedido antes de llegar al local. Restart Search se puede disparar en estos escenarios:
    • Proveedor cancela pedido antes de llegar al local
    • Proveedor desasigna un conductor antes de llegar al local
    • Soporte lo ejecuta manualmente en el caso que exista alguna novedad con el conductor del pedido

Was this section helpful?

What made this section unhelpful for you?