Saltar al contenido
API v1 · https://bentho.org/api
POST/api/mod/ventas/{espacio}/pricing/quote

Cotiza un envío

La misma cotización que hace el agente, sin conversación: tarifa, días de entrega y recargos de la tabla activa para un destino, un producto y una cantidad.

  • PERMISOescribe
  • CRÉDITOSno gasta
  • AUTENTICACIÓNBearer bth_…

PARÁMETROS

CAMPOTIPOREQUERIDOQUÉ ES
espaciostringSÍEl id del espacio (sale en GET /api/companies). Tiene que tener el módulo Ventas.

CUERPO · JSON

CAMPOTIPOREQUERIDOQUÉ ES
destinostringSÍLa ciudad o la zona, en texto libre. Da igual mayúsculas o tildes.
productostringnoEl producto, si la tabla tiene tarifas por producto.
cantidadintegernoPor defecto 1.
session_idstringnoUna conversación, para que la cotización quede asociada en el registro.

RESPUESTA 200

Siempre 200: una cotización o el motivo por el que no se pudo.

CAMPOTIPOQUÉ ES
okbooleantrue si cotizó.
cotizacion.totalstringLo que cuesta el envío con sus recargos, texto decimal con 2 decimales.
cotizacion.coste_enviostringLa tarifa de envío sola.
cotizacion.recargos[]{ concepto, monto, base_normativa }Los recargos que aplicaron.
cotizacion.tiempo_entrega_dias[min, max]Los días de entrega.
cotizacion.zona_id · producto_idstringLa zona y el producto que reconoció. producto_id vacío si no diste uno.
cotizacion.vigenciastring | nullHasta cuándo vale la tarifa usada, si tiene fecha.
cotizacion.tarifa_versionstringLa huella (sha256) de la tabla con la que cotizó.
error{ code, message, detail, candidates }Si no cotizó: ver códigos.

CÓDIGOS DE ERROR DE COTIZACIÓN

CAMPOTIPOQUÉ ES
missing_slotrepreguntarFalta el destino.
ambiguous_destinationrepreguntarEl destino coincide con varias zonas: candidates trae sus nombres.
quantity_out_of_rangerepreguntarNinguna fila cubre esa cantidad.
no_zone_for_destinationpersonaNinguna zona reconoce ese destino.
unknown_productpersonaDiste un producto que la tabla no conoce.
no_ratepersonaHay zona, pero ninguna fila para esa zona y ese producto.
rate_expiredpersonaLa fila que aplica está vencida (vigente_hasta ya pasó): detail trae la fecha.
no_active_tablepersonaNo hay ninguna versión validada.

ERRORES DE ESTA RUTA · SIEMPRE {"detail": …}

STATUSCUÁNDODETAIL LITERAL
403El espacio no tiene el módulo Ventasmódulo no habilitado para este espacio.
403La clave es de solo lecturaTu cuenta es de solo lectura en este espacio.
422Falta un campo obligatorio o uno no es de su tipo (detail es una lista)—

Y los de cualquier ruta —clave inválida, cuenta no al día, IP, límites—, en Errores, límites y créditos.

CONVIENE SABER

  • Pide una clave escribe, aunque no cambie nada: cada cotización queda registrada.
  • Cotiza con tus tablas, no con el módulo Comercial: si tu espacio usa Comercial, esta ruta no refleja lo que cotiza el agente.