Upload a flight via API (CSV log verified method)

No requiere cuenta Verifica, almacena y crea gráficos

Resumen

Esta es la versión programática de la herramienta web de carga. Toma un registro de vuelo, lo verifica exactamente como el punto final de Verificación CSV y, si el registro es auténtico y aún no está almacenado, añade el vuelo a la nube, genera las miniaturas de los gráficos y devuelve el nuevo vuelo.

Si el mismo vuelo ya se ha subido, no se añade de nuevo. En su lugar se devuelve el vuelo existente, con el indicador duplicate activado. Esto coincide con el comportamiento de la herramienta web, por lo que reenviar un registro siempre es seguro.

Punto final

POST https://www.altimetercloud.com/es/api/upload/ Parámetro: csv

Autenticación

Ninguna. Las cargas son anónimas, igual que en la herramienta web. La verificación criptográfica es el filtro: solo los registros auténticos y sin editar de un Nano real pueden pasar, y los duplicados se ignoran, de modo que un punto final abierto solo almacena registros legítimos. Un vuelo se asocia a su dispositivo, y el propietario del dispositivo puede reclamarlo más tarde añadiendo ese dispositivo a su cuenta de Altimeter Cloud.

Solicitud

Envíe el registro de vuelo, sin editar, como campo de archivo multipart llamado csv (o flightlog), o como parámetro POST de texto plano csv.

curl -X POST https://www.altimetercloud.com/es/api/upload/ \
  -F "csv=@flight_1234.csv"

Respuesta

La API devuelve JSON. Cuando el vuelo se añade por primera vez, duplicate es false y las miniaturas se acaban de generar:

✓ Verificado y subido
{
  "success": true,
  "verified": true,
  "duplicate": false,
  "verify_method": "Ed25519",
  "flight": {
    "id": 1234,
    "url": "https://www.altimetercloud.com/es/flights/1234/",
    "firmware": "1.52",
    "hardware": "4",
    "device_tag": "MY-NANO",
    "competitor_tag": "C-07",
    "apogee": 246.4,
    "apogee_time": 5.21,
    "max_velocity": 98.3,
    "samples": 3210,
    "flight_unique_id": "a1b2c3...",
    "thumbnails": {
      "meters_small": "https://www.altimetercloud.com/es/flightdata/4/1234.webp",
      "meters_large": "https://www.altimetercloud.com/es/flightdata/4/1234_l.webp",
      "feet_small":   "https://www.altimetercloud.com/es/flightdata/4/1234_ft.webp",
      "feet_large":   "https://www.altimetercloud.com/es/flightdata/4/1234_l_ft.webp",
      "miles_small":  "https://www.altimetercloud.com/es/flightdata/4/1234_mi.webp",
      "miles_large":  "https://www.altimetercloud.com/es/flightdata/4/1234_l_mi.webp",
      "km_small":     "https://www.altimetercloud.com/es/flightdata/4/1234_km.webp",
      "km_large":     "https://www.altimetercloud.com/es/flightdata/4/1234_l_km.webp"
    }
  }
}

Cuando el mismo vuelo ya existe, se devuelve sin cambios, con duplicate a true y sin regenerar las miniaturas:

↻ Ya almacenado
{
  "success": true,
  "verified": true,
  "duplicate": true,
  "verify_method": "Ed25519",
  "flight": { "id": 1234, "url": "https://www.altimetercloud.com/es/flights/1234/", "...": "..." }
}

Si el registro no supera la verificación, no se almacena:

✗ Verificación fallida
{
  "success": false,
  "verified": false,
  "error": { "code": "400", "message": "Flight log failed verification" }
}

Gestión de duplicados

Un vuelo se considera ya almacenado cuando su dispositivo y su hash de firma coinciden con un vuelo ya subido. En ese caso no se añade nada y no se reconstruye ningún gráfico; simplemente recibe el id del vuelo existente con duplicate a true.

Campos de la respuesta

CampoTipoDescripción
successbooleanVerdadero si el registro fue aceptado (recién almacenado o ya presente)
verifiedbooleanSi el registro superó la verificación criptográfica
duplicatebooleanVerdadero si el vuelo ya existía y no se volvió a añadir
verify_methodstringMétodo usado: Ed25519, HMAC-SHA256 o SHA-256
flight.idintegerEl id del vuelo en la nube (nuevo o existente)
flight.flight_unique_idstringEl hash de firma, utilizable con el punto final Información de vuelo
flight.thumbnailsobjectURLs de las imágenes de gráfico en todos los tamaños
error.code / error.messagestringCódigo de error y descripción (en caso de fallo)

Errores

CódigoSignificado
400 (verificación)El registro no superó la verificación criptográfica y no se almacenó
400 (presión)El registro no superó la comprobación cruzada de presión y no se almacenó
412No se proporcionó ningún registro de vuelo en la solicitud

Reclamar un vuelo

Como las cargas son anónimas, un vuelo solo está vinculado al dispositivo que lo registró. Para tomar posesión de los vuelos de un dispositivo, añada ese dispositivo a su cuenta de Altimeter Cloud; sus vuelos, incluidos los subidos mediante esta API, se reclaman entonces automáticamente.

Notas

La verificación aquí es idéntica a la del punto final de verificación CSV, por lo que cualquier registro que se verifique allí podrá subirse aquí. La única diferencia es que este punto final además almacena el vuelo y construye sus gráficos. Para comprobar un registro sin almacenarlo, use el punto final de Verificación CSV en su lugar. No hay zona de pruebas en vivo en esta página, porque cada llamada correcta crea un vuelo almacenado real.