Skip to main content
Antes de crear un pedido necesitás dos cosas: saber qué productos y variantes podés pedir, y cotizar el envío del carrito. Los ejemplos usan dos variables de entorno. Así como están apuntan al entorno de pruebas; para producción cambiá las dos (https://app.gudink.com/api/v1 y tu clave gk_live_):

Listar tus productos

Un producto es un diseño tuyo en Gudink que no está archivado. No hace falta que esté publicado en ningún canal: alcanza con que exista en tu cuenta.

Qué es cada campo

Una línea es un par

Una línea es siempre el par product_id + variant_id. El variant_id solo no identifica nada: es la variante base (por ejemplo L / Blanco) y el mismo número aparece en varios de tus productos, cada uno con su precio.
  • Guardá tus variantes con la clave (product_id, variant_id), nunca sólo por variant_id.
  • Mandá siempre el par, al cotizar y al crear el pedido.
  • Una variante con el product_id de otro producto responde 409 variant_not_orderable.

Paginado

  • limit va de 1 a 25. Por defecto 20.
  • Si next_cursor no es null, pedí la página siguiente con cursor=<next_cursor>. Cuando es null, terminaste.
  • El cursor es opaco y sólo sirve para tu cuenta. No lo armes ni lo interpretes.

Un producto solo

Responde el mismo objeto que un elemento de data. Un id que no existe o que no es de tu cuenta responde 404 not_found. Es siempre el mismo 404: la API no confirma si un id ajeno existe.

Imágenes

Descargá thumbnail_url y mockups[].url y alojalas en tu sitio. No las enlaces directo desde Gudink: la dirección cambia cuando la imagen se regenera y la anterior deja de funcionar.

Cada cuánto sincronizar

  • No vendas una variante con available: false. available puede cambiar en cualquier momento.
  • Igual el alta del pedido puede responder 409 out_of_stock: available: true dice que hay al menos una unidad, no cuántas, y los pedidos sin pagar reservan unidades. Prepará tu checkout para eso. Ver Stock y reservas.
  • Un producto que desaparece de GET /products (o que responde 404 en GET /products/:id) se archivó o dejó de ser tuyo: dejá de venderlo. Si igual llega a un pedido, el alta responde 409 product_archived.
  • No hay aviso (webhook) de cambios de producto: un evento product.updated todavía no existe. Los avisos son sólo de pedidos.
  • Programá la sincronización con un reloj de verdad (el cron del servidor). Si tu plataforma corre sus tareas programadas sólo cuando alguien visita el sitio (WP-Cron de WordPress, por ejemplo), en una tienda con poco tráfico pueden pasar horas sin sincronizar.

Cuando cambia un precio

  • El pedido toma el precio del momento en que lo creás. items[].unit_price del pedido es lo que se te cobra, aunque el producto cambie de precio después.
  • Gudink te avisa por mail los cambios de precio antes de que entren en vigor, con la fecha.
  • Desde ese día, tu próxima sincronización ya trae el precio nuevo en variants[].price.

Cotizar el envío

Antes de crear el pedido, cotizá el envío a domicilio para esas líneas y ese código postal. La cotización queda guardada 24 horas, y el pedido se cobra exactamente al precio de la opción que elijas.
Respuesta 201:

Qué mandar

Qué devuelve

Reglas de la cotización

  • service_code identifica una opción dentro de esa cotización y sólo vale junto con su quote_id. Copialo tal cual en el pedido.
  • No se garantiza que sea el mismo en dos cotizaciones del mismo carrito: el opt_1 de una cotización nueva puede ser otro envío. Si recotizás, elegí de nuevo entre las opciones nuevas, por label y price.
  • Las líneas tienen que ser exactamente las del pedido: mismo producto, misma variante, misma cantidad. El orden no importa. Si cambia el carrito, cotizá de nuevo.
  • Una cotización vigente sirve para más de un pedido con las mismas líneas y el mismo código postal.
  • Cotizar no mira el stock. El stock se reserva recién al crear el pedido.
  • Mandá cada par product_id + variant_id una sola vez, con la cantidad sumada. Si repetís el par en dos líneas, la cotización y el pedido lo aceptan y quedan como dos líneas separadas (cada una con su tope de unidades), pero no lo necesitás para nada: evitalo.
  • Carritos mixtos. Si el carrito tiene productos que no son de Gudink, cotizá sólo las líneas de Gudink: lo de Gudink sale en su propio paquete, desde Gudink, y el envío del resto lo calculás vos como siempre. Mostrale a tu comprador la suma, o los dos envíos por separado.
  • Sólo hay envío a domicilio.
  • Límite: 30 cotizaciones por minuto por cuenta.
El price de la opción es lo que te cobra Gudink a vos. Cuánto le cobrás de envío a tu comprador lo decidís vos. Ver Cuánto cobrar de envío.

Errores de la cotización

Se deciden en este orden. Responde el primero que corresponde: Además puede responder los errores de toda ruta con clave (401, 403, 429, 500, 503) y los del cuerpo (400 invalid_body, 413 payload_too_large). Qué trae details en cada uno: ver Errores y límites. province_required es un código propio, para que no tengas que distinguirlo de un dato mal tipeado:
Repetí la cotización con la provincia:

Provincias

province (al cotizar) y shipping_address.province (en el pedido) son una de estas 24. La API siempre devuelve el nombre tal cual figura acá: Cómo se normaliza lo que mandás: Tres reglas para no equivocarte:
  1. Si la API reconoce el código postal, la provincia sale del código postal y no hace falta mandarla al cotizar. En el pedido, la que mandes se ignora, no se rechaza: el pedido sale con la del código postal.
  2. Si no lo reconoce, responde 400 province_required: pedísela a tu comprador con un selector de estos 24 valores.
  3. En el pedido, mandá en shipping_address.province la province que devolvió la cotización. Así nunca difiere. Qué compara la API entre la cotización y el pedido: ver Qué compara la cotización con el pedido.