Zum Inhalt springen

Veröffentlichte Pässe eines Modells

Listen Sie jede Einheit eines Batteriemodells mit veröffentlichtem Pass auf und geben Sie Pass-ID, aktuelle Version und öffentlichen Link als CSV aus.

Das Skript listet mit listBatteries und den Filtern battery_model_id und passport_status=published die Einheiten eines Batteriemodells, deren Pass veröffentlicht ist, liest jeden Pass mit getPassport und gibt je Einheit eine CSV-Zeile aus: Seriennummer, Pass-ID, aktuelle Version, Zeitpunkt der Veröffentlichung und öffentliche Seite. Es braucht einen Schlüssel mit dem Scope read.

  • Die ID des Modells liefert listBatteryModels.
  • Pässe im Status update_needed sind ebenfalls online (ihre aktuelle Version bleibt öffentlich, bis sie erneut veröffentlicht werden). Starten Sie das Skript ein zweites Mal mit passport_status=update_needed, um sie einzuschließen.
  • Für eine einzelne Modellversion verwenden Sie model_version_id statt battery_model_id.
#!/usr/bin/env bash
# model-passports.sh <model-id>: the published passports of one battery model as CSV (needs curl and jq)
set -euo pipefail
model_id="$1" # the id from listBatteryModels
auth="Authorization: Bearer $BATTERYPASS_API_KEY"
echo "serial_number,passport_id,version_no,published_at,public_url"
cursor=""
while :; do
  page=$(curl -sS --fail --retry 5 -G "$BATTERYPASS_URL/api/v1/batteries" -H "$auth" \
    -d "battery_model_id=$model_id" -d passport_status=published -d limit=200 \
    ${cursor:+--data-urlencode "cursor=$cursor"})
  for id in $(jq -r '.items[].id' <<<"$page"); do
    curl -sS --fail --retry 5 -H "$auth" "$BATTERYPASS_URL/api/v1/batteries/$id/passport" |
      jq -r '[.serial_number, .passport_id, .current_version.version_no, .current_version.published_at, .public_url] | @csv'
  done
  cursor=$(jq -r '.next_cursor // empty' <<<"$page")
  [ -n "$cursor" ] || break
done
Ausgabe
serial_number,passport_id,version_no,published_at,public_url
SV2027-000184,urn:dpp:0192f0c4-7d1e-7a3b-9c55-2f1e8d4a6b10,4,2026-10-24T06:00:03Z,https://batterypass.example.com/pass/0192f0c4-7d1e-7a3b-9c55-2f1e8d4a6b10
SV2027-000185,urn:dpp:0192f0d7-3e2a-7b1c-8d4e-5f6a7b8c9d0e,2,2026-09-30T14:22:10Z,https://batterypass.example.com/pass/0192f0d7-3e2a-7b1c-8d4e-5f6a7b8c9d0e

Die Shell-Fassung setzt jedes CSV-Feld in Anführungszeichen (@csv), die anderen nur, wo es nötig ist. Jede Einheit kostet eine Anfrage, und alle Schlüssel Ihrer Organisation teilen sich 600 Anfragen pro Minute. Pass und Versionen erklärt Pässe und Versionen.