Karo API Browser

user

Alles rund um den Benutzer

games

Die API ist über /games und momentan noch über /games3 erreichbar. Die Daten sind identisch. Nachwirkungen einer Umstellung, games3 wird irgendwann entfernt

maps

mapimages

generators

chat

messaging

misc

deprecated/obsolete

obsolete/legacy

proxy

external

Zusatzinfos und nicht testbare Requests

  • API Auth
    • Empfohlen: Bei jedem Request über den Header "X-Auth-Key" den api_key setzen, den man über /api/key bekommen kann. Erspart jegliches Cookie-Gehampel. Beispiel in CURL:
      curl https://www.karopapier.de/api/user/check -H "x-auth-key: abcdefghijkl123"
      Der Key kann mit einem DELETE request auf /api/key zurückgesetzt/gelöscht werden.
    • NICHT-MACH Langsame Auth: Bei jedem Request über die Header "X-Auth-Login" und "X-Auth-Password" die Daten setzen. Einfach, dauert allerdings, denn die Passwort-Validierung braucht Rechenzeit. Beispiel in CURL:
      curl https://www.karopapier.de/api/user/check -H "x-auth-login: Didi" -H "x-auth-password: password2028"
    • Auth Veraltet: POST: /api/user/login -- Man poste ein JSON array {"login":"Didi","password":"Karo4ever"} und erhält entweder error 403 oder die API-Daten des User UND 1-2 Cookies, die man sich aufheben und immer mitschicken sollte (wegen App und alten Scripts geht als alias auch noch /api/login, soll aber eigentlich sterben).
  • Settings
    • Sendmail: GET/PATCH: /api/usersettings/sendmail (für Zug-Benachrichtigung per Email)
  • Favoriten
    • Favouriten: PUT: /api/user/favs/12345
    • Favouriten: DELETE: /api/user/favs/12345
  • Notizen
    • PUT: /api/notes/12345 -- JSON-Body {text:"Merken: Nicht letzter werden"}
    • DELETE: /api/notes/12345 (oder Body mit leerem Text, also {text:""})
    • DELETE: /api/notes/12345 (oder Body mit leerem Text, also {text:""})
  • Planned Moves PUT: /api/planned-moves/12345 -- JSON-Body [{x:"1",y:"2",xv:"3",yv:"-4"},{...}]
  • Chat-Nachricht POST /api/chat -- JSON-Body {msg: 'Mein Nachricht im Chat'}
    Optional ein ref: 123456 mitschicken, was eine id-Referenz auf eine existierende Nachricht ist
  • Neues Spiel POST auf /api/game - Am besten hier das Beispiel anschauen
  • Aussteigen DELETE /games/12345
  • Zettel
    • Neue Nachricht: POST /api/messages/1 -- JSON body mit {text: "Hallo Didi!"}
    • Zettel Lesebestätigung: PATCH /api/messages/1 -- Setzt dann den "Unread Counter" uc, also ungelesene pro Kontakt zurück
  • Previews Wenn ein Thumbnail für ein Spiel fehlt, POST /api/preview/{game_id} und der Daumennagelmaler macht das Bild
  • Generatoren POST /api/mapgenerator/generate -- JSON Body zB
    { "generator": "kartograph", "players": 5 } - der Generator erzeugt eine zufällige Karte und liefert die dazugehörigen Map-Informationen zurück.
    Neben der Generatoren-ID bzw Namen können weitere Parameter geschickt werden. Die Einstellungen sind vom Generator abhängig und sehen aktuell so aus: Verfügbare Generatoren-IDs und Parameter sowie Defaults:
    • bagger: { "laenge": 350, "dimx": 80, "dimy": 50, "cpfreq": 10, "matschepampe": 0, "seed": "" }
    • couscous: { "dimx": 30, "dimy": 30, "cpfreq": 10, "matschepampe": 5, "seed": "" }
    • fernschreiber: { "url": "" }
    • irrkarten: { "players": 3, "dimx": 6, "dimy": 6, "Raum_x": 6, "Raum_y": 6, "p_Sackgassen": 30, "numCP": 0, "seed": "" }
    • kartograph: { "players": 7, "length": 20, "vxMin": 1, "vxMax": 6, "vyMin": 1, "vyMax": 7, "seed": "" }
    • kindergarten: { "width": null, "height": null, "filllevel": null, "checkpoints": null, "players": null, "minKarosPerCPF": null, "maxKarosPerCPF": null, "scatteredStarts": null, "scatteredFinishs": null, "scatteredCps": null, "minObjectSize": null, "maxObjectSize": null, "asphaltspec": null, "objectspec": null, "seed": null }
    • zickzack: { "length": 15, "zickMin": 30, "zickMax": 120, "zackMin": 1, "zackMax": 25, "dimXMax": 50, "dimYMax": 50, "cross": 0, "startAngle": -1, "widthMin": 4, "widthMax": 4, "cps": 5, "obstacles": 10, "seed": "" }
    Zusätzlich kann {"night":"1"} mit gesetzt werden, um Nachtkarten zu erzeugen (außer Fernschreiber)

Dies soll zur Dokumentation der bisherigen verfügbaren API-Calls dienen.
Vorschläge bitte PER EMAIL!

{}