> For the complete documentation index, see [llms.txt](https://cheaterstats.gitbook.io/cheaterstats/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://cheaterstats.gitbook.io/cheaterstats/cheaterstats-api-dokumentation.md).

# CheaterStats API Dokumentation

### Basis-URL

Alle API-Anfragen erfolgen an folgende Basis-URL:

* <https://api.cheaterstats.cc/api>

### Authentifizierung

Die API verwendet eine Bearer Token Authentifizierung. Du musst deinen API-Schlüssel im `Authorization` Header jeder Anfrage mitschicken.

**Beispiel Header:**

```http
Authorization: Bearer DEIN_API_TOKEN
Content-Type: application/json
```

Ersetze `DEIN_API_TOKEN` mit deinem tatsächlichen API-Schlüssel.

### Endpunkt: `checkUser.php`

Dieser Endpunkt ermöglicht die Überprüfung eines Discord-Benutzers auf geblacklistete Discord-Server. **Methode:** `GET`

**URL:** `http://cheaterstats.cc/api/checkUser.php`

**Parameter:**

| Parameter  | Beschreibung                                                               | Datentyp | Erforderlich |
| ---------- | -------------------------------------------------------------------------- | -------- | ------------ |
| `memberId` | Die Discord ID des zu überprüfenden Benutzers                              | String   | Ja           |
| `option`   | Durchsuchen nach `cheating` oder `leaking` Discords - Standard: `cheating` | String   | Nein         |

**Beispiel Anfrage:**

```http
GET https://api.cheaterstats.cc/api/checkUser.php?memberId=981278437014638654
Authorization: Bearer DEIN_API_TOKEN
Content-Type: application/json
```

**Antworten:**

**Erfolgreich (Status Code 200):**

Die Antwort enthält Informationen über den Benutzer im JSON-Format.

**Beispiel-Antwort (keine Daten gefunden):**

```json
{
  "user": "98127843701463865",
  "type": "cheating oder leaking",
  "data": []
}
```

**Beispiel-Antwort (Daten gefunden):**

```json
{
  "user": "981278437014638654",
  "type": "cheating oder leaking",
  "data": [
    {
      "serverId": "1106570727156625468",
      "serverName": "antiecho.xyz",
      "roles": [
        {
          "id": "1106572681874255963",
          "name": "Member",
          "roleDetected": "2024-11-24T21:12:48.332Z"
        }
      ],
      "joinedTimestamp": "2024-07-29 22:27:55"
    },
    {
      "serverId": "1217453626205798472",
      "serverName": "Keyser Softwares 🎄",
      "roles": [
        {
          "id": "1217454245310107760",
          "name": "Member",
          "roleDetected": "2024-12-03T17:45:13.099Z"
        }
      ],
      "joinedTimestamp": "2024-12-03 17:44:05"
    },
    {
      "serverId": "1222537810079387899",
      "serverName": "redENGINE Public",
      "roles": [
        {
          "id": "No Roles",
          "name": "No Roles",
          "roleDetected": "2024-11-24T21:12:48.334Z"
        }
      ],
      "joinedTimestamp": "2025-01-03 23:16:49"
    }
  ]
}
```

**Felder der Antwort:**

* **`user`**: Die Discord-ID des abgefragten Benutzers.
* **`type`**: Der Typ der Discord-Server, nach denen gesucht wurde (cheating oder leaking).
* **`data`**: Ein Array mit Serverdaten. Wenn keine Daten gefunden wurden, ist dieses Array leer.
  * **`serverId`**: Die ID des Servers.
  * **`serverName`**: Der Name des Servers.
  * **`roles`**: Ein Array mit Rolleninformationen, die auf dem Server gefunden wurden.
    * **`id`**: Die ID der Rolle (falls gefunden, sonst "No Roles").
    * **`name`**: Der Name der Rolle (falls gefunden, sonst "No Roles").
    * **`roleDetected`**: Der Zeitstempel, wann die Rolle zuletzt erkannt wurde (ISO 8601 Format).
  * **`joinedTimestamp`**: Der Zeitstempel, wann der Benutzer dem Server beigetreten ist (ISO 8601 Format, kann `null` sein).

**Fehler (Status Code 400):**

Wird zurückgegeben, wenn der Parameter `memberId` in der Anfrage fehlt.

**Beispiel Fehler-Antwort:**

```json
{
  "error": "No memberId provided"
}
```

**Fehler (Status Code 400):**

Wird zurückgegeben, wenn der Parameter `option` ungültig ist.

**Beispiel Fehler-Antwort:**

```json
{
  "error": "Invalid option"
}
```
