{
  "info": {
    "name": "DeCA Profesional API v1",
    "description": "Rellena la variable apiKey en un entorno de Postman (nunca en la colección compartida). Fechas DD-MM-AAAA; horas de Madrid.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": {
    "type": "bearer",
    "bearer": [
      {
        "key": "token",
        "value": "{{apiKey}}",
        "type": "string"
      }
    ]
  },
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://decaprofesional.es"
    },
    {
      "key": "apiKey",
      "value": ""
    },
    {
      "key": "decaId",
      "value": ""
    },
    {
      "key": "externalId",
      "value": ""
    }
  ],
  "item": [
    {
      "name": "GET /api/v1/me",
      "request": {
        "method": "GET",
        "description": "Comprueba la credencial: integración, empresa, permisos, límites y uso del mes.",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/me",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "me"
          ]
        }
      }
    },
    {
      "name": "POST /api/v1/decas/validate",
      "request": {
        "method": "POST",
        "description": "Valida un DeCA sin crearlo: mismas reglas que la creación.",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/decas/validate",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "decas",
            "validate"
          ]
        },
        "body": {
          "mode": "raw",
          "raw": "{\n  \"externalId\": \"TR-45882\",\n  \"reference\": \"Pedido 88231\",\n  \"loadDate\": \"06-10-2026\",\n  \"unloadDate\": \"07-10-2026\",\n  \"vehicle\": {\n    \"tractorPlate\": \"1234 KLM\",\n    \"trailerPlate\": \"R-5678-BBC\"\n  },\n  \"shipper\": {\n    \"name\": \"CERÁMICAS DEL MEDITERRÁNEO S.A.\",\n    \"taxId\": \"A12345674\",\n    \"country\": \"ES\",\n    \"address\": \"Carretera de Alcora km 3\",\n    \"postalCode\": \"12006\",\n    \"city\": \"Castellón de la Plana\"\n  },\n  \"carrier\": \"self\",\n  \"shipments\": [\n    {\n      \"loadLocation\": {\n        \"name\": \"Planta 1\",\n        \"address\": \"Carretera de Alcora km 3\",\n        \"postalCode\": \"12006\",\n        \"city\": \"Castellón de la Plana\",\n        \"province\": \"Castellón\",\n        \"country\": \"ES\"\n      },\n      \"unloadLocation\": {\n        \"name\": \"Entrepôt Lyon Sud\",\n        \"address\": \"12 Rue du Port\",\n        \"postalCode\": \"69007\",\n        \"city\": \"Lyon\",\n        \"country\": \"FR\"\n      },\n      \"goods\": \"Azulejo cerámico en palés\",\n      \"weight\": 18400,\n      \"recipient\": \"Céramique Rhône SARL\"\n    }\n  ]\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "POST /api/v1/decas",
      "request": {
        "method": "POST",
        "description": "Crea un DeCA y devuelve la URL de verificación, la referencia y el PDF.",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/decas",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "decas"
          ]
        },
        "body": {
          "mode": "raw",
          "raw": "{\n  \"externalId\": \"TR-45882\",\n  \"reference\": \"Pedido 88231\",\n  \"loadDate\": \"06-10-2026\",\n  \"unloadDate\": \"07-10-2026\",\n  \"vehicle\": {\n    \"tractorPlate\": \"1234 KLM\",\n    \"trailerPlate\": \"R-5678-BBC\"\n  },\n  \"shipper\": {\n    \"name\": \"CERÁMICAS DEL MEDITERRÁNEO S.A.\",\n    \"taxId\": \"A12345674\",\n    \"country\": \"ES\",\n    \"address\": \"Carretera de Alcora km 3\",\n    \"postalCode\": \"12006\",\n    \"city\": \"Castellón de la Plana\"\n  },\n  \"carrier\": \"self\",\n  \"shipments\": [\n    {\n      \"loadLocation\": {\n        \"name\": \"Planta 1\",\n        \"address\": \"Carretera de Alcora km 3\",\n        \"postalCode\": \"12006\",\n        \"city\": \"Castellón de la Plana\",\n        \"province\": \"Castellón\",\n        \"country\": \"ES\"\n      },\n      \"unloadLocation\": {\n        \"name\": \"Entrepôt Lyon Sud\",\n        \"address\": \"12 Rue du Port\",\n        \"postalCode\": \"69007\",\n        \"city\": \"Lyon\",\n        \"country\": \"FR\"\n      },\n      \"goods\": \"Azulejo cerámico en palés\",\n      \"weight\": 18400,\n      \"recipient\": \"Céramique Rhône SARL\"\n    }\n  ]\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "GET /api/v1/decas",
      "request": {
        "method": "GET",
        "description": "Lista los DeCA, del más reciente al más antiguo, con paginación por cursor.",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/decas",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "decas"
          ]
        }
      }
    },
    {
      "name": "GET /api/v1/decas/{id}",
      "request": {
        "method": "GET",
        "description": "El DeCA completo: estado, periodo del servicio, URL de verificación, PDF y datos.",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/decas/{{decaId}}",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "decas",
            "{{decaId}}"
          ]
        }
      }
    },
    {
      "name": "GET /api/v1/decas/{id}/status",
      "request": {
        "method": "GET",
        "description": "Estado ligero (versión, disponibilidad, URL de verificación) para consultas periódicas.",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/decas/{{decaId}}/status",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "decas",
            "{{decaId}}",
            "status"
          ]
        }
      }
    },
    {
      "name": "GET /api/v1/decas/{id}/versions",
      "request": {
        "method": "GET",
        "description": "Historial de versiones: motivo del cambio, origen (api / user) y URL y PDF de cada una.",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/decas/{{decaId}}/versions",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "decas",
            "{{decaId}}",
            "versions"
          ]
        }
      }
    },
    {
      "name": "GET /api/v1/decas/{id}/pdf",
      "request": {
        "method": "GET",
        "description": "Descarga el PDF (versión vigente o ?version=N).",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/decas/{{decaId}}/pdf",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "decas",
            "{{decaId}}",
            "pdf"
          ]
        }
      }
    },
    {
      "name": "POST /api/v1/decas/{id}/corrections",
      "request": {
        "method": "POST",
        "description": "Corrige un DeCA: crea una nueva versión con nueva URL, QR y PDF.",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/decas/{{decaId}}/corrections",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "decas",
            "{{decaId}}",
            "corrections"
          ]
        },
        "body": {
          "mode": "raw",
          "raw": "{}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "GET /api/v1/decas/{id}/vehicles",
      "request": {
        "method": "GET",
        "description": "Vehículos del transporte: el inicial y cada cambio registrado, con el actual marcado.",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/decas/{{decaId}}/vehicles",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "decas",
            "{{decaId}}",
            "vehicles"
          ]
        }
      }
    },
    {
      "name": "POST /api/v1/decas/{id}/vehicle-changes",
      "request": {
        "method": "POST",
        "description": "Registra un cambio de vehículo (tractora y, si cambia, remolque) durante el transporte.",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/decas/{{decaId}}/vehicle-changes",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "decas",
            "{{decaId}}",
            "vehicle-changes"
          ]
        },
        "body": {
          "mode": "raw",
          "raw": "{}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "POST /api/v1/decas/{id}/annulment",
      "request": {
        "method": "POST",
        "description": "Anula un DeCA. Es definitivo; repetir la llamada devuelve 200 sin cambios.",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/decas/{{decaId}}/annulment",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "decas",
            "{{decaId}}",
            "annulment"
          ]
        },
        "body": {
          "mode": "raw",
          "raw": "{}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "POST /api/v1/decas/{id}/completion-request",
      "request": {
        "method": "POST",
        "description": "Pide a un tercero, por email, los datos que faltan en un borrador.",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/decas/{{decaId}}/completion-request",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "decas",
            "{{decaId}}",
            "completion-request"
          ]
        },
        "body": {
          "mode": "raw",
          "raw": "{}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "POST /api/v1/decas/{id}/completion-request/resend",
      "request": {
        "method": "POST",
        "description": "Reenvía la solicitud con un enlace nuevo (el anterior deja de funcionar).",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/decas/{{decaId}}/completion-request/resend",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "decas",
            "{{decaId}}",
            "completion-request",
            "resend"
          ]
        },
        "body": {
          "mode": "raw",
          "raw": "{}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "POST /api/v1/decas/batch",
      "request": {
        "method": "POST",
        "description": "Crea hasta 50 DeCA en una sola llamada (lote).",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/decas/batch",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "decas",
            "batch"
          ]
        },
        "body": {
          "mode": "raw",
          "raw": "{}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "GET /api/v1/batches/{id}",
      "request": {
        "method": "GET",
        "description": "Estado del lote y resultado de cada elemento (created, replayed, failed, pending).",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/batches/{{decaId}}",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "batches",
            "{{decaId}}"
          ]
        }
      }
    },
    {
      "name": "GET /api/v1/batches/{id}/pdfs",
      "request": {
        "method": "GET",
        "description": "Descarga un ZIP con el PDF vigente de cada DeCA creado por el lote.",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/batches/{{decaId}}/pdfs",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "batches",
            "{{decaId}}",
            "pdfs"
          ]
        }
      }
    },
    {
      "name": "POST /api/v1/drafts",
      "request": {
        "method": "POST",
        "description": "Abre un borrador nuevo e independiente (datos parciales). No consume cuota.",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/drafts",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "drafts"
          ]
        },
        "body": {
          "mode": "raw",
          "raw": "{}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "GET /api/v1/drafts",
      "request": {
        "method": "GET",
        "description": "Lista los borradores: status=open (por defecto) | generated | cancelled | all.",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/drafts",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "drafts"
          ]
        }
      }
    },
    {
      "name": "GET /api/v1/drafts/{id}",
      "request": {
        "method": "GET",
        "description": "Un borrador, con ready e issues (lo que falta para poder generarlo).",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/drafts/{{decaId}}",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "drafts",
            "{{decaId}}"
          ]
        }
      }
    },
    {
      "name": "PATCH /api/v1/drafts/{id}",
      "request": {
        "method": "PATCH",
        "description": "Modifica o completa un borrador abierto (JSON Merge Patch).",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/drafts/{{decaId}}",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "drafts",
            "{{decaId}}"
          ]
        },
        "body": {
          "mode": "raw",
          "raw": "{}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "POST /api/v1/drafts/{id}/generate",
      "request": {
        "method": "POST",
        "description": "Genera el DeCA definitivo de ese borrador; los demás no cambian.",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/drafts/{{decaId}}/generate",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "drafts",
            "{{decaId}}",
            "generate"
          ]
        },
        "body": {
          "mode": "raw",
          "raw": "{}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "DELETE /api/v1/drafts/{id}",
      "request": {
        "method": "DELETE",
        "description": "Descarta un borrador abierto (queda como cancelled).",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/drafts/{{decaId}}",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "drafts",
            "{{decaId}}"
          ]
        }
      }
    },
    {
      "name": "POST /api/v1/decas/{id}/service-completion",
      "request": {
        "method": "POST",
        "description": "Marca el servicio como finalizado (dato operativo; el DeCA, su PDF y su URL no cambian).",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/decas/{{decaId}}/service-completion",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "decas",
            "{{decaId}}",
            "service-completion"
          ]
        },
        "body": {
          "mode": "raw",
          "raw": "{}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "DELETE /api/v1/decas/{id}/service-completion",
      "request": {
        "method": "DELETE",
        "description": "Reabre un servicio marcado como finalizado (vuelve a pendiente).",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/decas/{{decaId}}/service-completion",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "decas",
            "{{decaId}}",
            "service-completion"
          ]
        }
      }
    },
    {
      "name": "GET /api/v1/load-orders",
      "request": {
        "method": "GET",
        "description": "Lista las órdenes de carga: número, estado, formato (junta o separada), DeCA vinculado, matrículas pendientes y aceptación.",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/load-orders",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "load-orders"
          ]
        }
      }
    },
    {
      "name": "GET /api/v1/load-orders/{id}",
      "request": {
        "method": "GET",
        "description": "Una orden de carga: estado, versión vigente, DeCA vinculado y aceptación del transportista.",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/load-orders/{{decaId}}",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "load-orders",
            "{{decaId}}"
          ]
        }
      }
    },
    {
      "name": "GET /api/v1/load-orders/{id}/pdf",
      "request": {
        "method": "GET",
        "description": "El PDF de la versión vigente de la orden de carga.",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/load-orders/{{decaId}}/pdf",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "load-orders",
            "{{decaId}}",
            "pdf"
          ]
        }
      }
    },
    {
      "name": "GET /api/v1/saved/companies",
      "request": {
        "method": "GET",
        "description": "Lista las empresas habituales (cargadores y transportistas) de la empresa.",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/saved/companies",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "saved",
            "companies"
          ]
        }
      }
    },
    {
      "name": "GET /api/v1/saved/companies/{externalId}",
      "request": {
        "method": "GET",
        "description": "Lee un registro por el identificador de tu ERP o TMS (externalId).",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/saved/companies/{{externalId}}",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "saved",
            "companies",
            "{{externalId}}"
          ]
        }
      }
    },
    {
      "name": "PUT /api/v1/saved/companies/{externalId}",
      "request": {
        "method": "PUT",
        "description": "Crea o actualiza el registro con ese externalId (sincronización sin duplicados).",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/saved/companies/{{externalId}}",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "saved",
            "companies",
            "{{externalId}}"
          ]
        },
        "body": {
          "mode": "raw",
          "raw": "{}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "DELETE /api/v1/saved/companies/{externalId}",
      "request": {
        "method": "DELETE",
        "description": "Borra el registro con ese externalId.",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/saved/companies/{{externalId}}",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "saved",
            "companies",
            "{{externalId}}"
          ]
        }
      }
    },
    {
      "name": "GET /api/v1/saved/vehicles",
      "request": {
        "method": "GET",
        "description": "Lista los vehículos habituales (con su conductor habitual) de la empresa.",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/saved/vehicles",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "saved",
            "vehicles"
          ]
        }
      }
    },
    {
      "name": "GET /api/v1/saved/vehicles/{externalId}",
      "request": {
        "method": "GET",
        "description": "Lee un registro por el identificador de tu ERP o TMS (externalId).",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/saved/vehicles/{{externalId}}",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "saved",
            "vehicles",
            "{{externalId}}"
          ]
        }
      }
    },
    {
      "name": "PUT /api/v1/saved/vehicles/{externalId}",
      "request": {
        "method": "PUT",
        "description": "Crea o actualiza el registro con ese externalId (sincronización sin duplicados).",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/saved/vehicles/{{externalId}}",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "saved",
            "vehicles",
            "{{externalId}}"
          ]
        },
        "body": {
          "mode": "raw",
          "raw": "{}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "DELETE /api/v1/saved/vehicles/{externalId}",
      "request": {
        "method": "DELETE",
        "description": "Borra el registro con ese externalId.",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/saved/vehicles/{{externalId}}",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "saved",
            "vehicles",
            "{{externalId}}"
          ]
        }
      }
    },
    {
      "name": "GET /api/v1/saved/places",
      "request": {
        "method": "GET",
        "description": "Lista los lugares habituales de carga y descarga de la empresa.",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/saved/places",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "saved",
            "places"
          ]
        }
      }
    },
    {
      "name": "GET /api/v1/saved/places/{externalId}",
      "request": {
        "method": "GET",
        "description": "Lee un registro por el identificador de tu ERP o TMS (externalId).",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/saved/places/{{externalId}}",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "saved",
            "places",
            "{{externalId}}"
          ]
        }
      }
    },
    {
      "name": "PUT /api/v1/saved/places/{externalId}",
      "request": {
        "method": "PUT",
        "description": "Crea o actualiza el registro con ese externalId (sincronización sin duplicados).",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/saved/places/{{externalId}}",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "saved",
            "places",
            "{{externalId}}"
          ]
        },
        "body": {
          "mode": "raw",
          "raw": "{}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "DELETE /api/v1/saved/places/{externalId}",
      "request": {
        "method": "DELETE",
        "description": "Borra el registro con ese externalId.",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/saved/places/{{externalId}}",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "saved",
            "places",
            "{{externalId}}"
          ]
        }
      }
    },
    {
      "name": "GET /api/v1/saved/shipments",
      "request": {
        "method": "GET",
        "description": "Lista los envíos habituales (lugar de carga + lugar de descarga + mercancía) de la empresa.",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/saved/shipments",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "saved",
            "shipments"
          ]
        }
      }
    },
    {
      "name": "GET /api/v1/saved/shipments/{externalId}",
      "request": {
        "method": "GET",
        "description": "Lee un registro por el identificador de tu ERP o TMS (externalId).",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/saved/shipments/{{externalId}}",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "saved",
            "shipments",
            "{{externalId}}"
          ]
        }
      }
    },
    {
      "name": "PUT /api/v1/saved/shipments/{externalId}",
      "request": {
        "method": "PUT",
        "description": "Crea o actualiza el registro con ese externalId (sincronización sin duplicados).",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/saved/shipments/{{externalId}}",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "saved",
            "shipments",
            "{{externalId}}"
          ]
        },
        "body": {
          "mode": "raw",
          "raw": "{}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "DELETE /api/v1/saved/shipments/{externalId}",
      "request": {
        "method": "DELETE",
        "description": "Borra el registro con ese externalId.",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/saved/shipments/{{externalId}}",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "saved",
            "shipments",
            "{{externalId}}"
          ]
        }
      }
    }
  ]
}