Errores
Todos los errores tienen el mismo sobre: { "error": "<code>", "message": "…", "details": { … } }. Ramifica según error, nunca según message; details.path nombra el campo cuando hay uno que falla.
Las rutas, los nombres de campo, los códigos de error, los nombres de cabecera y los ejemplos de código se quedan en inglés: son el contrato.
Cuándo reintentar
429 y 503 vienen con una cabecera Retry-After: espera esos segundos y envía de nuevo la misma solicitud. 504 solve_timeout puede funcionar al reintentar con un trabajo más pequeño. Todo 4xx distinto de 429 es un problema de la propia solicitud y vuelve a fallar sin cambios.
Códigos
| Código | Estado | Significado |
|---|---|---|
| invalid_request | 400 | El cuerpo o un parámetro está mal formado: no es JSON, no es un objeto o un campo tiene una forma incorrecta. |
| idempotency_key_required | 400 | La llamada de pedido no tiene una cabecera Idempotency-Key válida. |
| quote_invalid | 400 | El token del presupuesto no pertenece a este presupuesto, ha caducado o fue modificado, o se mezclaron prueba y producción. |
| unknown_workflow | 400 | La tienda no tiene ningún workflow con este id. |
| workflow_disabled | 400 | El workflow existe pero está desactivado. |
| mode_mismatch | 400 | El modo enviado no es el modo de este workflow. |
| unknown_mode | 400 | El modo enviado no es un modo conocido. |
| unsupported_mode | 400 | El modo del workflow todavía no está disponible en este servicio. |
| limit_exceeded | 400 | Demasiadas o demasiado pocas filas, demasiadas piezas o una pieza fuera de los límites de tamaño de la tienda. |
| outside_catalog_slice | 400 | Un material no se ofrece en este workflow. |
| unknown_reference | 400 | Un material, un canto u otro artículo del catálogo es desconocido o está desactivado. |
| required_field_missing | 400 | Falta un campo que la tienda marcó como obligatorio. |
| unauthorized | 401 | La clave falta, está mal formada, es desconocida o revocada, o una clave de prueba ha caducado. |
| project_token_required | 401 | Una llamada de proyecto necesita la cabecera del token de proyecto. |
| project_token_invalid | 401 | La cabecera del token de proyecto está mal formada o se envió dos veces. |
| quota_exceeded | 402 | Se ha agotado la cuota mensual de presupuestos de la tienda. |
| customer_context_required | 403 | Un grupo de clientes distinto del predeterminado necesita la clave secreta, es decir, una llamada desde tu servidor. |
| origin_not_allowed | 403 | El origen de la página no está en la lista de la clave pública. |
| sandbox_expired | 403 | La tienda sandbox ha caducado y es de solo lectura. |
| not_found | 404 | No existe esa ruta, presupuesto, pedido o proyecto, o pertenece a otra tienda. |
| not_configured | 404 | La tienda todavía no ha publicado una configuración. |
| idempotency_conflict | 409 | Este Idempotency-Key ya se usó para un presupuesto distinto. |
| quote_already_redeemed | 409 | Este presupuesto ya se ha pedido. |
| quote_requote | 409 | El presupuesto se firmó con una clave que se ha rotado desde entonces: solicita un presupuesto nuevo. |
| too_large | 413 | El cuerpo de la solicitud es mayor de lo que acepta la ruta. |
| unsupported_media_type | 415 | El cuerpo no se envió como application/json. |
| plan_incomplete | 400 / 422 | Algunas piezas no caben en ningún tablero, así que no hay nada que presupuestar. |
| project_not_reorderable | 422 | El proyecto guardado no contiene una lista de corte a la que se pueda poner precio. |
| rate_limited | 429 | Se alcanzó un límite de frecuencia: espera los segundos de Retry-After. |
| busy | 429 | La cola del solver está llena: reintenta tras los segundos de Retry-After. |
| test_limit | 429 | Las claves de prueba alcanzaron su tope diario de presupuestos o pedidos. |
| sandbox_order_limit | 429 | La tienda sandbox alcanzó su tope de pedidos del periodo. |
| project_limit | 429 | La tienda ya guarda el número o el tamaño máximo de proyectos guardados. |
| internal | 500 | Un error inesperado por nuestra parte. |
| service_unavailable | 503 | Una parte del servicio no respondió: inténtalo de nuevo más tarde. |
| config_invalid | 503 | No se puede cargar la configuración de la tienda. |
| tenant_unconfigured | 503 | La tienda no tiene ninguna clave activa de firma de presupuestos. |
| final_engine_unavailable | 503 | Este workflow presupuesta con el motor max, que no está disponible aquí. |
| solve_timeout | 504 | El plan tardó demasiado. |
Códigos de precio
Estos códigos proceden del motor de precios. Responden 400 en POST /cfg/v1/quote y en un nuevo pedido; en POST /cfg/v1/preview la llamada tiene éxito y el código llega en priceError, de modo que la vista previa en vivo puede mostrar el plan aunque no se pueda calcular el precio.
invalid_config · invalid_job · invalid_request · unknown_workflow · workflow_disabled · unknown_mode · mode_unavailable · unsupported_mode · unknown_reference · item_disabled · outside_catalog_slice · unpriced_item · no_strategy · unpriced_sheet · cut_length_unattributable · plan_incomplete · bonded_unpriced · bonded_not_allowed · template_value_invalid · machining_length_missing · machining_invalid · unknown_customer_group · shipping_unavailable · delivery_below_minimum · weight_unavailable · rule_budget · amount_overflow
Aquí no hay un botón «probar» a propósito: la clave secreta pertenece a tu servidor, nunca a un navegador. La tienda demo muestra la incrustación y el traspaso del pedido funcionando de principio a fin.
Información legalCondiciones del configurador (EN) ·Contrato de encargo de tratamiento (EN) ·Aviso de privacidad para compradores ·Licencias de terceros (EN)