Saltar al contenido

Referencia de la API

Todas las rutas, con sus parámetros, cuerpos y respuestas. Si es la primera vez que la usa, empiece por la guía: explica cómo obtener una clave y emite un primer documento.

URL base
https://app.decamio.com/api/v1
Autenticación
Authorization: Bearer <clave>
Especificación
openapi.yaml (OpenAPI 3.1, versión 1)

Cuenta

get/openapi.yamlsin clave

Esta especificación

Respuestas

  • 200El documento OpenAPI en YAML.
get/cuenta

Quién soy y qué cupo me queda

La primera llamada para comprobar que la clave funciona.

Respuestas

  • 200Empresa, usuario, clave, plan y cupo del año en curso.esquema Cuenta
  • 401Clave ausente, inválida, caducada o revocada.esquema Error
    {
      "message": "Clave de API ausente, inválida, caducada o revocada.",
      "codigo": "no_autenticado"
    }
  • 403Plan sin API, usuario o clave sin permiso, empresa suspendida.esquema Error
    {
      "message": "La clave de API no tiene concedido ese permiso.",
      "codigo": "clave_sin_permiso",
      "detalle": {
        "permiso": "crear-documentos"
      }
    }

Documentos

get/documentos

Listar DeCA

Requiere el permiso ver-documentos. Ordenados del más reciente al más antiguo.

Parámetros

NombreDóndeTipoDescripción
q querystringBusca en referencia, cargador, transportista, destinatario, matrículas, origen y destino.
desde querystring (date)Fecha de carga mínima.
hasta querystring (date)Fecha de carga máxima.
situacion query«vigente» | «anulado»
estadoEnvio query«pendiente» | «encolado» | «enviado» | «error»
por_pagina queryinteger
page queryinteger

Respuestas

  • 200Página de documentos.esquema Documento
  • 401Clave ausente, inválida, caducada o revocada.esquema Error
    {
      "message": "Clave de API ausente, inválida, caducada o revocada.",
      "codigo": "no_autenticado"
    }
  • 403Plan sin API, usuario o clave sin permiso, empresa suspendida.esquema Error
    {
      "message": "La clave de API no tiene concedido ese permiso.",
      "codigo": "clave_sin_permiso",
      "detalle": {
        "permiso": "crear-documentos"
      }
    }
post/documentos

Emitir un DeCA

Requiere crear-documentos (y enviar-documentos si envio.enviar es true). Cada parte admite el id de un maestro de su empresa, los datos escritos, o ambos; lo escrito gana campo a campo. El documento se numera, se genera su PDF y queda publicado en su URL del QR en la misma llamada.

Parámetros

NombreDóndeTipoDescripción
Idempotency-Key headerstringValor único por operación. Muy recomendable en toda emisión.

Cuerpo (application/json)

CampoTipoDescripción
cargador objeto
cargador.cliente_id integer | nullCliente de su empresa del que copiar los datos.
cargador.nombre string | nullMáximo 255 caracteres.
cargador.nif string | nullMáximo 20 caracteres.
cargador.domicilio string | nullMáximo 255 caracteres.
transportista objeto
transportista.cliente_id integer | nullCliente de su empresa del que copiar los datos.
transportista.nombre string | nullMáximo 255 caracteres.
transportista.nif string | nullMáximo 20 caracteres.
transportista.domicilio string | nullMáximo 255 caracteres.
transportista.autorizacion string | nullNúmero de autorización de transporte. Máximo 50 caracteres.
destinatario objeto
destinatario.cliente_id integer | nullCliente de su empresa del que copiar los datos.
destinatario.nombre string | nullMáximo 255 caracteres.
destinatario.nif string | nullMáximo 20 caracteres.
destinatario.domicilio string | nullMáximo 255 caracteres.
conductor objeto
conductor.conductor_id integer | null
conductor.nombre string | nullMáximo 255 caracteres.
vehiculo objeto
vehiculo.tractor_id integer | nullVehículo de su empresa del que tomar la matrícula.
vehiculo.remolque_id integer | null
vehiculo.matricula_tractor string | nullMáximo 20 caracteres.
vehiculo.matricula_remolque string | nullMáximo 20 caracteres.
servicio objeto
servicio.origen stringMáximo 255 caracteres.
servicio.destino stringMáximo 255 caracteres.
servicio.naturaleza_mercancia stringMáximo 1000 caracteres.
servicio.peso number | nullEn kilogramos. Mínimo 0.
servicio.bultos integer | nullMínimo 0.
servicio.fecha_envio string (date)Fecha de carga.
servicio.fecha_entrega string (date) | nullNo anterior a la de carga.
servicio.observaciones string | nullMáximo 2000 caracteres.
servicio.precio_porte number | nullPrecio del porte en euros, con dos decimales como máximo. Opcional: no es un dato del artículo 6 de la Orden FOM/2861/2012. Si se informa, se imprime en el PDF, que cualquiera con el código QR puede descargar. Mínimo 0.
servicio.otros_envios array de EnvioAdicionalEnvíos del 2 en adelante de un DeCA agrupado (Resolución de 5 de junio de 2026, apartado sexto): sólo si el cargador contractual y el transportista efectivo son los mismos en todos. Los campos de arriba son el envío 1, y su peso pasa a ser obligatorio. La fecha de carga es común. En una modificación, si se envía, sustituye entera a la lista actual; vacía, convierte el DeCA en uno de un solo envío. Un DeCA agrupado cuenta como una emisión.
envio objeto
envio.email string (email) | null
envio.enviar booleanEncolar el envío al emitir. Exige el permiso enviar-documentos. Por defecto, false.
Referenciando los maestros
{
  "cargador": {
    "cliente_id": 12
  },
  "transportista": {
    "cliente_id": 3
  },
  "destinatario": {
    "cliente_id": 8
  },
  "conductor": {
    "conductor_id": 7
  },
  "vehiculo": {
    "tractor_id": 2,
    "remolque_id": 5
  },
  "servicio": {
    "origen": "Sevilla",
    "destino": "Madrid",
    "naturaleza_mercancia": "Palés de material de construcción",
    "peso": 12500,
    "bultos": 24,
    "fecha_envio": "2026-10-05"
  },
  "envio": {
    "email": "recepcion@almacen.es",
    "enviar": true
  }
}
Con los datos escritos
{
  "cargador": {
    "nombre": "Cargadora del Sur, S.L.",
    "nif": "B12345678",
    "domicilio": "Calle Mayor 1, 41001 Sevilla"
  },
  "transportista": {
    "nombre": "Transportes Rápidos, S.A.",
    "nif": "A87654321",
    "autorizacion": "MDP-123456"
  },
  "vehiculo": {
    "matricula_tractor": "1234ABC"
  },
  "servicio": {
    "origen": "Sevilla",
    "destino": "Madrid",
    "naturaleza_mercancia": "Palés de material de construcción",
    "fecha_envio": "2026-10-05"
  }
}

Respuestas

  • 201Documento emitido. La cabecera Location apunta a su ficha.esquema Documento
  • 402Cupo anual agotado o suscripción no al corriente.esquema Error
    {
      "message": "Ha agotado los 500 DeCA que incluye el plan Autónomo para 2026.",
      "codigo": "cupo_agotado",
      "accion": "Cambiar de plan",
      "detalle": {
        "usados": 500,
        "limite": 500,
        "anio": 2026
      }
    }
  • 403Plan sin API, usuario o clave sin permiso, empresa suspendida.esquema Error
    {
      "message": "La clave de API no tiene concedido ese permiso.",
      "codigo": "clave_sin_permiso",
      "detalle": {
        "permiso": "crear-documentos"
      }
    }
  • 422Datos inválidos. errors va indexado por la clave anidada del campo.
    {
      "message": "El campo cargador es obligatorio.",
      "codigo": "validacion",
      "errors": {
        "cargador.nombre": [
          "El campo cargador es obligatorio."
        ]
      }
    }
get/documentos/{uuid}

Ficha de un DeCA

Requiere ver-documentos. Incluye el historial de modificaciones.

Parámetros

NombreDóndeTipoDescripción
uuid *pathstring (uuid)Identificador público del documento (el mismo que va en el QR).

Respuestas

  • 200El documento.esquema Documento
  • 404No existe o no pertenece a su empresa.esquema Error
    {
      "message": "No existe ese recurso o no pertenece a su empresa.",
      "codigo": "no_encontrado"
    }
patch/documentos/{uuid}

Modificar un DeCA emitido

Requiere modificar-documentos. La normativa lo permite siempre que quede registrado: el motivo es obligatorio, la versión sube, el PDF se regenera y la URL del QR no cambia. cambios es parcial: sólo lo que se envía se modifica.

Parámetros

NombreDóndeTipoDescripción
uuid *pathstring (uuid)Identificador público del documento (el mismo que va en el QR).

Cuerpo (application/json)

CampoTipoDescripción
motivo *stringMáximo 255 caracteres. Mínimo 5 caracteres.
cambios *objetoLas partes de un DeCA. En la emisión, cargador.nombre, transportista.nombre, vehiculo.matricula_tractor, servicio.origen, servicio.destino, servicio.naturaleza_mercancia y servicio.fecha_envio son obligatorios (directamente o a través del maestro referenciado).
cambios.cargador objeto
cambios.cargador.cliente_id integer | nullCliente de su empresa del que copiar los datos.
cambios.cargador.nombre string | nullMáximo 255 caracteres.
cambios.cargador.nif string | nullMáximo 20 caracteres.
cambios.cargador.domicilio string | nullMáximo 255 caracteres.
cambios.transportista objeto
cambios.transportista.cliente_id integer | nullCliente de su empresa del que copiar los datos.
cambios.transportista.nombre string | nullMáximo 255 caracteres.
cambios.transportista.nif string | nullMáximo 20 caracteres.
cambios.transportista.domicilio string | nullMáximo 255 caracteres.
cambios.transportista.autorizacion string | nullNúmero de autorización de transporte. Máximo 50 caracteres.
cambios.destinatario objeto
cambios.destinatario.cliente_id integer | nullCliente de su empresa del que copiar los datos.
cambios.destinatario.nombre string | nullMáximo 255 caracteres.
cambios.destinatario.nif string | nullMáximo 20 caracteres.
cambios.destinatario.domicilio string | nullMáximo 255 caracteres.
cambios.conductor objeto
cambios.conductor.conductor_id integer | null
cambios.conductor.nombre string | nullMáximo 255 caracteres.
cambios.vehiculo objeto
cambios.vehiculo.tractor_id integer | nullVehículo de su empresa del que tomar la matrícula.
cambios.vehiculo.remolque_id integer | null
cambios.vehiculo.matricula_tractor string | nullMáximo 20 caracteres.
cambios.vehiculo.matricula_remolque string | nullMáximo 20 caracteres.
cambios.servicio objeto
cambios.servicio.origen stringMáximo 255 caracteres.
cambios.servicio.destino stringMáximo 255 caracteres.
cambios.servicio.naturaleza_mercancia stringMáximo 1000 caracteres.
cambios.servicio.peso number | nullEn kilogramos. Mínimo 0.
cambios.servicio.bultos integer | nullMínimo 0.
cambios.servicio.fecha_envio string (date)Fecha de carga.
cambios.servicio.fecha_entrega string (date) | nullNo anterior a la de carga.
cambios.servicio.observaciones string | nullMáximo 2000 caracteres.
cambios.servicio.precio_porte number | nullPrecio del porte en euros, con dos decimales como máximo. Opcional: no es un dato del artículo 6 de la Orden FOM/2861/2012. Si se informa, se imprime en el PDF, que cualquiera con el código QR puede descargar. Mínimo 0.
cambios.servicio.otros_envios array de EnvioAdicionalEnvíos del 2 en adelante de un DeCA agrupado (Resolución de 5 de junio de 2026, apartado sexto): sólo si el cargador contractual y el transportista efectivo son los mismos en todos. Los campos de arriba son el envío 1, y su peso pasa a ser obligatorio. La fecha de carga es común. En una modificación, si se envía, sustituye entera a la lista actual; vacía, convierte el DeCA en uno de un solo envío. Un DeCA agrupado cuenta como una emisión.
Ejemplo
{
  "motivo": "Error en el pesaje",
  "cambios": {
    "servicio": {
      "peso": 12000
    }
  }
}

Respuestas

  • 200Documento modificado, con su nueva versión.esquema Documento
  • 404No existe o no pertenece a su empresa.esquema Error
    {
      "message": "No existe ese recurso o no pertenece a su empresa.",
      "codigo": "no_encontrado"
    }
  • 409El documento está anulado y ya no admite cambios ni envíos.esquema Error
    {
      "message": "El DeCA DECA-2026-000012 está anulado y ya no admite cambios ni envíos.",
      "codigo": "documento_anulado"
    }
  • 422Datos inválidos. errors va indexado por la clave anidada del campo.
    {
      "message": "El campo cargador es obligatorio.",
      "codigo": "validacion",
      "errors": {
        "cargador.nombre": [
          "El campo cargador es obligatorio."
        ]
      }
    }
get/documentos/{uuid}/pdf

Descargar el PDF

Requiere ver-documentos. El mismo fichero que se custodia; su sha256 está en la ficha.

Parámetros

NombreDóndeTipoDescripción
uuid *pathstring (uuid)Identificador público del documento (el mismo que va en el QR).

Respuestas

  • 200El PDF, como adjunto con el nombre de la referencia.
  • 404No existe o no pertenece a su empresa.esquema Error
    {
      "message": "No existe ese recurso o no pertenece a su empresa.",
      "codigo": "no_encontrado"
    }
post/documentos/{uuid}/anular

Anular un DeCA

Requiere anular-documentos. Nunca se borra: durante el periodo de conservación su URL sigue respondiendo y muestra que está anulado. El cupo anual no se recupera.

Parámetros

NombreDóndeTipoDescripción
uuid *pathstring (uuid)Identificador público del documento (el mismo que va en el QR).
Idempotency-Key headerstringValor único por operación. Muy recomendable en toda emisión.

Cuerpo (application/json)

CampoTipoDescripción
motivo *stringMáximo 255 caracteres. Mínimo 5 caracteres.

Respuestas

  • 200Documento anulado.esquema Documento
  • 404No existe o no pertenece a su empresa.esquema Error
    {
      "message": "No existe ese recurso o no pertenece a su empresa.",
      "codigo": "no_encontrado"
    }
  • 409El documento está anulado y ya no admite cambios ni envíos.esquema Error
    {
      "message": "El DeCA DECA-2026-000012 está anulado y ya no admite cambios ni envíos.",
      "codigo": "documento_anulado"
    }
  • 422Datos inválidos. errors va indexado por la clave anidada del campo.
    {
      "message": "El campo cargador es obligatorio.",
      "codigo": "validacion",
      "errors": {
        "cargador.nombre": [
          "El campo cargador es obligatorio."
        ]
      }
    }
post/documentos/{uuid}/enviar

Enviar el DeCA por correo

Requiere enviar-documentos. El envío se encola; el resultado queda en el historial de envíos de la ficha.

Parámetros

NombreDóndeTipoDescripción
uuid *pathstring (uuid)Identificador público del documento (el mismo que va en el QR).
Idempotency-Key headerstringValor único por operación. Muy recomendable en toda emisión.

Cuerpo (application/json)

CampoTipoDescripción
email *string (email)

Respuestas

  • 202Envío encolado.
  • 404No existe o no pertenece a su empresa.esquema Error
    {
      "message": "No existe ese recurso o no pertenece a su empresa.",
      "codigo": "no_encontrado"
    }
  • 409El documento está anulado y ya no admite cambios ni envíos.esquema Error
    {
      "message": "El DeCA DECA-2026-000012 está anulado y ya no admite cambios ni envíos.",
      "codigo": "documento_anulado"
    }
  • 422Datos inválidos. errors va indexado por la clave anidada del campo.
    {
      "message": "El campo cargador es obligatorio.",
      "codigo": "validacion",
      "errors": {
        "cargador.nombre": [
          "El campo cargador es obligatorio."
        ]
      }
    }

Maestros

Clientes, vehículos y conductores. {maestro} es clientes, vehiculos o conductores.

get/{maestro}

Listar fichas

Requiere gestionar-maestros.

Parámetros

NombreDóndeTipoDescripción
maestro *path«clientes» | «vehiculos» | «conductores»
q querystring
activo queryboolean
tipo querystringClientes: cargador, transportista, ambos. Vehículos: tractor, remolque, semirremolque.
por_pagina queryinteger
page queryinteger

Respuestas

  • 200Página de fichas.
post/{maestro}

Crear una ficha

Requiere gestionar-maestros. NIF y matrícula se normalizan (mayúsculas, sin separadores) y son únicos dentro de su empresa.

Parámetros

NombreDóndeTipoDescripción
maestro *path«clientes» | «vehiculos» | «conductores»
Idempotency-Key headerstringValor único por operación. Muy recomendable en toda emisión.

Cuerpo (application/json)

Cliente — para /clientes

CampoTipoDescripción
nombre *stringMáximo 255 caracteres.
nif string | nullMáximo 20 caracteres.
tipo «cargador» | «transportista» | «ambos»Por defecto, "cargador".
domicilio string | nullMáximo 255 caracteres.
cp string | nullMáximo 10 caracteres.
poblacion string | nullMáximo 255 caracteres.
provincia string | nullMáximo 255 caracteres.
telefono string | nullMáximo 30 caracteres.
email string (email) | null
persona_contacto string | nullMáximo 255 caracteres.
num_autorizacion string | nullMáximo 50 caracteres.
notas string | nullMáximo 2000 caracteres.
activo booleanPor defecto, true.

Vehiculo — para /vehiculos

CampoTipoDescripción
matricula *stringMáximo 20 caracteres.
tipo «tractor» | «remolque» | «semirremolque»Por defecto, "tractor".
descripcion string | nullMáximo 255 caracteres.
activo booleanPor defecto, true.

Conductor — para /conductores

CampoTipoDescripción
nombre *stringMáximo 255 caracteres.
nif string | nullMáximo 20 caracteres.
telefono string | nullMáximo 30 caracteres.
activo booleanPor defecto, true.

Respuestas

  • 201Ficha creada.
  • 422Datos inválidos. errors va indexado por la clave anidada del campo.
    {
      "message": "El campo cargador es obligatorio.",
      "codigo": "validacion",
      "errors": {
        "cargador.nombre": [
          "El campo cargador es obligatorio."
        ]
      }
    }
get/{maestro}/{id}

Una ficha

Parámetros

NombreDóndeTipoDescripción
maestro *path«clientes» | «vehiculos» | «conductores»
id *pathinteger

Respuestas

  • 200La ficha.
  • 404No existe o no pertenece a su empresa.esquema Error
    {
      "message": "No existe ese recurso o no pertenece a su empresa.",
      "codigo": "no_encontrado"
    }
put/{maestro}/{id}

Modificar una ficha (alias de PATCH)

Parámetros

NombreDóndeTipoDescripción
maestro *path«clientes» | «vehiculos» | «conductores»
id *pathinteger

Cuerpo (application/json)

Cliente — para /clientes

CampoTipoDescripción
nombre *stringMáximo 255 caracteres.
nif string | nullMáximo 20 caracteres.
tipo «cargador» | «transportista» | «ambos»Por defecto, "cargador".
domicilio string | nullMáximo 255 caracteres.
cp string | nullMáximo 10 caracteres.
poblacion string | nullMáximo 255 caracteres.
provincia string | nullMáximo 255 caracteres.
telefono string | nullMáximo 30 caracteres.
email string (email) | null
persona_contacto string | nullMáximo 255 caracteres.
num_autorizacion string | nullMáximo 50 caracteres.
notas string | nullMáximo 2000 caracteres.
activo booleanPor defecto, true.

Vehiculo — para /vehiculos

CampoTipoDescripción
matricula *stringMáximo 20 caracteres.
tipo «tractor» | «remolque» | «semirremolque»Por defecto, "tractor".
descripcion string | nullMáximo 255 caracteres.
activo booleanPor defecto, true.

Conductor — para /conductores

CampoTipoDescripción
nombre *stringMáximo 255 caracteres.
nif string | nullMáximo 20 caracteres.
telefono string | nullMáximo 30 caracteres.
activo booleanPor defecto, true.

Respuestas

  • 200Ficha modificada.
  • 404No existe o no pertenece a su empresa.esquema Error
    {
      "message": "No existe ese recurso o no pertenece a su empresa.",
      "codigo": "no_encontrado"
    }
  • 422Datos inválidos. errors va indexado por la clave anidada del campo.
    {
      "message": "El campo cargador es obligatorio.",
      "codigo": "validacion",
      "errors": {
        "cargador.nombre": [
          "El campo cargador es obligatorio."
        ]
      }
    }
patch/{maestro}/{id}

Modificar una ficha

Parcial: sólo cambian los campos enviados. PUT se acepta con el mismo comportamiento.

Parámetros

NombreDóndeTipoDescripción
maestro *path«clientes» | «vehiculos» | «conductores»
id *pathinteger

Cuerpo (application/json)

Cliente — para /clientes

CampoTipoDescripción
nombre *stringMáximo 255 caracteres.
nif string | nullMáximo 20 caracteres.
tipo «cargador» | «transportista» | «ambos»Por defecto, "cargador".
domicilio string | nullMáximo 255 caracteres.
cp string | nullMáximo 10 caracteres.
poblacion string | nullMáximo 255 caracteres.
provincia string | nullMáximo 255 caracteres.
telefono string | nullMáximo 30 caracteres.
email string (email) | null
persona_contacto string | nullMáximo 255 caracteres.
num_autorizacion string | nullMáximo 50 caracteres.
notas string | nullMáximo 2000 caracteres.
activo booleanPor defecto, true.

Vehiculo — para /vehiculos

CampoTipoDescripción
matricula *stringMáximo 20 caracteres.
tipo «tractor» | «remolque» | «semirremolque»Por defecto, "tractor".
descripcion string | nullMáximo 255 caracteres.
activo booleanPor defecto, true.

Conductor — para /conductores

CampoTipoDescripción
nombre *stringMáximo 255 caracteres.
nif string | nullMáximo 20 caracteres.
telefono string | nullMáximo 30 caracteres.
activo booleanPor defecto, true.

Respuestas

  • 200Ficha modificada.
  • 404No existe o no pertenece a su empresa.esquema Error
    {
      "message": "No existe ese recurso o no pertenece a su empresa.",
      "codigo": "no_encontrado"
    }
  • 422Datos inválidos. errors va indexado por la clave anidada del campo.
    {
      "message": "El campo cargador es obligatorio.",
      "codigo": "validacion",
      "errors": {
        "cargador.nombre": [
          "El campo cargador es obligatorio."
        ]
      }
    }
delete/{maestro}/{id}

Dar de baja una ficha

Baja lógica: la ficha deja de ofrecerse pero se conserva para los DeCA que la referencian.

Parámetros

NombreDóndeTipoDescripción
maestro *path«clientes» | «vehiculos» | «conductores»
id *pathinteger

Respuestas

  • 204Ficha dada de baja.
  • 404No existe o no pertenece a su empresa.esquema Error
    {
      "message": "No existe ese recurso o no pertenece a su empresa.",
      "codigo": "no_encontrado"
    }

Esquemas

Los objetos que devuelven las rutas. Los campos anidados se nombran con punto, igual que en los errores de validación (cargador.nombre).

Documento

CampoTipoDescripción
cargador objeto
cargador.cliente_id integer | nullCliente de su empresa del que copiar los datos.
cargador.nombre string | nullMáximo 255 caracteres.
cargador.nif string | nullMáximo 20 caracteres.
cargador.domicilio string | nullMáximo 255 caracteres.
transportista objeto
transportista.cliente_id integer | nullCliente de su empresa del que copiar los datos.
transportista.nombre string | nullMáximo 255 caracteres.
transportista.nif string | nullMáximo 20 caracteres.
transportista.domicilio string | nullMáximo 255 caracteres.
transportista.autorizacion string | nullNúmero de autorización de transporte. Máximo 50 caracteres.
destinatario objeto
destinatario.cliente_id integer | nullCliente de su empresa del que copiar los datos.
destinatario.nombre string | nullMáximo 255 caracteres.
destinatario.nif string | nullMáximo 20 caracteres.
destinatario.domicilio string | nullMáximo 255 caracteres.
conductor objeto
conductor.conductor_id integer | null
conductor.nombre string | nullMáximo 255 caracteres.
vehiculo objeto
vehiculo.tractor_id integer | nullVehículo de su empresa del que tomar la matrícula.
vehiculo.remolque_id integer | null
vehiculo.matricula_tractor string | nullMáximo 20 caracteres.
vehiculo.matricula_remolque string | nullMáximo 20 caracteres.
servicio objeto
servicio.origen stringMáximo 255 caracteres.
servicio.destino stringMáximo 255 caracteres.
servicio.naturaleza_mercancia stringMáximo 1000 caracteres.
servicio.peso number | nullEn kilogramos. Mínimo 0.
servicio.bultos integer | nullMínimo 0.
servicio.fecha_envio string (date)Fecha de carga.
servicio.fecha_entrega string (date) | nullNo anterior a la de carga.
servicio.observaciones string | nullMáximo 2000 caracteres.
servicio.precio_porte number | nullPrecio del porte en euros, con dos decimales como máximo. Opcional: no es un dato del artículo 6 de la Orden FOM/2861/2012. Si se informa, se imprime en el PDF, que cualquiera con el código QR puede descargar. Mínimo 0.
servicio.otros_envios array de EnvioAdicionalEnvíos del 2 en adelante de un DeCA agrupado (Resolución de 5 de junio de 2026, apartado sexto): sólo si el cargador contractual y el transportista efectivo son los mismos en todos. Los campos de arriba son el envío 1, y su peso pasa a ser obligatorio. La fecha de carga es común. En una modificación, si se envía, sustituye entera a la lista actual; vacía, convierte el DeCA en uno de un solo envío. Un DeCA agrupado cuenta como una emisión.
uuid string (uuid)
referencia string
version integer
situacion «vigente» | «anulado»
anulacion objeto
anulacion.fecha string (date-time)
anulacion.motivo string
envio objeto
envio.email_destinatario string | null
envio.estado «pendiente» | «encolado» | «enviado» | «error»
pdf objeto
pdf.url string (uri)
pdf.bytes integer | null
pdf.sha256 string | null
pdf.generado_en string (date-time) | null
url_publica string (uri)La URL del QR: descarga directa del PDF. Sin sesión, sin cookies.
avisos array de stringAdvertencias que no impiden emitir. Hoy, los datos del artículo 6 de la Orden FOM/2861/2012 que faltan (NIF y domicilio del cargador, NIF del transportista, peso). Vacío si no hay ninguna.
creado_por objeto
creado_por.id integer
creado_por.nombre string
creado_en string (date-time)
actualizado_en string (date-time)
modificaciones array de objetoSólo en la ficha.

Cliente

CampoTipoDescripción
nombre *stringMáximo 255 caracteres.
nif string | nullMáximo 20 caracteres.
tipo «cargador» | «transportista» | «ambos»Por defecto, "cargador".
domicilio string | nullMáximo 255 caracteres.
cp string | nullMáximo 10 caracteres.
poblacion string | nullMáximo 255 caracteres.
provincia string | nullMáximo 255 caracteres.
telefono string | nullMáximo 30 caracteres.
email string (email) | null
persona_contacto string | nullMáximo 255 caracteres.
num_autorizacion string | nullMáximo 50 caracteres.
notas string | nullMáximo 2000 caracteres.
activo booleanPor defecto, true.

Vehiculo

CampoTipoDescripción
matricula *stringMáximo 20 caracteres.
tipo «tractor» | «remolque» | «semirremolque»Por defecto, "tractor".
descripcion string | nullMáximo 255 caracteres.
activo booleanPor defecto, true.

Conductor

CampoTipoDescripción
nombre *stringMáximo 255 caracteres.
nif string | nullMáximo 20 caracteres.
telefono string | nullMáximo 30 caracteres.
activo booleanPor defecto, true.

Cuenta

CampoTipoDescripción
empresa objeto
empresa.nombre string
empresa.nif string | null
usuario objeto
usuario.id integer
usuario.nombre string
usuario.email string
clave objeto
clave.nombre string
clave.habilidades array de string
clave.caduca_en string (date-time) | null
plan objeto
plan.clave string
plan.nombre string
plan.estado string
cupo objeto
cupo.anio integer
cupo.usados integer
cupo.limite integer | nullnull = sin límite.
cupo.restantes integer | null
cupo.puede_emitir boolean

Error

CampoTipoDescripción
message *string
codigo *string
accion stringQué puede hacer el cliente para resolverlo.
detalle objeto

Meta

CampoTipoDescripción
current_page integer
last_page integer
per_page integer
total integer