{
  "name": "DeCAred · Sincronizar vehículos",
  "nodes": [
    {
      "parameters": {
        "content": "## Sincronizar vehículos\n\nCrea o actualiza en la agenda de DeCAred los vehículos de una hoja de Google. Busca por matrícula.\n\nColumnas: `matricula` y, si quieres, `remolque` y `descripcion`.\n\n**Clave de API.** Crea una credencial *Header Auth* llamada «Clave de API de DeCAred»:\n- Name: `Authorization`\n- Value: `Bearer dcr_…` (tu clave de DeCAred → Más → Integraciones)\n\n**Permiso de la clave:** `vehicles:write`. Las claves generales de lectura y escritura ya lo incluyen.\n\nLas filas rechazadas, por ejemplo con la matrícula vacía, aparecen en «Vehículos para revisar» con el motivo.",
        "height": 440,
        "width": 480,
        "color": 4
      },
      "id": "ddd38dc4-2102-52db-81ae-a2a92bacf953",
      "name": "Nota",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -520,
        -200
      ]
    },
    {
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "days",
              "triggerAtHour": 6
            }
          ]
        }
      },
      "id": "33ca7aa1-a018-5d38-ad35-13d5fa65c39a",
      "name": "Cada día",
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.2,
      "position": [
        0,
        0
      ]
    },
    {
      "parameters": {
        "documentId": {
          "__rl": true,
          "mode": "url",
          "value": ""
        },
        "sheetName": {
          "__rl": true,
          "mode": "name",
          "value": "Hoja 1"
        },
        "options": {}
      },
      "id": "b9300d68-7513-5ac9-aec8-024f3288017a",
      "name": "Vehículos de la hoja",
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.5,
      "position": [
        220,
        0
      ],
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "",
          "name": "Google Sheets"
        }
      }
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://decared.com/api/v1/vehicles",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "options": {},
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={{ JSON.stringify({ plate: $json.matricula, trailer: $json.remolque || undefined, description: $json.descripcion || undefined }) }}"
      },
      "id": "51bb952e-90ff-56a2-832b-258a25784666",
      "name": "Crear o actualizar vehículo",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        440,
        0
      ],
      "credentials": {
        "httpHeaderAuth": {
          "id": "",
          "name": "Clave de API de DeCAred"
        }
      },
      "onError": "continueErrorOutput"
    },
    {
      "parameters": {
        "jsCode": "// Una fila por cada matricula que DeCAred no aceptó, con el motivo para revisarla.\nreturn $input.all().map(({ json }) => {\n  const texto = json.error?.message ?? String(json.error ?? '');\n  const m = /^(\\d{3}) - (\".*\")$/s.exec(texto);\n  let respuesta = {};\n  try { respuesta = m ? JSON.parse(JSON.parse(m[2])) : {}; } catch (e) {}\n  return { json: {\n    matricula: json.matricula,\n    http: m ? Number(m[1]) : null,\n    codigo: respuesta.code ?? null,\n    motivo: respuesta.message ?? texto,\n    que_hacer: respuesta.code === 'external_reference_conflict'\n      ? 'Revisa el vehículo en DeCAred.'\n      : 'Corrige la fila: se volverá a intentar en la próxima ejecución.',\n    request_id: respuesta.request_id ?? null,\n  } };\n});"
      },
      "id": "ec096207-52e3-550a-9ea7-3b775752e28b",
      "name": "Vehículos para revisar",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        660,
        120
      ]
    }
  ],
  "connections": {
    "Cada día": {
      "main": [
        [
          {
            "node": "Vehículos de la hoja",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Vehículos de la hoja": {
      "main": [
        [
          {
            "node": "Crear o actualizar vehículo",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Crear o actualizar vehículo": {
      "main": [
        [],
        [
          {
            "node": "Vehículos para revisar",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1"
  },
  "meta": {
    "templateCredsSetupCompleted": false
  },
  "pinData": {}
}
