Upload a flight via API (CSV log verified method)

Konto nie jest wymagane Weryfikuje, zapisuje i tworzy wykresy

Przegląd

To programowa wersja internetowego narzędzia przesyłania. Przyjmuje dziennik lotu, weryfikuje go dokładnie tak jak punkt końcowy Weryfikacja CSV, a jeśli dziennik jest autentyczny i jeszcze nie zapisany, dodaje lot do chmury, generuje miniatury wykresów i zwraca nowy lot.

Jeśli ten sam lot został już przesłany, nie jest dodawany ponownie. Zamiast tego zwracany jest istniejący lot z ustawioną flagą duplicate. Odpowiada to zachowaniu narzędzia internetowego, więc ponowne wysłanie dziennika jest zawsze bezpieczne.

Punkt końcowy

POST https://www.altimetercloud.com/po/api/upload/ Parametr: csv

Uwierzytelnianie

Brak. Przesłania są anonimowe, dokładnie jak w narzędziu internetowym. Bramką jest weryfikacja kryptograficzna: tylko autentyczne, niezmienione dzienniki z prawdziwego Nano mogą ją przejść, a duplikaty są ignorowane, więc otwarty punkt końcowy zapisuje wyłącznie prawdziwe dzienniki. Lot jest powiązany ze swoim urządzeniem, a właściciel urządzenia może go później przejąć, dodając to urządzenie do swojego konta Altimeter Cloud.

Żądanie

Wyślij dziennik lotu, niezmieniony, jako pole pliku multipart o nazwie csv (lub flightlog) albo jako tekstowy parametr POST csv.

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

Odpowiedź

API zwraca JSON. Gdy lot jest dodawany po raz pierwszy, duplicate ma wartość false, a miniatury zostały właśnie wygenerowane:

✓ Zweryfikowano i przesłano
{
  "success": true,
  "verified": true,
  "duplicate": false,
  "verify_method": "Ed25519",
  "flight": {
    "id": 1234,
    "url": "https://www.altimetercloud.com/po/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/po/flightdata/4/1234.webp",
      "meters_large": "https://www.altimetercloud.com/po/flightdata/4/1234_l.webp",
      "feet_small":   "https://www.altimetercloud.com/po/flightdata/4/1234_ft.webp",
      "feet_large":   "https://www.altimetercloud.com/po/flightdata/4/1234_l_ft.webp",
      "miles_small":  "https://www.altimetercloud.com/po/flightdata/4/1234_mi.webp",
      "miles_large":  "https://www.altimetercloud.com/po/flightdata/4/1234_l_mi.webp",
      "km_small":     "https://www.altimetercloud.com/po/flightdata/4/1234_km.webp",
      "km_large":     "https://www.altimetercloud.com/po/flightdata/4/1234_l_km.webp"
    }
  }
}

Gdy ten sam lot już istnieje, jest zwracany bez zmian, z duplicate równym true i bez ponownego generowania miniatur:

↻ Już zapisany
{
  "success": true,
  "verified": true,
  "duplicate": true,
  "verify_method": "Ed25519",
  "flight": { "id": 1234, "url": "https://www.altimetercloud.com/po/flights/1234/", "...": "..." }
}

Jeśli dziennik nie przejdzie weryfikacji, nie jest zapisywany:

✗ Weryfikacja nieudana
{
  "success": false,
  "verified": false,
  "error": { "code": "400", "message": "Flight log failed verification" }
}

Obsługa duplikatów

Lot jest uznawany za już zapisany, gdy jego urządzenie i hash podpisu odpowiadają już przesłanemu lotowi. W takim przypadku nic nie jest dodawane ponownie i żadne wykresy nie są przebudowywane; otrzymujesz po prostu identyfikator istniejącego lotu z duplicate równym true.

Pola odpowiedzi

PoleTypOpis
successbooleanPrawda, jeśli dziennik został przyjęty (nowo zapisany lub już obecny)
verifiedbooleanCzy dziennik przeszedł weryfikację kryptograficzną
duplicatebooleanPrawda, jeśli lot już istniał i nie został dodany ponownie
verify_methodstringUżyta metoda: Ed25519, HMAC-SHA256 lub SHA-256
flight.idintegerIdentyfikator lotu w chmurze (nowy lub istniejący)
flight.flight_unique_idstringHash podpisu, używany z punktem końcowym Informacje o locie
flight.thumbnailsobjectAdresy URL obrazów wykresów we wszystkich rozmiarach
error.code / error.messagestringKod błędu i opis (w razie niepowodzenia)

Błędy

KodZnaczenie
400 (weryfikacja)Dziennik nie przeszedł weryfikacji kryptograficznej i nie został zapisany
400 (ciśnienie)Dziennik nie przeszedł dodatkowej kontroli krzyżowej ciśnienia i nie został zapisany
412W żądaniu nie podano żadnego dziennika lotu

Przejmowanie lotu

Ponieważ przesłania są anonimowe, lot jest powiązany tylko z urządzeniem, które go zarejestrowało. Aby przejąć loty z danego urządzenia, dodaj to urządzenie do swojego konta Altimeter Cloud; jego loty, w tym przesłane przez to API, zostaną wtedy przejęte automatycznie.

Uwagi

Weryfikacja jest tutaj identyczna jak w punkcie końcowym weryfikacji CSV, więc każdy dziennik, który tam przejdzie weryfikację, można przesłać tutaj. Jedyna różnica polega na tym, że ten punkt końcowy dodatkowo zapisuje lot i buduje jego wykresy. Aby sprawdzić dziennik bez zapisywania, użyj zamiast tego punktu końcowego Weryfikacja CSV. Na tej stronie nie ma interaktywnego środowiska testowego, ponieważ każde udane wywołanie tworzy prawdziwy zapisany lot.