{"openapi":"3.0.3","info":{"title":"Server Status API","version":"1.0.0","description":"Server-side GameDig queries for public game servers."},"paths":{"/api/v1/games":{"get":{"summary":"List supported GameDig games","responses":{"200":{"description":"Game catalogue"}}}},"/api/v1/games/{slug}":{"get":{"summary":"Get one game","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Game definition"},"404":{"description":"Unknown game"}}}},"/api/v1/query":{"post":{"summary":"Query one exact game-server query port","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["game","host","ports"],"properties":{"game":{"type":"string","example":"fivem"},"host":{"type":"string","example":"play.example.com"},"ports":{"type":"array","minItems":1,"maxItems":1,"items":{"type":"integer","minimum":1,"maximum":65535},"example":[30120]}}}}}},"responses":{"200":{"description":"Normalized server status"},"400":{"description":"Invalid input, private destination, or query failure"},"429":{"description":"Rate limit exceeded"}}}},"/api/v1/health":{"get":{"summary":"Health check","responses":{"200":{"description":"Service is healthy"}}}}},"components":{"schemas":{"Error":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}}