{"components":{"headers":{"X-RateLimit-Remaining":{"description":"The number of requests left for the current time window","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Rate limit window reset for current route in seconds","schema":{"type":"integer"}}},"schemas":{"ModelGameServer":{"properties":{"changed_at":{"description":"Date of last status change","format":"date-time","type":"string"},"created_at":{"description":"Creation date","format":"date-time","type":"string"},"expires_at":{"description":"Cache expulsion date when inactive","format":"date-time","type":"string"},"game_title":{"description":"Game title code","type":"string"},"host":{"description":"Primary host either IPv4/v6","type":"string"},"hostname":{"description":"Hostname field if applicable","type":"string"},"ip_address":{"properties":{"v4":{"description":"inet_aton notation","type":"integer"},"v6":{"description":"string representation of inet_pton notation","type":"string"}},"type":"object"},"online":{"description":"Online / offline status based on queryable state","type":"boolean"},"port":{"description":"Primary port","type":"integer"},"state":{"description":"ResourceState","type":"string"},"updated_at":{"description":"Update date","format":"date-time","type":"string"}},"type":"object"}},"securitySchemes":{"ApiKeyAuth":{"in":"header","name":"Authorization","type":"apiKey"}}},"info":{"description":"This API allows you to interface with the GDS system.\nAll requests must contain an `Authorization` header.\nDefault rate limit: 100 requests per second","title":"GameserverDataService","version":"0.0.0"},"openapi":"3.0.0","paths":{"/v1/rankings/{server_id}/server":{"get":{"additionalProperties":{},"operationId":"server","parameters":[{"in":"path","name":"server_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"rankings":{"properties":{},"type":"object"},"server_id":{"type":"string"}},"type":"object"}}},"description":"Successful response"},"404":{"content":{"application/json":{"examples":{"entity_not_found":{"summary":"entity-not-found error","value":{"details":{},"error":{"class":"entity","code":"unknown-entity"},"status":false}}},"schema":{"properties":{"details":{"description":"Additional error context","type":"object"},"error":{"properties":{"class":{"type":"string"},"code":{"type":"string"}},"type":"object"},"status":{"example":false,"type":"boolean"}},"type":"object"}}},"description":"Not Found - Requested resource does not exist. Possible error codes: entity-not-found"}},"summary":"Get all rankings for a specific server"}},"/v1/rankings/{title_id}":{"get":{"additionalProperties":{},"operationId":"_v1_rankings_title_id__get","parameters":[{"in":"path","name":"title_id","required":true,"schema":{"type":"string"}},{"in":"query","name":"type","required":false,"schema":{"description":"Ranking type","enum":["popular"],"type":"string"}},{"in":"query","name":"limit","required":false,"schema":{"description":"Number of results","maximum":500,"minimum":1,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"servers":{"items":{"properties":{"name":{"type":"string"},"players":{"type":"string"},"rank":{"type":"string"},"score":{"type":"string"},"server_id":{"type":"string"},"slots":{"type":"string"}},"type":"object"},"type":"array"},"title_id":{"type":"string"},"type":{"type":"string"}},"type":"object"}}},"description":"Successful response"},"400":{"content":{"application/json":{"examples":{"parameter_invalid":{"summary":"parameter-invalid error","value":{"details":{"parameters":"<List>"},"error":{"class":"parameter-validation","code":"invalid-parameter"},"status":false}}},"schema":{"properties":{"details":{"description":"Additional error context","type":"object"},"error":{"properties":{"class":{"type":"string"},"code":{"type":"string"}},"type":"object"},"status":{"example":false,"type":"boolean"}},"type":"object"}}},"description":"Bad Request - Invalid input or request parameters. Possible error codes: parameter-invalid"}},"summary":"Get server rankings for a title"}},"/v2/game-server/{server_id}":{"get":{"additionalProperties":{"rate_limits":[{"max_requests":120,"period":60,"scope":"endpoint"}]},"operationId":"_v2_game_server_server_id__get","parameters":[{"in":"path","name":"server_id","required":true,"schema":{"type":"string"}},{"in":"query","name":"include_statistics","required":false,"schema":{"description":"Include computed statistics summary","type":"boolean"}},{"in":"query","name":"include","required":false,"schema":{"description":"Comma-separated extras. metrics_windows = available lookbacks and granularities (no series).","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"game_server":{"properties":{"attributes":{"additionalProperties":true,"description":"Title-specific attribute flags","type":"object"},"environment":{"additionalProperties":true,"description":"Title-specific environment flags","type":"object"},"game":{"description":"Numeric GDS title / universe id","type":"integer"},"geolocation":{"properties":{"city":{"properties":{"name":{"description":"City name","type":"string"},"region":{"description":"Region / subdivision name","type":"string"}},"type":"object"},"continent":{"description":"Continent code","type":"string"},"country":{"properties":{"code":{"description":"ISO 3166-1 alpha-2 country code","type":"string"},"name":{"description":"English country name","type":"string"}},"type":"object"},"timezone":{"description":"IANA timezone id","type":"string"}},"type":"object"},"host":{"properties":{"address":{"description":"Primary IPv4/IPv6 address","type":"string"},"game_port":{"description":"Game port","type":"integer"},"os":{"description":"Server OS hint from discovery","type":"string"},"query_port":{"description":"Query / A2S port","type":"integer"}},"type":"object"},"id":{"description":"Hashed server identifier","type":"string"},"map":{"description":"Current map name","type":"string"},"modding":{"properties":{"mods":{"description":"Installed mods when known; null otherwise","items":{},"type":"array"}},"type":"object"},"name":{"description":"Server hostname / display name","type":"string"},"online":{"description":"Whether the server is currently online","type":"boolean"},"publisher":{"additionalProperties":true,"description":"Publisher metadata when available","type":"object"},"rank":{"description":"Popular ranking position for the title, or null if unranked","type":"integer"},"rules":{"additionalProperties":true,"description":"A2S rules map when collected; null otherwise","type":"object"},"security":{"properties":{"battleye":{"description":"BattlEye enabled","type":"boolean"},"password":{"description":"Password protected; null when unknown","type":"boolean"},"vac":{"description":"VAC secured; null when unknown","type":"boolean"}},"type":"object"},"spoofed":{"description":"Whether the server is marked as spoofed","type":"boolean"},"status":{"properties":{"bots":{"description":"Connected bots","type":"integer"},"players":{"description":"Connected players","type":"integer"},"queue":{"additionalProperties":true,"description":"Optional queue state (title-specific; null when unused)","type":"object"},"slots":{"description":"Maximum player slots","type":"integer"}},"type":"object"},"steam":{"properties":{"app_id":{"description":"Steam app id","type":"integer"},"game":{"description":"Steam game / description string","type":"string"},"game_dir":{"description":"Steam game directory name","type":"string"},"game_id":{"description":"Steam game id","type":"integer"},"keywords":{"description":"Raw Steam / A2S keywords string","type":"string"},"steam_id":{"description":"Steam server id when known","type":"string"}},"type":"object"},"title":{"description":"Game title code","type":"string"},"updated_at":{"description":"ISO 8601 last-update timestamp from crawler","type":"string"},"version":{"description":"Game / server version string","type":"string"}},"type":"object"},"statistics":{"properties":{"daily":{"properties":{"avg_players":{"description":"Average players over the last day","type":"number"},"data_points":{"description":"Number of metric samples used","type":"integer"},"peak_players":{"description":"Peak players over the last day","type":"integer"}},"type":"object"},"weekly":{"properties":{"avg_players":{"description":"Average players over the last week","type":"number"},"data_points":{"description":"Number of metric samples used","type":"integer"},"peak_players":{"description":"Peak players over the last week","type":"integer"}},"type":"object"}},"type":"object"}},"type":"object"}}},"description":"Successful response"},"404":{"content":{"application/json":{"examples":{"entity_not_found":{"summary":"entity-not-found error","value":{"details":{},"error":{"class":"entity","code":"unknown-entity"},"status":false}}},"schema":{"properties":{"details":{"description":"Additional error context","type":"object"},"error":{"properties":{"class":{"type":"string"},"code":{"type":"string"}},"type":"object"},"status":{"example":false,"type":"boolean"}},"type":"object"}}},"description":"Not Found - Requested resource does not exist. Possible error codes: entity-not-found"},"429":{"description":"Rate limit exceeded - 120 requests per 60s by scope \"endpoint\""}},"summary":"Individual server detail with optional statistics","x-rate-limits":[{"max_requests":120,"period":60,"scope":"endpoint"}]}},"/v2/game-servers":{"get":{"additionalProperties":{"rate_limits":[{"max_requests":60,"period":60,"scope":"endpoint"}]},"operationId":"_v2_game_servers_get","parameters":[{"in":"query","name":"game_title","required":false,"schema":{"description":"Filter by game title code","type":"string"}},{"in":"query","name":"hostname","required":false,"schema":{"description":"Filter by hostname (case-insensitive regex match)","type":"string"}},{"in":"query","name":"ip","required":false,"schema":{"description":"Filter by IP address","type":"string"}},{"in":"query","name":"online","required":false,"schema":{"description":"Filter by online status","type":"boolean"}},{"in":"query","name":"map","required":false,"schema":{"description":"Filter by map name","type":"string"}},{"in":"query","name":"country","required":false,"schema":{"description":"Filter by ISO-2 country code (e.g. DE, US)","type":"string"}},{"in":"query","name":"sort","required":false,"schema":{"description":"Sort field","enum":["rank","rank_score","players","slots","updated_at","hostname","map","country"],"type":"string"}},{"in":"query","name":"order","required":false,"schema":{"description":"Sort direction","enum":["asc","desc"],"type":"string"}},{"in":"query","name":"min_players","required":false,"schema":{"description":"Minimum player count","type":"integer"}},{"in":"query","name":"max_players","required":false,"schema":{"description":"Maximum player count","type":"integer"}},{"in":"query","name":"password","required":false,"schema":{"description":"Filter by password protection","type":"boolean"}},{"in":"query","name":"official","required":false,"schema":{"description":"Filter by official server flag","type":"boolean"}},{"in":"query","name":"modded","required":false,"schema":{"description":"Filter by modded server flag","type":"boolean"}},{"in":"query","name":"page","required":false,"schema":{"description":"Page number","minimum":1,"type":"integer"}},{"in":"query","name":"limit","required":false,"schema":{"description":"Items per page","maximum":100,"minimum":1,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"game_servers":{"items":{},"type":"array"},"meta":{"properties":{"pagination":{"properties":{"current_page":{"type":"string"},"has_next":{"type":"string"},"has_prev":{"type":"string"},"per_page":{"type":"string"},"total_items":{"type":"string"},"total_pages":{"type":"string"}},"type":"object"}},"type":"object"}},"type":"object"}}},"description":"Successful response"},"429":{"description":"Rate limit exceeded - 60 requests per 60s by scope \"endpoint\""}},"summary":"Paginated game server search with filters and sorting","x-rate-limits":[{"max_requests":60,"period":60,"scope":"endpoint"}]}},"/v2/game-servers/query":{"get":{"additionalProperties":{"rate_limits":[{"max_requests":30,"period":60,"scope":"endpoint"}]},"operationId":"query","parameters":[{"in":"query","name":"game_title","required":false,"schema":{"description":"Game title code","type":"string"}},{"in":"query","name":"name","required":false,"schema":{"description":"Server name (partial match)","type":"string"}},{"in":"query","name":"ip","required":false,"schema":{"description":"Server IP address","type":"string"}},{"in":"query","name":"server_id","required":false,"schema":{"description":"Direct server ID lookup","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"game_servers":{"items":{},"type":"array"}},"type":"object"}}},"description":"Successful response"},"429":{"description":"Rate limit exceeded - 30 requests per 60s by scope \"endpoint\""}},"summary":"Dedicated query endpoint for server lookup by title+name, title+IP, or ID","x-rate-limits":[{"max_requests":30,"period":60,"scope":"endpoint"}]}},"/v2/game-titles":{"get":{"additionalProperties":{"rate_limits":[{"max_requests":60,"period":60,"scope":"endpoint"}]},"operationId":"_v2_game_titles_get","parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"game_titles":{"items":{"properties":{"architect":{"properties":{"available":{"description":"Whether Architect supports this title","type":"boolean"}},"type":"object"},"gds":{"properties":{"available":{"description":"Whether GDS crawls this title","type":"boolean"},"code":{"description":"GDS title code","type":"string"},"total_players":{"description":"Crawler Redis census (stats:{title}.players)","type":"integer"},"total_servers":{"description":"Redis live:{title} member count (spoof-free crawler index)","type":"integer"},"universe_id":{"description":"Numeric GDS universe / title id","type":"integer"}},"type":"object"},"id":{"description":"Game title document id","type":"string"},"name":{"description":"Human-readable title name","type":"string"},"prism":{"properties":{"available":{"description":"Whether Prism supports this title","type":"boolean"},"code":{"description":"Prism title code when available","type":"string"}},"type":"object"}},"type":"object"},"type":"array"}},"type":"object"}}},"description":"Successful response"},"429":{"description":"Rate limit exceeded - 60 requests per 60s by scope \"endpoint\""}},"summary":"Retrieve the list of all game-titles (Prism-compatible format)","x-rate-limits":[{"max_requests":60,"period":60,"scope":"endpoint"}]}}},"security":[{"ApiKeyAuth":[]}]}
