Tippspiel

API

Die Lese-Endpunkte sind oeffentlich. Dadurch kannst du sie direkt im Browser oder per curl pruefen.

Schreib-Endpunkte brauchen weiterhin den Editor-Token von steven-agent. Den Token nicht in die URL schreiben, sondern als Header senden:

export TIPPSPIEL_TOKEN="<STEVE_TOKEN>"
export TIPPSPIEL_URL="https://tippspiel.kutschenator.de"

Oeffentlich lesen

Alle gespeicherten Tipps:

curl "$TIPPSPIEL_URL/api/tips"

Die Antwort enthaelt match_tips, group_tips und meta_tips (Meta-Tipps je K.-o.-Runde mit round_name, metric und value). metric ist eine von goals, cards, corners_pens oder final_goal_minute.

Alle Spiele:

curl "$TIPPSPIEL_URL/api/fixtures"

Jedes Spiel enthaelt match_number fuer die offizielle Anzeige als Mxx. Laufende Spiele enthalten den aktuellen API-Football-Spielstand in result_home / result_away; gewertet wird trotzdem erst nach FT, AET oder PEN.

Aktuelle Rangliste:

curl "$TIPPSPIEL_URL/api/scorecard"

Die Match-Punkte steigen in den Schlussrunden in drei Stufen: bis einschliesslich Viertelfinale 3 / 2 / 1, Halbfinale 10 / 3 / 1, Spiel um Platz 3 und Finale 30 / 5 / 1 (exakt / Tordifferenz / Tendenz). Die Boni bleiben unveraendert.

In K.-o.-Spielen enthalten die Match-Punkte zwei moegliche Boni: +2, wenn genau eine Person das exakte Ergebnis getippt hat, und +1 ("Underdog"), wenn genau eine Person ueberhaupt Punkte im Spiel holt. Beide stapeln sich (3 + 2 + 1 = 6). Die Boni stecken in match_points und total, die exakte-Tipp-Zahl bleibt unberuehrt.

Jede Zeile enthaelt zusaetzlich meta_points, die Summe aller Meta-Tipps (Tore, Karten, Ecken+Elfmeter und die Finale-Minute); total summiert Match-, Gruppen- und Meta-Punkte. Ein exakter Meta-Tipp zaehlt auch in exact_count.

Ergebnis-Tipp setzen

Der Bot darf fuer jeden Spieler schreiben. Der Spieler wird ueber den Username oder die Player-ID adressiert.

curl -X PUT \
  -H "X-API-Token: $TIPPSPIEL_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"home":0,"away":1}' \
  "$TIPPSPIEL_URL/api/tips/conrad/match/1489390"

Antwort bei Erfolg:

{"ok": true}

Wichtige Fehler:

Status Bedeutung
400 Ungueltige Eingabe, z.B. negativer Score
401 Token fehlt oder ist falsch
404 Spieler oder Spiel nicht gefunden
409 Tipp ist gesperrt

Gruppen-Tipp setzen

curl -X PUT \
  -H "X-API-Token: $TIPPSPIEL_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"first_team":"Mexico","second_team":"South Africa"}' \
  "$TIPPSPIEL_URL/api/tips/conrad/group/Group%20A"

Team-Namen muessen den API-Football-Namen entsprechen. Die Weboberflaeche zeigt deutsche Namen, aber die API verwendet die internen Namen aus /api/fixtures.

Meta-Tipp setzen

Pro K.-o.-Runde und Kategorie eine Zahl. Der Rundenname ist der API-Football-round aus /api/fixtures (URL-kodiert), die Kategorie (metric) ist eine von:

curl -X PUT \
  -H "X-API-Token: $TIPPSPIEL_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"value":38}' \
  "$TIPPSPIEL_URL/api/tips/conrad/meta/Round%20of%2032/goals"

Meta-Tipps gibt es in allen K.-o.-Runden inklusive dem Spiel um Platz 3; der final_goal_minute-Tipp bleibt dem Finale vorbehalten. Die Runde sperrt zum Anpfiff ihres ersten Spiels (409), unbekannte oder nicht wertbare Runden liefern 400.

Report Card

Letztes abgeschlossenes Spiel als SVG:

curl "$TIPPSPIEL_URL/api/reports/matches/latest.svg" \
  -o report.svg

Bestimmtes Spiel als SVG:

curl "$TIPPSPIEL_URL/api/reports/matches/1489390.svg" \
  -o report.svg

Die Report Card enthaelt Ergebnis, Gesamtstand, Tipp pro Spieler und Punkte fuer dieses Spiel.

Gruppenwertung

Wenn eine Gruppe fertig gespielt ist, gibt es eine Report Card mit der Endtabelle (Platz 1 bis 4, die ersten beiden als Weiterkommer markiert) und allen Gruppen-Tipps samt Punkten.

Zuletzt entschiedene Gruppe als SVG:

curl "$TIPPSPIEL_URL/api/reports/groups/latest.svg" -o gruppe.svg

Bestimmte Gruppe als SVG (Name URL-kodiert):

curl "$TIPPSPIEL_URL/api/reports/groups/Group%20B.svg" -o gruppe.svg

409 bedeutet, dass die Gruppe noch nicht endgueltig feststeht (siehe Hinweis zur K.-o.-Wertung der Standings), 404 eine unbekannte Gruppe.

Jede Report-URL gibt es auch als PNG (serverseitig mit resvg gerendert, inkl. farbiger Flaggen- und Spieler-Emojis), einfach .svg durch .png ersetzen. Das ist fuer Clients gedacht, die kein SVG rastern koennen:

curl "$TIPPSPIEL_URL/api/reports/matches/latest.png" -o report.png
curl "$TIPPSPIEL_URL/api/reports/groups/latest.png" -o gruppe.png
curl "$TIPPSPIEL_URL/api/reports/tippkarte/next.png" -o tippkarte.png

503 bedeutet, dass der resvg-Renderer im Container fehlt; das SVG funktioniert dann weiterhin.

Tippkarte

Naechster noch nicht gestarteter Spieltag als SVG:

curl "$TIPPSPIEL_URL/api/reports/tippkarte/next.svg" \
  -o tippkarte.svg

Die Tippkarte enthaelt die Matchnummern (M29 usw.), alle Tipps pro Spieler und die Mehrheits-Tendenz pro Spiel.

Hinweise