Game Players API

Game Players

POST
/api/game_players.php/register
Register player — returns a persistent public player_tag "#XXXXXXXX" (requires API TOKEN)
PUT
/api/game_players.php/login
Authenticate player (requires API TOKEN, PLAYER TOKEN)
POST
/api/game_players.php/heartbeat
Update player heartbeat (requires API TOKEN, PLAYER TOKEN)
POST
/api/game_players.php/logout
Logout player (requires API TOKEN, PLAYER TOKEN)
PUT
/api/game_players.php/rename
Rename player (requires API TOKEN, PLAYER TOKEN)
GET
/api/game_players.php/list
List all players (requires API TOKEN, PRIVATE TOKEN)
POST
/api/game_players.php/ban
Ban player (requires API TOKEN, PRIVATE TOKEN)
POST
/api/game_players.php/unban
Unban player (requires API TOKEN, PRIVATE TOKEN)
POST
/api/game_players.php/rotate
Rotate player token: issues a new PLAYER TOKEN and invalidates the current one (requires API TOKEN, current PLAYER TOKEN)
POST /api/game_players.php/register
Request:
$ curl -X POST "/api/game_players.php/register" \
  -H "X-Api-Token: API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "player_name": "TestPlayer",
    "birth_year": 2000,
    "player_data": {
      "level": 1,
      "score": 0,
      "inventory": ["sword", "shield"]
    }
  }'

birth_year is optional — pass it whenever the game knows the player's age; a value that could mean under 13 rejects the registration (COPPA).

Response:
{
  "success": true,
  "player_id": "3",
  "private_key": "PLAYER_TOKEN",
  "player_name": "TestPlayer",
  "game_id": 2
}
PUT /api/game_players.php/login
Request:
$ curl -X PUT "/api/game_players.php/login" \
  -H "X-Api-Token: API_TOKEN" \
  -H "X-Game-Player-Token: PLAYER_TOKEN" \
  -H "Content-Type: application/json"
Response:
{
  "success": true,
  "player": {
    "id": 3,
    "game_id": 2,
    "player_name": "TestPlayer",
    "player_data": {
      "level": 1,
      "score": 0,
      "inventory": ["sword", "shield"]
    },
    "is_online": true,
    "last_login": null,
    "last_heartbeat": null,
    "last_logout": null,
    "created_at": "2026-03-13 09:39:06",
    "updated_at": "2026-03-13 09:39:06"
  }
}
POST /api/game_players.php/heartbeat
Request:
$ curl -X POST "/api/game_players.php/heartbeat" \
  -H "X-Api-Token: API_TOKEN" \
  -H "X-Game-Player-Token: PLAYER_TOKEN" \
  -H "Content-Type: application/json"
Response:
{
  "success": true,
  "message": "Heartbeat updated",
  "last_heartbeat": "2026-03-13 09:46:13"
}
POST /api/game_players.php/logout
Request:
$ curl -X POST "/api/game_players.php/logout" \
  -H "X-Api-Token: API_TOKEN" \
  -H "X-Game-Player-Token: PLAYER_TOKEN" \
  -H "Content-Type: application/json"
Response:
{
  "success": true,
  "message": "Player logged out successfully",
  "last_logout": "2026-03-13 09:46:37"
}
PUT /api/game_players.php/rename
Request:
$ curl -X PUT "/api/game_players.php/rename" \
  -H "X-Api-Token: API_TOKEN" \
  -H "X-Game-Player-Token: PLAYER_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "new_name": "NewPlayerName"
  }'
Response:
{
  "success": true,
  "message": "Player name updated successfully",
  "new_name": "NewPlayerName",
  "player_id": 3
}
POST /api/game_players.php/rotate
Issues a new private key and invalidates the current one. Authenticate with the token being rotated. Store the returned key - it is shown only once.
Request:
$ curl -X POST "/api/game_players.php/rotate" \
  -H "X-Api-Token: API_TOKEN" \
  -H "X-Game-Player-Token: PLAYER_TOKEN"
Response:
{
  "success": true,
  "private_key": "NEW_PLAYER_TOKEN",
  "player_id": 3
}
GET /api/game_players.php/list
Request:
$ curl -X GET "/api/game_players.php/list" \
  -H "X-Api-Token: API_TOKEN" \
  -H "X-Api-Private-Token: PRIVATE_TOKEN"
Response:
{
  "success": true,
  "count": 3,
  "players": [
    {
      "id": 1,
      "player_name": "TestPlayer",
      "is_online": true,
      "last_login": null,
      "last_logout": null,
      "last_heartbeat": null,
      "created_at": "2026-03-13 09:37:47"
    },
    {
      "id": 3,
      "player_name": "TestPlayer",
      "is_online": true,
      "last_login": "2026-03-13 09:40:35",
      "last_logout": null,
      "last_heartbeat": null,
      "created_at": "2026-03-13 09:39:06"
    },
    {
      "id": 2,
      "player_name": "TestPlayer",
      "is_online": true,
      "last_login": null,
      "last_logout": null,
      "last_heartbeat": null,
      "created_at": "2026-03-13 09:38:01"
    }
  ]
}
GET /api/game_data.php/player/get
Request:
$ curl -X GET "/api/game_data.php/player/get" \
  -H "X-Api-Token: API_TOKEN" \
  -H "X-Game-Player-Token: PLAYER_TOKEN"
Response:
{
  "success": true,
  "type": "player",
  "player_id": 7,
  "player_name": "TestPlayer",
  "data": {
    "level": 1,
    "score": 0,
    "inventory": ["sword", "shield"]
  }
}
PUT /api/game_data.php/player/update
Request:
$ curl -X PUT "/api/game_data.php/player/update" \
  -H "X-Api-Token: API_TOKEN" \
  -H "X-Game-Player-Token: PLAYER_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "level": 2,
    "score": 100,
    "inventory": ["sword", "shield", "potion"],
    "last_played": "2025-01-13T12:30:00Z"
  }'
Response:
{
  "success": true,
  "message": "Player data updated successfully",
  "updated_at": "2026-01-13 14:27:10"
}
POST /api/matchmaking.php/heartbeat
Request:
$ curl -X POST "/api/matchmaking.php/heartbeat" \
  -H "X-Api-Token: API_TOKEN" \
  -H "X-Game-Player-Token: PLAYER_TOKEN"
Response:
{
  "success": true,
  "status": "ok"
}
POST /api/game_room.php/heartbeat
Request:
$ curl -X POST "/api/game_room.php/heartbeat" \
  -H "X-Api-Token: API_TOKEN" \
  -H "X-Game-Player-Token: PLAYER_TOKEN"
Response:
{
  "success": true,
  "status": "ok"
}