Skip to content

Latest commit

 

History

History
331 lines (275 loc) · 6.94 KB

File metadata and controls

331 lines (275 loc) · 6.94 KB

API Dokumentation

Alle Endpunkte sind unter https://crackfifa.coban.top/api erreichbar und geben JSON zurück.

Übersicht

GET /api/doc

Liefert diese Dokumentation.

Authentifizierung

POST /api/register

Registriert einen neuen Benutzer und gibt ein Auth-Token zurück.

Body-Parameter

  • name (string, erforderlich)
  • email (string, erforderlich, eindeutig)
  • password (string, erforderlich, mindestens 8 Zeichen)

Beispiel

curl -X POST https://crackfifa.coban.top/api/register \
    -H "Content-Type: application/json" \
    -d '{"name":"Max","email":"max@example.com","password":"geheim123"}'

Erfolgreiche Antwort (201 Created)

{
    "token": "<API Token>"
}

POST /api/login

Meldet einen bestehenden Benutzer an und gibt ein Auth-Token zurück.

Body-Parameter

  • email (string, erforderlich)
  • password (string, erforderlich)

Beispiel

curl -X POST https://crackfifa.coban.top/api/login \
    -H "Content-Type: application/json" \
    -d '{"email":"max@example.com","password":"geheim123"}'

Erfolgreiche Antwort (200 OK)

{
    "token": "<API Token>"
}

Bei ungültigen Zugangsdaten folgt eine Antwort 401 mit

{ "message": "Invalid credentials" }

Das Token muss bei geschützten Endpunkten im Header mitgesendet werden:

Authorization: Bearer <API Token>

Lehrerkarten

Die folgenden Endpunkte verwalten Karten von Lehrern.

GET /api/teacher-cards

Listet alle vorhandenen Karten mit zugehörigem Kartentyp auf.

Beispiel

curl https://crackfifa.coban.top/api/teacher-cards

Erfolgreiche Antwort (200 OK)

[
  {
    "id": 1,
    "name": "Beispiel-Lehrer",
    "overall_rating": 90,
    "card_type": {
      "id": 1,
      "name": "Gold"
    }
  }
]

GET /api/teacher-cards/{id}

Liefert eine einzelne Lehrerkarte.

Beispiel

curl https://crackfifa.coban.top/api/teacher-cards/1

Erfolgreiche Antwort (200 OK)

{
  "id": 1,
  "name": "Beispiel-Lehrer",
  "overall_rating": 90,
  "image": "bild.png",
  "year": 2024,
  "card_type": {
    "id": 1,
    "name": "Gold"
  },
  "authority": 80,
  "character": 85,
  "teaching_quality": 95,
  "tech_skills": 70,
  "student_vibe": 88,
  "humor": 60
}

POST /api/teacher-cards

Erstellt eine neue Lehrerkarte.

Body-Parameter

  • name (string, erforderlich)
  • overall_rating (integer 0-100, erforderlich)
  • image (Datei, erforderlich, Bild)
  • year (integer, erforderlich)
  • card_type_id (integer, erforderlich)
  • authority (integer 0-100, erforderlich)
  • character (integer 0-100, erforderlich)
  • teaching_quality (integer 0-100, erforderlich)
  • tech_skills (integer 0-100, erforderlich)
  • student_vibe (integer 0-100, erforderlich)
  • humor (integer 0-100, erforderlich)

Beispiel

curl -X POST https://crackfifa.coban.top/api/teacher-cards \
    -H "Authorization: Bearer <API Token>" \
    -F name="Beispiel-Lehrer" \
    -F overall_rating=90 \
    -F image=@bild.png \
    -F year=2024 \
    -F card_type_id=1 \
    -F authority=80 \
    -F character=85 \
    -F teaching_quality=95 \
    -F tech_skills=70 \
    -F student_vibe=88 \
    -F humor=60

Erfolgreiche Antwort (201 Created)

{
    "id": 1,
    "name": "Beispiel-Lehrer",
    "overall_rating": 90,
    "image": "bild.png",
    "year": 2024,
    "card_type_id": 1,
    "authority": 80,
    "character": 85,
    "teaching_quality": 95,
    "tech_skills": 70,
    "student_vibe": 88,
    "humor": 60
}

PUT /api/teacher-cards/{id}

Aktualisiert eine bestehende Lehrerkarte. Es können optionale Felder wie bei POST /api/teacher-cards gesendet werden.

Beispiel

curl -X PUT https://crackfifa.coban.top/api/teacher-cards/1 \
    -H "Authorization: Bearer <API Token>" \
    -F overall_rating=91

Erfolgreiche Antwort (200 OK)

{
    "id": 1,
    "name": "Beispiel-Lehrer",
    "overall_rating": 91,
    "image": "bild.png",
    "year": 2024,
    "card_type_id": 1,
    "authority": 80,
    "character": 85,
    "teaching_quality": 95,
    "tech_skills": 70,
    "student_vibe": 88,
    "humor": 60
}

DELETE /api/teacher-cards/{id}

Löscht eine Lehrerkarte. Antwort 204 No Content bei Erfolg.

Kartentypen

Verwaltet die verfügbaren Kartentypen.

GET /api/card-types

Listet alle Kartentypen auf.

Beispiel

curl https://crackfifa.coban.top/api/card-types

Erfolgreiche Antwort (200 OK)

[
  {
    "id": 1,
    "name": "Gold",
    "description": "Gold card"
  }
]

GET /api/card-types/{id}

Gibt einen einzelnen Kartentyp zurück.

Beispiel

curl https://crackfifa.coban.top/api/card-types/1

Erfolgreiche Antwort (200 OK)

{
  "id": 1,
  "name": "Gold",
  "description": "Gold card"
}

POST /api/card-types

Legt einen neuen Kartentyp an.

Body-Parameter

  • name (string, erforderlich)
  • description (string, optional)

Beispiel

curl -X POST https://crackfifa.coban.top/api/card-types \
    -H "Authorization: Bearer <API Token>" \
    -H "Content-Type: application/json" \
    -d '{"name":"Gold","description":"Gold card"}'

Erfolgreiche Antwort (201 Created)

{
  "id": 1,
  "name": "Gold",
  "description": "Gold card"
}

PUT /api/card-types/{id}

Aktualisiert einen Kartentyp. Es können optionale Felder wie bei POST /api/card-types gesendet werden.

Beispiel

curl -X PUT https://crackfifa.coban.top/api/card-types/1 \
    -H "Authorization: Bearer <API Token>" \
    -H "Content-Type: application/json" \
    -d '{"description":"Legendäre Goldkarte"}'

Erfolgreiche Antwort (200 OK)

{
  "id": 1,
  "name": "Gold",
  "description": "Legendäre Goldkarte"
}

DELETE /api/card-types/{id}

Löscht einen Kartentyp. Antwort 204 No Content bei Erfolg.

Votes

POST /api/teacher-card-votes

Speichert einen Vote für eine Lehrerkarte. Der Benutzer muss eingeloggt sein.

Body-Parameter

  • teacher_card_id (integer, erforderlich)
  • authority (integer 0-100, erforderlich)
  • character (integer 0-100, erforderlich)
  • teaching_quality (integer 0-100, erforderlich)
  • tech_skills (integer 0-100, erforderlich)
  • student_vibe (integer 0-100, erforderlich)
  • humor (integer 0-100, erforderlich)

Beispiel

curl -X POST https://crackfifa.coban.top/api/teacher-card-votes \
    -H "Authorization: Bearer <API Token>" \
    -H "Content-Type: application/json" \
    -d '{"teacher_card_id":1,"authority":80,"character":85,"teaching_quality":90,"tech_skills":70,"student_vibe":88,"humor":60}'

Erfolgreiche Antwort (201 Created)

{
  "id": 1,
  "teacher_card_id": 1,
  "user_id": 1,
  "authority": 80,
  "character": 85,
  "teaching_quality": 90,
  "tech_skills": 70,
  "student_vibe": 88,
  "humor": 60
}

Bei erneutem Vote für dieselbe Karte wird 409 Conflict zurückgegeben. Hat der Benutzer nach einem Vote für alle Karten abgestimmt, wird is_verified auf true gesetzt.