🎃
🦇
🦇
🦇
🦇
🕸️
🕸️
UtopiaFPS
UtopiaFPS
Developer API

Dokumentacja API

Interfejs RESTful API do statusu serwerów i danych o karach

Wymagane logowanie

Aby wygenerować token API, musisz być zalogowany.

Zaloguj się przez Steam

Rozpoczęcie pracy

API UtopiaFPS umożliwia programowy dostęp do informacji o statusie serwerów oraz rekordów kar. Wszystkie odpowiedzi są w formacie JSON i zawierają nagłówki cache dla optymalnej wydajności.

Adres bazowy

https://utopiafps.pl/api/v1

Limity zapytań

  • Publiczne endpointy: 30 żądań na minutę
  • Chronione endpointy: 60 żądań na minutę (wymagany token API)

Uwierzytelnianie

Chronione endpointy wymagają tokenu API. Dołącz swój token w nagłówku Authorization:

Authorization: Bearer TWÓJ_TOKEN_API

Alternatywnie możesz przekazać token jako parametr zapytania:

?api_token=TWÓJ_TOKEN_API

PUBLICZNE Endpointy serwerów

GET /servers

Pobierz listę wszystkich serwerów z ich aktualnym statusem.

Przykład odpowiedzi:

{
  "success": true,
  "data": [
    {
      "id": 1,
      "name": "Server #1",
      "slug": "server-1",
      "hostname": "UtopiaFPS Server #1",
      "ip": "51.75.59.212:27015",
      "map": "de_dust2",
      "mode": "casual",
      "region": "pl",
      "players_count": 12,
      "max_players": 32,
      "is_online": true,
      "ping_ms": 25,
      "updated_at": "2025-01-23T12:34:56+00:00"
    }
  ],
  "meta": {
    "total": 5,
    "online": 3,
    "cached_at": "2025-01-23T12:34:56+00:00"
  }
}
GET /servers/{slug}

Pobierz szczegółowe informacje o konkretnym serwerze za pomocą jego sluga.

Przykład odpowiedzi:

{
  "success": true,
  "data": {
    "id": 1,
    "name": "Server #1",
    "slug": "server-1",
    "hostname": "UtopiaFPS Server #1",
    "ip": "51.75.59.212:27015",
    "map": "de_dust2",
    "mode": "casual",
    "region": "pl",
    "players_count": 12,
    "max_players": 32,
    "is_online": true,
    "ping_ms": 25,
    "updated_at": "2025-01-23T12:34:56+00:00",
    "players": [
      {
        "name": "PlayerName1",
        "score": 150
      },
      {
        "name": "PlayerName2",
        "score": 120
      }
    ]
  },
  "meta": {
    "cached_at": "2025-01-23T12:34:56+00:00"
  }
}

CHRONIONE Endpointy kar

GET /penalties

Pobierz wszystkie kary (bany, mute, gag, silence, ostrzeżenia) z opcjonalnymi filtrami.

Parametry zapytania:

  • type - Filtruj według typu kary (ban, mute, gag, silence, warn lub puste dla wszystkich)
  • status - Filtruj według statusu (ACTIVE, EXPIRED, UNBANNED)
  • server_id - Filtruj według ID serwera
  • steamid - Filtruj według SteamID64 gracza
  • admin_steamid - Filtruj według SteamID64 admina
  • per_page - Wyników na stronę (domyślnie: 50, maks: 100)
  • page - Numer strony

Przykład odpowiedzi:

{
  "success": true,
  "data": [
    {
      "penalty_type": "ban",
      "id": 123,
      "player_name": "PlayerName",
      "player_steamid": "76561198012345678",
      "admin_name": "AdminName",
      "admin_steamid": "76561198087654321",
      "reason": "Cheating",
      "duration": 0,
      "status": "ACTIVE",
      "server_id": 1,
      "created": "2025-01-23T12:00:00+00:00",
      "ends": null
    },
    {
      "penalty_type": "gag",
      "id": 456,
      "player_name": "AnotherPlayer",
      "player_steamid": "76561198099999999",
      "admin_name": "AdminName",
      "admin_steamid": "76561198087654321",
      "reason": "Spam",
      "duration": 3600,
      "status": "ACTIVE",
      "server_id": 1,
      "created": "2025-01-23T11:00:00+00:00",
      "ends": "2025-01-23T12:00:00+00:00"
    }
  ],
  "meta": {
    "current_page": 1,
    "total": 250,
    "per_page": 50,
    "last_page": 5,
    "counts": {
      "ban": 100,
      "gag": 50,
      "mute": 40,
      "silence": 30,
      "warn": 30
    },
    "cached_at": "2025-01-23T12:34:56+00:00"
  }
}
GET /bans

Pobierz stronicowaną listę banów z opcjonalnymi filtrami.

Parametry zapytania:

  • status - Filtruj według statusu (ACTIVE, EXPIRED, UNBANNED)
  • server_id - Filtruj według ID serwera
  • steamid - Filtruj według SteamID64 gracza
  • per_page - Wyników na stronę (domyślnie: 50, maks: 100)
  • page - Numer strony

Przykład odpowiedzi:

{
  "success": true,
  "data": [
    {
      "id": 123,
      "player_name": "PlayerName",
      "player_steamid": "76561198012345678",
      "admin_name": "AdminName",
      "admin_steamid": "76561198087654321",
      "reason": "Cheating",
      "duration": 0,
      "status": "ACTIVE",
      "server_id": 1,
      "created": "2025-01-23T12:00:00+00:00",
      "ends": null
    }
  ],
  "meta": {
    "current_page": 1,
    "total": 150,
    "per_page": 50,
    "last_page": 3,
    "cached_at": "2025-01-23T12:34:56+00:00"
  }
}
GET /mutes

Pobierz stronicowaną listę wyciszeń z opcjonalnymi filtrami.

Parametry zapytania:

  • status - Filtruj według statusu
  • server_id - Filtruj według ID serwera
  • steamid - Filtruj według SteamID64 gracza
  • type - Filtruj według typu (GAG, MUTE, SILENCE)
  • per_page - Wyników na stronę (domyślnie: 50, maks: 100)
  • page - Numer strony

Struktura odpowiedzi podobna do endpointu banów

GET /warns

Pobierz stronicowaną listę ostrzeżeń z opcjonalnymi filtrami.

Parametry zapytania:

  • status - Filtruj według statusu
  • server_id - Filtruj według ID serwera
  • steamid - Filtruj według SteamID64 gracza
  • per_page - Wyników na stronę (domyślnie: 50, maks: 100)
  • page - Numer strony

Odpowiedzi błędów

401 Unauthorized

{
  "success": false,
  "message": "API token is required"
}

404 Not Found

{
  "success": false,
  "message": "Server not found"
}

429 Too Many Requests

Gdy limit zapytań zostanie przekroczony, otrzymasz kod statusu 429 z informacjami o ponownej próbie w nagłówkach.