Saltar al contenido principal

Errores

Dos formatos​

Errores del plugin. Los devuelve el propio recurso: producto inexistente, datos no válidos, conflicto…

{
"success": false,
"error": {
"code": "notiwoo_extra_not_found",
"message": "Extra no encontrado.",
"details": {}
}
}

details puede contener datos adicionales, por ejemplo el campo o el índice que falló. También puede venir vacío ({} o []).

Errores de WordPress. Se producen antes de llegar al recurso: falta de autenticación o permisos, parámetros obligatorios ausentes o no válidos, rutas inexistentes.

{
"code": "rest_missing_callback_param",
"message": "Faltan parámetros: entity, operation, target, request_id",
"data": { "status": 400, "params": ["entity", "operation", "target", "request_id"] }
}

Tu cliente debe manejar los dos. Una forma sencilla:

const body = await response.json();
const code = body.error?.code ?? body.code; // plugin o WordPress
const message = body.error?.message ?? body.message;

Decide siempre según code y el código HTTP, nunca según message: el texto cambia con el idioma del sitio.

Códigos comunes​

CódigoHTTPSignificadoQué hacer
notiwoo_unauthorized401Falta autenticación o el token no es válido.Solicita un token nuevo.
notiwoo_forbidden403El usuario no tiene permiso.Usa una cuenta de administrador o gestor de tienda.
rest_forbidden401/403Igual que el anterior, en la ruta de cierre por modalidad.Igual que el anterior.
notiwoo_invalid_credentials401Usuario o contraseña incorrectos al pedir el token.Revisa las credenciales.
rest_missing_callback_param400Falta un parámetro obligatorio.Revisa data.params.
rest_invalid_param400Un parámetro tiene tipo o valor no válido.Revisa data.params.
rest_no_route404La ruta o el método no existen.Revisa la ruta y el método HTTP.
notiwoo_not_found404Producto o categoría inexistente o no publicado.—
notiwoo_woocommerce_missing500WooCommerce no está activo.Activa WooCommerce.
notiwoo_cutover_pending409Modo coexistencia: la tienda no acepta pedidos por la API.Termina la migración.
notiwoo_deprecated_route308Ruta antigua woofood/*.Usa la ruta de details.redirect_to.

Conflictos (409)​

Un 409 indica que la operación choca con el estado actual. Por ejemplo:

  • notiwoo_bulk_busy: ya hay un cambio masivo en curso.
  • table_busy o table_occupied: la mesa está ocupada o bloqueada.
  • loyalty_unavailable: el programa está desactivado, la cuenta está bloqueada por otra operación o falta configurar WhatsApp.
  • notiwoo_product_changed: el producto cambió mientras se creaba el pedido.

Vuelve a leer el recurso, corrige y reintenta. Si la operación usa clave de idempotencia, reintenta con la misma clave.

Errores dentro de una respuesta correcta​

Algunas validaciones responden 200 y devuelven los problemas como datos, para mostrarlos al cliente:

  • POST /cart/validate: data.valid y data.errors[].
  • POST /delivery/check-address: data.deliverable y data.reason.
  • POST /users/me/addresses: data.deliverable: false si no hay cobertura.

Cada página de recurso enumera sus códigos específicos.