Ban Types
Every ban has aban_type that categorizes the violation:
Cheat and social bans are tracked independently — a device can have a clean cheat record but a poor social reputation, or vice versa.
Ban Scopes
Each ban has ascope that determines its reach:
Global bans require the
bans:global scope in addition to bans:write. This is a safety measure to prevent accidental network-wide bans.Scope Visibility
Publishers control which scopes they enforce via their policy configuration. A publisher can opt out of enforcing global bans while still contributing to the global reputation pool.Creating a Ban
Ban Lifecycle
- Active: The ban is currently enforced.
revoked_atis null and eitherexpires_atis null or in the future. - Expired: The current time has passed
expires_at. The ban becomes inactive automatically. - Revoked: A publisher has explicitly revoked the ban.
revoked_atis set.
status=inactive or status=all.
Idempotency
Theidempotency_key field prevents duplicate bans from the same publisher and game combination. If a ban with the same key already exists:
- The existing ban is returned
- The response
statusis"idempotent_ok"instead of"created" - No new ban is inserted
Listing Bans
Bans are listed per device and per type using keyset pagination:Pagination
The API uses keyset pagination based onban_id:
- Results are ordered by
ban_iddescending (newest first) - Use the
cursorquery parameter with the lastban_idfrom the previous page - The response includes total
countsacross all pages
