Use this file to discover all available pages before exploring further.
The friends system lets players connect with each other, see each other’s online/in-game/offline presence status, and navigate directly to a friend’s active table as an observer. All endpoints listed on this page require the x-session-id and x-player-id request headers for authentication.
Case-insensitive prefix to match against player usernames. Maximum 50 characters. Returns up to 20 results ordered alphabetically. The requesting player is always excluded from results.
Send a friend request to another player. On success, a FRIEND_REQUEST_RECEIVED WebSocket notification is published to the recipient’s personal notification channel.Headers:x-session-id, x-player-idRequest body
{ "playerId": "<uuid>" }
Status
Meaning
201
Friend request sent. FRIEND_REQUEST_RECEIVED published to recipient’s notification channel.
400
playerId is not a valid UUID, or you are attempting to friend yourself
Accept a pending incoming friend request. On success, a FRIEND_REQUEST_ACCEPTED notification is published to the original requester’s personal notification channel. If either player hosts a friends-only table, a TABLE_CREATED notification is sent to the new friend’s channel for each such table.Headers:x-session-id, x-player-idRequest body
{ "playerId": "<uuid>" }
The playerId is the requester’s UUID — the player whose pending request you want to accept.
Status
Meaning
200
Request accepted. FRIEND_REQUEST_ACCEPTED published to requester’s notification channel. TABLE_CREATED sent for each friends-only table hosted by either player.
Decline a pending incoming friend request. The friendship row is deleted from the database; no notification is sent.Headers:x-session-id, x-player-idRequest body
{ "playerId": "<uuid>" }
The playerId is the requester’s UUID — the player whose pending request you want to decline.
Returns two arrays: friends (accepted friendships enriched with live presence and table info) and pending (incoming requests awaiting your response). Pending entries are not enriched with presence or table data.Headers:x-session-id, x-player-idResponse 200
tableName disclosure rules: Public tables always disclose the table name. Friends-only tables disclose the name only when the requesting player is also a friend of the table host. Private tables — and tables whose data has expired or is missing — always return tableName: null.
Removes an accepted friendship. Both directions of the friendship record are deleted. If either player hosts a friends-only table, a TABLE_REMOVED notification is sent to the other player’s personal notification channel for each such table.Headers:x-session-id, x-player-id
Status
Meaning
200
Friend removed. TABLE_REMOVED sent for each affected friends-only table.
Checks whether a friend is currently at a table that is visible to the requester, and indicates whether the “Go to Table” action is available based on the table’s spectating setting and join policy.Headers:x-session-id, x-player-idResponse 200
Navigates to a friend’s table as an observer. The table must be visible to the requester and either spectating must be enabled or the requester must have seating rights under the table’s join policy. On success, an OBSERVER_JOINED event is broadcast to the table room.Headers:x-session-id, x-player-idResponse 200
{ "tableId": "uuid" }
Status
Meaning
200
Successfully arrived at the table as an observer. Body: { tableId }. OBSERVER_JOINED broadcast to table room.
401
Missing or invalid session
403
Not friends with this player, table is not visible, or no permission to join as observer
404
Friend is not currently at a table
409
Observer slots are full, or concurrent modification — retry the request