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:
goals: Gesamttore der Runde in regulaerer Spielzeit (alle K.-o.-Runden).cards: gelbe + rote Karten der Runde (ab Achtelfinale).corners_pens: Ecken + zugesprochene Elfmeter der Runde, ohne Elfmeterschiessen (ab Achtelfinale).final_goal_minute: Minute des ersten Tors im Finale (nur Finalrunde),valueist die Minute 1 bis 130. Deadline ist der Anpfiff des Finales.
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
- Match-Tipps sperren zum Anpfiff.
- Gruppentipps oeffnen nach den ersten zwei Gruppenspielen und sperren mit dem dritten Gruppenspiel.
- Meta-Tipps sperren zum Anpfiff des ersten Spiels der jeweiligen Runde.
- Alle API-Schreibvorgaenge werden im Audit-Log mit
token:steven-agentprotokolliert. - Der Admin-Sync ist nicht Teil von Stevens Token.