Zum Hauptinhalt springen

curl

Die GraphQL-Schnittstelle wird über POST-Anfragen mit JSON-Inhalt aufgerufen. Eine Authentifizierung ist nicht erforderlich.

Einzelabfrage

curl -X POST https://data.bafu.admin.ch/api \
-H "Content-Type: application/json" \
--data '{"query":"{ water { observations { stations(where:{status:{_eq:\"Aufgebaut\"}}, limit: 5) { no name riverName } } } }"}'

Die Antwort folgt der GraphQL-Spezifikation: ein erfolgreicher Aufruf enthält ein Objekt data, ein Fehlerfall ein Objekt errors.

Abfrage aus Datei

Längere Abfragen werden in eine Datei ausgelagert und mit --data-binary übermittelt. Damit bleiben Zeilenumbrüche und Anführungszeichen unverändert.

cat > query.graphql <<'EOF'
{
water {
observations {
data_1day_mean(
where: {
station: { no: { _eq: "2009" } }
timestamp: { _gte: "2026-01-01T00:00:00Z", _lt: "2026-02-01T00:00:00Z" }
}
) {
timestamp
parameterName
value
unitSymbol
}
}
}
}
EOF

curl -X POST https://data.bafu.admin.ch/api \
-H "Content-Type: application/json" \
--data-binary "$(jq -Rs '{query: .}' < query.graphql)"

Abfrage mit Variablen

curl -X POST https://data.bafu.admin.ch/api \
-H "Content-Type: application/json" \
--data @- <<'EOF'
{
"query": "query DailyMean($from: AWSDateTime!, $to: AWSDateTime!, $station: String!) { water { observations { data_1day_mean(where: { station: { no: { _eq: $station } } timestamp: { _gte: $from, _lt: $to } }) { timestamp parameterName value unitSymbol } } } }",
"variables": {
"from": "2026-01-01T00:00:00Z",
"to": "2026-02-01T00:00:00Z",
"station": "2009"
}
}
EOF

Hinweise

  • Der Header Content-Type: application/json ist erforderlich.
  • Doppelte Anführungszeichen in der Abfrage werden bei --data '…' doppelt maskiert (\"). Diese Maskierung entfällt, wenn die Abfrage aus einer Datei gelesen wird.
  • Der HTTP-Status ist auch bei fachlichen Fehlern 200. Das Feld errors in der Antwort gibt Auskunft über fehlerhafte Abfragen.