Saltar a contenido

Tratamiento de Errores

Los errores de DeCA API siguen el formato estándar ProblemDetails.

{
  "title": "Solicitud no válida",
  "status": 400,
  "detail": "La petición contiene errores de validación.",
  "errors": [
    {
      "field": "ContractualCharger.TaxIdentificationNumber",
      "message": "El valor 'X9999999Z' no es un NIF/NIE/CIF español válido (Art. 6.a)."
    }
  ]
}

Notas sobre el formato:

  • title es un texto fijo según el tipo de error ("Solicitud no válida" en 400, "Recurso no encontrado" en 404, "Eliminación no permitida" en 409, "Servicio no disponible" en 503).
  • errors es un array de objetos { "field": "...", "message": "..." }, uno por cada error de validación encontrado.
  • errors solo aparece en los errores 400 Bad Request generados por las reglas de validación de negocio.

Códigos HTTP más comunes:

  • 400 Bad Request: campo obligatorio ausente, identificador fiscal inválido (NIF/CIF/NIE español en contractualCharger, o NIF/NIE/CIF español/identificador extranjero tipo VIES en actualCarrier), vehículo articulado incompleto, peso no válido o dirección de notificación inválida.
  • 401 Unauthorized: cabecera Authorization ausente o credenciales incorrectas.
  • 404 Not Found: no existe un DeCA con el id indicado.
  • 409 Conflict: solo en DELETE; han pasado más de 7 días desde la creación del DeCA y ya no puede eliminarse.
  • 503 Service Unavailable: error al subir el PDF a Azure Blob Storage (la operación se aborta).

Reglas de validación relevantes:

  • contractualCharger, actualCarrier, shipments, vehicle y transportDate son obligatorios y no vacíos.
  • contractualCharger.taxIdentificationNumber debe ser NIF/NIE/CIF español válido.
  • actualCarrier.taxIdentificationNumber admite NIF/NIE/CIF español válido o un identificador fiscal extranjero tipo VIES (código de país ISO 3166-1 alfa-2 ≠ ES + hasta 12 caracteres alfanuméricos con al menos un dígito), ya que el transportista efectivo puede ser una empresa extranjera realizando transporte nacional.
  • shipments[].weightKg debe ser positivo si se informa.
  • shipments[].packageCount es opcional, pero debe ser positivo si se informa.
  • En cada envío debe informarse al menos uno entre weightKg y alternativeMagnitude.
  • vehicle.tractorLicensePlate y vehicle.semitrailerLicensePlate deben estar ambos presentes o ambos ausentes.
  • vehicle.licensePlate es obligatoria salvo que se informen vehicle.tractorLicensePlate y vehicle.semitrailerLicensePlate (conjunto articulado completo), en cuyo caso es opcional y no se imprime en el PDF si no se informa.
  • recipient.address debe ser email válido para canal Email o formato E.164 para SMS/WhatsApp.
  • logo es opcional; el formato se detecta por cabecera de bytes durante la generación de PDF/email.

Problemas de conexión:

  • En caso de problemas de conexión con SDH se pueden recibir errores como No se puede resolver el nombre remoto: 'deca.solmicrosdh.com'.
    Se puede probar introduciendo la URL https://deca.solmicrosdh.com/api en un navegador.
    Debería mostrar algo como:

    problemaconexion

  • Logos cuyo base64 sea muy grande pueden provocar errores en la conexión o retornar 403-Forbidden.