{
    "openapi": "3.0.3",
    "info": {
        "title": "SteamRadar API",
        "version": "1.0.0",
        "description": "Steam catalogue, YouTube and Twitch coverage, creator and developer contacts, in-platform messaging with credits. Every endpoint except auth/register, auth/login, auth/forgot, auth/reset, auth/verify, health, docs, openapi needs an API key or session token. Creator and developer e-mail addresses are never returned."
    },
    "servers": [
        {
            "url": "https://steamradar.net/web/api/v1"
        }
    ],
    "components": {
        "securitySchemes": {
            "ApiKey": {
                "type": "apiKey",
                "in": "header",
                "name": "X-API-Key"
            },
            "Bearer": {
                "type": "http",
                "scheme": "bearer"
            }
        }
    },
    "paths": {
        "/auth/register": {
            "post": {
                "summary": "Create an account; returns a session token",
                "tags": [
                    "auth"
                ],
                "security": [],
                "parameters": [],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "token": "eyJ\u2026",
                                    "user": {
                                        "id": 1,
                                        "name": "Me",
                                        "msg_credits": 0
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                },
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "email": {
                                        "type": "string",
                                        "description": ""
                                    },
                                    "password": {
                                        "type": "string",
                                        "description": "min 8 characters"
                                    },
                                    "name": {
                                        "type": "string",
                                        "description": "optional"
                                    },
                                    "ref": {
                                        "type": "string",
                                        "description": "referral code, optional"
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/auth/login": {
            "post": {
                "summary": "Log in; returns a session token (the mobile apps use this; scripts use API keys instead)",
                "tags": [
                    "auth"
                ],
                "security": [],
                "parameters": [],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "token": "eyJ\u2026",
                                    "user": {
                                        "id": 1
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                },
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "email": {
                                        "type": "string",
                                        "description": ""
                                    },
                                    "password": {
                                        "type": "string",
                                        "description": ""
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/auth/forgot": {
            "post": {
                "summary": "E-mail a password-reset link (always 200; 3 per address per hour)",
                "tags": [
                    "auth"
                ],
                "security": [],
                "parameters": [],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                },
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "email": {
                                        "type": "string",
                                        "description": ""
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/auth/reset": {
            "post": {
                "summary": "Set a new password with the e-mailed token (single-use, 1 hour); app sessions are logged out",
                "tags": [
                    "auth"
                ],
                "security": [],
                "parameters": [],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "token": "eyJ\u2026",
                                    "user": {
                                        "id": 1
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                },
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "token": {
                                        "type": "string",
                                        "description": ""
                                    },
                                    "password": {
                                        "type": "string",
                                        "description": "min 8 characters"
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/auth/verify": {
            "post": {
                "summary": "Confirm the e-mail address with the e-mailed token",
                "tags": [
                    "auth"
                ],
                "security": [],
                "parameters": [],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "user": {
                                        "id": 1,
                                        "email_verified": true
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                },
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "token": {
                                        "type": "string",
                                        "description": ""
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/auth/resend-verification": {
            "post": {
                "summary": "Send the confirmation e-mail again (5 per day)",
                "tags": [
                    "auth"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "dashboard"
                        ]
                    },
                    {
                        "Bearer": [
                            "dashboard"
                        ]
                    }
                ],
                "parameters": [],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "sent": true
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"dashboard\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            }
        },
        "/auth/logout": {
            "post": {
                "summary": "End this session token (session token only: revoke a key with DELETE keys/{id}); also forgets this device's push token",
                "tags": [
                    "auth"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "dashboard"
                        ]
                    },
                    {
                        "Bearer": [
                            "dashboard"
                        ]
                    }
                ],
                "parameters": [],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"dashboard\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                },
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "expo_token": {
                                        "type": "string",
                                        "description": "optional: the push token to forget"
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/health": {
            "get": {
                "summary": "Service check, with catalogue sizes for a welcome screen (kept an hour)",
                "tags": [
                    "health"
                ],
                "security": [],
                "parameters": [],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "status": "up",
                                    "time": "2026-11-10T22:00:00Z",
                                    "db": true,
                                    "kpis": {
                                        "apps": 322031,
                                        "creators": 80679,
                                        "streamers": 410721
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            }
        },
        "/docs": {
            "get": {
                "summary": "This route catalogue as JSON",
                "tags": [
                    "docs"
                ],
                "security": [],
                "parameters": [],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "routes": [
                                        {
                                            "method": "GET",
                                            "path": "health",
                                            "scope": "public"
                                        }
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            }
        },
        "/openapi": {
            "get": {
                "summary": "OpenAPI 3.0 document of this API",
                "tags": [
                    "openapi"
                ],
                "security": [],
                "parameters": [],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            }
        },
        "/me/push": {
            "post": {
                "summary": "Register this device for push notifications",
                "tags": [
                    "me"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "dashboard"
                        ]
                    },
                    {
                        "Bearer": [
                            "dashboard"
                        ]
                    }
                ],
                "parameters": [],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"dashboard\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                },
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "token": {
                                        "type": "string",
                                        "description": "APNs device token (ios) or FCM token (android)"
                                    },
                                    "platform": {
                                        "type": "string",
                                        "description": "ios or android"
                                    },
                                    "expo_token": {
                                        "type": "string",
                                        "description": "older Expo form"
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/me": {
            "get": {
                "summary": "The account behind the key or token: credits, free messages left today, unread counts, verified assets",
                "tags": [
                    "me"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "dashboard"
                        ]
                    },
                    {
                        "Bearer": [
                            "dashboard"
                        ]
                    }
                ],
                "parameters": [],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "user": {
                                        "id": 1,
                                        "name": "Me",
                                        "msg_credits": 120,
                                        "free_messages_left_today": 5,
                                        "unread_messages": 0,
                                        "identities": []
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"dashboard\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            },
            "patch": {
                "summary": "Update name, e-mail alerts, sign-in notices; with a session token also the password (other sessions and API keys are then revoked) or the e-mail address (confirmed by a link). A wrong current_password saves nothing",
                "tags": [
                    "me"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "dashboard"
                        ]
                    },
                    {
                        "Bearer": [
                            "dashboard"
                        ]
                    }
                ],
                "parameters": [],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "user": [],
                                    "revoked": {
                                        "sessions": 0,
                                        "keys": 0
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"dashboard\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                },
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "name": {
                                        "type": "string",
                                        "description": ""
                                    },
                                    "notify_email": {
                                        "type": "boolean",
                                        "description": ""
                                    },
                                    "notify_login": {
                                        "type": "boolean",
                                        "description": "e-mail on a sign-in from a new device"
                                    },
                                    "email": {
                                        "type": "string",
                                        "description": "new address (needs current_password)"
                                    },
                                    "password": {
                                        "type": "string",
                                        "description": "new password, min 8 characters (needs current_password)"
                                    },
                                    "current_password": {
                                        "type": "string",
                                        "description": ""
                                    }
                                }
                            }
                        }
                    }
                }
            },
            "delete": {
                "summary": "Delete the account (session token only, password required): personal data removed, receipts and ledgers kept anonymously, every session and API key ended \u2014 the same as Dashboard \u2192 Settings on the website",
                "tags": [
                    "me"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "dashboard"
                        ]
                    },
                    {
                        "Bearer": [
                            "dashboard"
                        ]
                    }
                ],
                "parameters": [],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "deleted": true
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"dashboard\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                },
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "password": {
                                        "type": "string",
                                        "description": "the current password"
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/keys": {
            "get": {
                "summary": "Your API keys (session token only)",
                "tags": [
                    "keys"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "dashboard"
                        ]
                    },
                    {
                        "Bearer": [
                            "dashboard"
                        ]
                    }
                ],
                "parameters": [],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "items": [
                                        {
                                            "id": 1,
                                            "name": "my script",
                                            "prefix": "sr_live_abc12345",
                                            "scopes": [
                                                "read",
                                                "messages"
                                            ],
                                            "calls_total": 42
                                        }
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"dashboard\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            },
            "post": {
                "summary": "Create an API key (session token only); the full key is returned once",
                "tags": [
                    "keys"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "dashboard"
                        ]
                    },
                    {
                        "Bearer": [
                            "dashboard"
                        ]
                    }
                ],
                "parameters": [],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "key": "sr_live_\u2026",
                                    "item": {
                                        "id": 2,
                                        "name": "my script"
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"dashboard\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                },
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "name": {
                                        "type": "string",
                                        "description": ""
                                    },
                                    "scopes": {
                                        "type": "array",
                                        "description": "subset of read, messages, dashboard"
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/keys/{id}": {
            "delete": {
                "summary": "Revoke a key (session token only)",
                "tags": [
                    "keys"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "dashboard"
                        ]
                    },
                    {
                        "Bearer": [
                            "dashboard"
                        ]
                    }
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"dashboard\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            }
        },
        "/home": {
            "get": {
                "summary": "Front-page data: KPIs, trending on YouTube, most played, top sellers, new releases, upcoming, discounts, latest videos and changes",
                "tags": [
                    "home"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "read"
                        ]
                    },
                    {
                        "Bearer": [
                            "read"
                        ]
                    }
                ],
                "parameters": [],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "kpis": {
                                        "apps": 321363,
                                        "games": 199223
                                    },
                                    "trending_youtube": [
                                        {
                                            "appid": 1239080,
                                            "name": "Door Kickers 2: Task Force North",
                                            "type": "game",
                                            "img": "https://\u2026/capsule_231x87.jpg",
                                            "price": "$24.99",
                                            "price_cents": 2499,
                                            "discount_pct": 0,
                                            "reviews": 12500,
                                            "review_pct": 96,
                                            "players_now": 451,
                                            "yt_score": 100,
                                            "tw_score": 42.5
                                        }
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"read\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            }
        },
        "/search": {
            "get": {
                "summary": "Search and filter every Steam app",
                "tags": [
                    "search"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "read"
                        ]
                    },
                    {
                        "Bearer": [
                            "read"
                        ]
                    }
                ],
                "parameters": [
                    {
                        "name": "q",
                        "in": "query",
                        "required": false,
                        "description": "name search",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "type",
                        "in": "query",
                        "required": false,
                        "description": "game, demo, dlc, software, music",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "tag",
                        "in": "query",
                        "required": false,
                        "description": "Steam tag id (repeatable)",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "cat",
                        "in": "query",
                        "required": false,
                        "description": "category id",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "price_min",
                        "in": "query",
                        "required": false,
                        "description": "US dollars, e.g. 5",
                        "schema": {
                            "type": "number"
                        }
                    },
                    {
                        "name": "price_max",
                        "in": "query",
                        "required": false,
                        "description": "US dollars, e.g. 19.99 (free games are always included)",
                        "schema": {
                            "type": "number"
                        }
                    },
                    {
                        "name": "discount",
                        "in": "query",
                        "required": false,
                        "description": "only discounted",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "year_from",
                        "in": "query",
                        "required": false,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "year_to",
                        "in": "query",
                        "required": false,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "coming_soon",
                        "in": "query",
                        "required": false,
                        "description": "",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "reviews_min",
                        "in": "query",
                        "required": false,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "pct_min",
                        "in": "query",
                        "required": false,
                        "description": "min % positive",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "platform",
                        "in": "query",
                        "required": false,
                        "description": "win, mac, linux",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "deck",
                        "in": "query",
                        "required": false,
                        "description": "3 = verified",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "yt_score_min",
                        "in": "query",
                        "required": false,
                        "description": "",
                        "schema": {
                            "type": "number"
                        }
                    },
                    {
                        "name": "tw_score_min",
                        "in": "query",
                        "required": false,
                        "description": "",
                        "schema": {
                            "type": "number"
                        }
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "required": false,
                        "description": "reviews, release, price, players, yt_score, tw_score, name, discount, followers, owners, revenue",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "dir",
                        "in": "query",
                        "required": false,
                        "description": "asc / desc",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "required": false,
                        "description": "Page number, from 1",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "per",
                        "in": "query",
                        "required": false,
                        "description": "Items per page, 1-100 (default 30)",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "items": [
                                        {
                                            "appid": 1239080,
                                            "name": "Door Kickers 2: Task Force North",
                                            "type": "game",
                                            "img": "https://\u2026/capsule_231x87.jpg",
                                            "price": "$24.99",
                                            "price_cents": 2499,
                                            "discount_pct": 0,
                                            "reviews": 12500,
                                            "review_pct": 96,
                                            "players_now": 451,
                                            "yt_score": 100,
                                            "tw_score": 42.5
                                        }
                                    ],
                                    "page": 1,
                                    "per": 30,
                                    "total": 199223
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"read\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            }
        },
        "/suggest": {
            "get": {
                "summary": "Autocomplete apps by name",
                "tags": [
                    "suggest"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "read"
                        ]
                    },
                    {
                        "Bearer": [
                            "read"
                        ]
                    }
                ],
                "parameters": [
                    {
                        "name": "q",
                        "in": "query",
                        "required": false,
                        "description": "2+ characters",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "items": [
                                        {
                                            "appid": 1239080,
                                            "name": "Door Kickers 2",
                                            "type": "game",
                                            "img": "https://\u2026",
                                            "meta": "Game 2025"
                                        }
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"read\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            }
        },
        "/apps/{appid}": {
            "get": {
                "summary": "Everything about one app: store data, prices, players, followers, estimates, scores, tags, DLC, screenshots, developer contact flags (never an e-mail)",
                "tags": [
                    "apps"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "read"
                        ]
                    },
                    {
                        "Bearer": [
                            "read"
                        ]
                    }
                ],
                "parameters": [
                    {
                        "name": "appid",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "app": {
                                        "appid": 1239080,
                                        "name": "Door Kickers 2: Task Force North",
                                        "type": "game",
                                        "img": "https://\u2026/capsule_231x87.jpg",
                                        "price": "$24.99",
                                        "price_cents": 2499,
                                        "discount_pct": 0,
                                        "reviews": 12500,
                                        "review_pct": 96,
                                        "players_now": 451,
                                        "yt_score": 100,
                                        "tw_score": 42.5,
                                        "owners_est": 375000,
                                        "revenue_est_cents": 520000000,
                                        "tags": [
                                            {
                                                "id": 19,
                                                "name": "Action",
                                                "weight": 1000
                                            }
                                        ]
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"read\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            }
        },
        "/apps/{appid}/youtube": {
            "get": {
                "summary": "YouTube coverage: score, stats, chart, creators or videos",
                "tags": [
                    "apps"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "read"
                        ]
                    },
                    {
                        "Bearer": [
                            "read"
                        ]
                    }
                ],
                "parameters": [
                    {
                        "name": "appid",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "sub",
                        "in": "query",
                        "required": false,
                        "description": "creators (default) or videos",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "required": false,
                        "description": "creators: subs, videos, views, last; videos: views (default newest)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "required": false,
                        "description": "Page number, from 1",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "per",
                        "in": "query",
                        "required": false,
                        "description": "Items per page, 1-100 (default 30)",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "sub": "creators",
                                    "stats": {
                                        "score": 100,
                                        "videos": 13669,
                                        "creators": 978
                                    },
                                    "chart": {
                                        "labels": [],
                                        "game": [],
                                        "demo": []
                                    },
                                    "items": [],
                                    "total": 978
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"read\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            }
        },
        "/apps/{appid}/twitch": {
            "get": {
                "summary": "Twitch coverage: live now, 30-day stats, streamers (items), VODs, clips, hourly and daily series",
                "tags": [
                    "apps"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "read"
                        ]
                    },
                    {
                        "Bearer": [
                            "read"
                        ]
                    }
                ],
                "parameters": [
                    {
                        "name": "appid",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "required": false,
                        "description": "hours (default), avg, peak, followers, last",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "required": false,
                        "description": "Page number, from 1",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "per",
                        "in": "query",
                        "required": false,
                        "description": "Items per page, 1-100 (default 30)",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "stats": {
                                        "viewers_now": 120,
                                        "hours_30d": 5400
                                    },
                                    "items": [],
                                    "hourly": [],
                                    "daily": [],
                                    "vods": [],
                                    "clips": []
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"read\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            }
        },
        "/apps/{appid}/prices": {
            "get": {
                "summary": "Current price in every tracked region and the price history of one region",
                "tags": [
                    "apps"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "read"
                        ]
                    },
                    {
                        "Bearer": [
                            "read"
                        ]
                    }
                ],
                "parameters": [
                    {
                        "name": "appid",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "cc",
                        "in": "query",
                        "required": false,
                        "description": "region of the history, default US",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "regions": [
                                        {
                                            "cc": "US",
                                            "currency": "USD",
                                            "formatted": "$24.99",
                                            "final_cents": 2499,
                                            "discount_pct": 0
                                        }
                                    ],
                                    "history_cc": "US",
                                    "history": []
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"read\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            }
        },
        "/apps/{appid}/charts": {
            "get": {
                "summary": "Daily players (peak / average), reviews and estimated owners over time",
                "tags": [
                    "apps"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "read"
                        ]
                    },
                    {
                        "Bearer": [
                            "read"
                        ]
                    }
                ],
                "parameters": [
                    {
                        "name": "appid",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "players": [
                                        {
                                            "day": "2026-11-10",
                                            "peak": 457,
                                            "avg": 300
                                        }
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"read\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            }
        },
        "/apps/{appid}/news": {
            "get": {
                "summary": "Steam news and patch notes",
                "tags": [
                    "apps"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "read"
                        ]
                    },
                    {
                        "Bearer": [
                            "read"
                        ]
                    }
                ],
                "parameters": [
                    {
                        "name": "appid",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "items": []
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"read\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            }
        },
        "/apps/{appid}/achievements": {
            "get": {
                "summary": "Achievements with global unlock rates",
                "tags": [
                    "apps"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "read"
                        ]
                    },
                    {
                        "Bearer": [
                            "read"
                        ]
                    }
                ],
                "parameters": [
                    {
                        "name": "appid",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "items": []
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"read\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            }
        },
        "/apps/{appid}/changes": {
            "get": {
                "summary": "Store changes we recorded (price, release, name, \u2026)",
                "tags": [
                    "apps"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "read"
                        ]
                    },
                    {
                        "Bearer": [
                            "read"
                        ]
                    }
                ],
                "parameters": [
                    {
                        "name": "appid",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "items": []
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"read\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            }
        },
        "/apps/{appid}/technical": {
            "get": {
                "summary": "PICS data: builds, branches, depots, Steam Deck results, packages, bundles",
                "tags": [
                    "apps"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "read"
                        ]
                    },
                    {
                        "Bearer": [
                            "read"
                        ]
                    }
                ],
                "parameters": [
                    {
                        "name": "appid",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "pics": [],
                                    "branches": [],
                                    "builds": [
                                        {
                                            "buildid": 1234567
                                        }
                                    ],
                                    "depots": [],
                                    "packages": [],
                                    "bundles": [],
                                    "changenumbers": []
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"read\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            }
        },
        "/apps/{appid}/update": {
            "post": {
                "summary": "Refresh one app now: Steam data, then YouTube, then Twitch (30 per day per account)",
                "tags": [
                    "apps"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "read"
                        ]
                    },
                    {
                        "Bearer": [
                            "read"
                        ]
                    }
                ],
                "parameters": [
                    {
                        "name": "appid",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "request": {
                                        "id": 42,
                                        "status": "pending"
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"read\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            }
        },
        "/requests/{id}": {
            "get": {
                "summary": "Progress of an update request",
                "tags": [
                    "requests"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "read"
                        ]
                    },
                    {
                        "Bearer": [
                            "read"
                        ]
                    }
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "status": "done",
                                    "finished": true,
                                    "steps": {
                                        "steam": true,
                                        "youtube": true,
                                        "twitch": true
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"read\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            }
        },
        "/charts": {
            "get": {
                "summary": "A chart",
                "tags": [
                    "charts"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "read"
                        ]
                    },
                    {
                        "Bearer": [
                            "read"
                        ]
                    }
                ],
                "parameters": [
                    {
                        "name": "chart",
                        "in": "query",
                        "required": false,
                        "description": "concurrent (default), most_played, top_sellers, trending, top_releases, yt_trending, yt_score, tw_live, tw_hours, top_rated, most_reviewed, \u2026 (without it: the list of charts); an unknown id answers 400",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "items": [
                                        {
                                            "appid": 1239080,
                                            "name": "Door Kickers 2: Task Force North",
                                            "type": "game",
                                            "img": "https://\u2026/capsule_231x87.jpg",
                                            "price": "$24.99",
                                            "price_cents": 2499,
                                            "discount_pct": 0,
                                            "reviews": 12500,
                                            "review_pct": 96,
                                            "players_now": 451,
                                            "yt_score": 100,
                                            "tw_score": 42.5,
                                            "value": 1269367
                                        }
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"read\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            }
        },
        "/sales": {
            "get": {
                "summary": "Current discounts",
                "tags": [
                    "sales"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "read"
                        ]
                    },
                    {
                        "Bearer": [
                            "read"
                        ]
                    }
                ],
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "required": false,
                        "description": "Page number, from 1",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "per",
                        "in": "query",
                        "required": false,
                        "description": "Items per page, 1-100 (default 30)",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "items": [
                                        {
                                            "appid": 1239080,
                                            "name": "Door Kickers 2: Task Force North",
                                            "type": "game",
                                            "img": "https://\u2026/capsule_231x87.jpg",
                                            "price": "$24.99",
                                            "price_cents": 2499,
                                            "discount_pct": 0,
                                            "reviews": 12500,
                                            "review_pct": 96,
                                            "players_now": 451,
                                            "yt_score": 100,
                                            "tw_score": 42.5
                                        }
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"read\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            }
        },
        "/upcoming": {
            "get": {
                "summary": "Upcoming releases",
                "tags": [
                    "upcoming"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "read"
                        ]
                    },
                    {
                        "Bearer": [
                            "read"
                        ]
                    }
                ],
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "required": false,
                        "description": "Page number, from 1",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "per",
                        "in": "query",
                        "required": false,
                        "description": "Items per page, 1-100 (default 30)",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "items": [
                                        {
                                            "appid": 1239080,
                                            "name": "Door Kickers 2: Task Force North",
                                            "type": "game",
                                            "img": "https://\u2026/capsule_231x87.jpg",
                                            "price": "$24.99",
                                            "price_cents": 2499,
                                            "discount_pct": 0,
                                            "reviews": 12500,
                                            "review_pct": 96,
                                            "players_now": 451,
                                            "yt_score": 100,
                                            "tw_score": 42.5
                                        }
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"read\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            }
        },
        "/changes": {
            "get": {
                "summary": "Latest store changes across the catalogue",
                "tags": [
                    "changes"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "read"
                        ]
                    },
                    {
                        "Bearer": [
                            "read"
                        ]
                    }
                ],
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "required": false,
                        "description": "Page number, from 1",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "per",
                        "in": "query",
                        "required": false,
                        "description": "Items per page, 1-100 (default 30)",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "items": []
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"read\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            }
        },
        "/updates": {
            "get": {
                "summary": "Latest public builds",
                "tags": [
                    "updates"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "read"
                        ]
                    },
                    {
                        "Bearer": [
                            "read"
                        ]
                    }
                ],
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "required": false,
                        "description": "Page number, from 1",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "per",
                        "in": "query",
                        "required": false,
                        "description": "Items per page, 1-100 (default 30)",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "items": []
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"read\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            }
        },
        "/tags": {
            "get": {
                "summary": "Every Steam tag",
                "tags": [
                    "tags"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "read"
                        ]
                    },
                    {
                        "Bearer": [
                            "read"
                        ]
                    }
                ],
                "parameters": [],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "items": [
                                        {
                                            "id": 19,
                                            "name": "Action"
                                        }
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"read\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            }
        },
        "/packages/{id}": {
            "get": {
                "summary": "A Steam package (sub)",
                "tags": [
                    "packages"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "read"
                        ]
                    },
                    {
                        "Bearer": [
                            "read"
                        ]
                    }
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "package": []
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"read\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            }
        },
        "/bundles/{id}": {
            "get": {
                "summary": "A Steam bundle",
                "tags": [
                    "bundles"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "read"
                        ]
                    },
                    {
                        "Bearer": [
                            "read"
                        ]
                    }
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "bundle": []
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"read\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            }
        },
        "/youtubers": {
            "get": {
                "summary": "Browse YouTube creators who covered Steam games",
                "tags": [
                    "youtubers"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "read"
                        ]
                    },
                    {
                        "Bearer": [
                            "read"
                        ]
                    }
                ],
                "parameters": [
                    {
                        "name": "q",
                        "in": "query",
                        "required": false,
                        "description": "",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "game",
                        "in": "query",
                        "required": false,
                        "description": "appid they covered",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "tag",
                        "in": "query",
                        "required": false,
                        "description": "genre of covered games",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "country",
                        "in": "query",
                        "required": false,
                        "description": "ISO code",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "subs_min",
                        "in": "query",
                        "required": false,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "subs_max",
                        "in": "query",
                        "required": false,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "views_min",
                        "in": "query",
                        "required": false,
                        "description": "average views",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "active_days",
                        "in": "query",
                        "required": false,
                        "description": "uploaded within N days",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "games_min",
                        "in": "query",
                        "required": false,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "reachable",
                        "in": "query",
                        "required": false,
                        "description": "only creators we can deliver a message to",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "has_twitch",
                        "in": "query",
                        "required": false,
                        "description": "",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "required": false,
                        "description": "subs, views, games, videos, last, upload, name",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "required": false,
                        "description": "Page number, from 1",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "per",
                        "in": "query",
                        "required": false,
                        "description": "Items per page, 1-100 (default 30)",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "items": [
                                        {
                                            "identity": "yt:UC\u2026",
                                            "title": "Creator",
                                            "subscribers": 120000,
                                            "games": 14,
                                            "reachable": true
                                        }
                                    ],
                                    "total": 66135
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"read\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            }
        },
        "/youtubers/{id}": {
            "get": {
                "summary": "One YouTube creator: stats, games covered, videos, rating",
                "tags": [
                    "youtubers"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "read"
                        ]
                    },
                    {
                        "Bearer": [
                            "read"
                        ]
                    }
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "creator": {
                                        "channel_id": "UC\u2026",
                                        "title": "Creator",
                                        "subscribers": 120000
                                    },
                                    "games": []
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"read\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            }
        },
        "/streamers": {
            "get": {
                "summary": "Browse Twitch streamers who streamed Steam games",
                "tags": [
                    "streamers"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "read"
                        ]
                    },
                    {
                        "Bearer": [
                            "read"
                        ]
                    }
                ],
                "parameters": [
                    {
                        "name": "q",
                        "in": "query",
                        "required": false,
                        "description": "",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "game",
                        "in": "query",
                        "required": false,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "language",
                        "in": "query",
                        "required": false,
                        "description": "",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "followers_min",
                        "in": "query",
                        "required": false,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "viewers_min",
                        "in": "query",
                        "required": false,
                        "description": "average viewers",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "hours_min",
                        "in": "query",
                        "required": false,
                        "description": "hours streamed, 30 days",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "live_days",
                        "in": "query",
                        "required": false,
                        "description": "live within N days",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "games_min",
                        "in": "query",
                        "required": false,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "type",
                        "in": "query",
                        "required": false,
                        "description": "partner / affiliate",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "reachable",
                        "in": "query",
                        "required": false,
                        "description": "",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "has_youtube",
                        "in": "query",
                        "required": false,
                        "description": "",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "required": false,
                        "description": "followers, avg, peak, hours, games, live, name",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "required": false,
                        "description": "Page number, from 1",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "per",
                        "in": "query",
                        "required": false,
                        "description": "Items per page, 1-100 (default 30)",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "items": [
                                        {
                                            "identity": "tw:123",
                                            "display_name": "Streamer",
                                            "followers": 5000,
                                            "reachable": true
                                        }
                                    ],
                                    "total": 274308
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"read\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            }
        },
        "/streamers/{id}": {
            "get": {
                "summary": "One Twitch streamer: stats, games streamed, VODs, clips",
                "tags": [
                    "streamers"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "read"
                        ]
                    },
                    {
                        "Bearer": [
                            "read"
                        ]
                    }
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "streamer": {
                                        "user_id": "123",
                                        "display_name": "Streamer"
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"read\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            }
        },
        "/developers": {
            "get": {
                "summary": "Steam games whose developer can be messaged",
                "tags": [
                    "developers"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "read"
                        ]
                    },
                    {
                        "Bearer": [
                            "read"
                        ]
                    }
                ],
                "parameters": [
                    {
                        "name": "q",
                        "in": "query",
                        "required": false,
                        "description": "game, developer or publisher",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "tag",
                        "in": "query",
                        "required": false,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "year",
                        "in": "query",
                        "required": false,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "reviews_max",
                        "in": "query",
                        "required": false,
                        "description": "default 999",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "reachable",
                        "in": "query",
                        "required": false,
                        "description": "default 1",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "source",
                        "in": "query",
                        "required": false,
                        "description": "steam_support, website, contact_page, presskit, mailto, youtube",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "required": false,
                        "description": "reviews, release, name, developer, yt, tw, price",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "required": false,
                        "description": "Page number, from 1",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "per",
                        "in": "query",
                        "required": false,
                        "description": "Items per page, 1-100 (default 30)",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "items": [
                                        {
                                            "identity": "dev:1742910",
                                            "app": {
                                                "appid": 1239080,
                                                "name": "Door Kickers 2: Task Force North",
                                                "type": "game",
                                                "img": "https://\u2026/capsule_231x87.jpg",
                                                "price": "$24.99",
                                                "price_cents": 2499,
                                                "discount_pct": 0,
                                                "reviews": 12500,
                                                "review_pct": 96,
                                                "players_now": 451,
                                                "yt_score": 100,
                                                "tw_score": 42.5
                                            },
                                            "developer": "Studio",
                                            "reachable": true
                                        }
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"read\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            }
        },
        "/users/{id}": {
            "get": {
                "summary": "A member's profile (any signed-in member): name, verified profiles and the games they verified as theirs",
                "tags": [
                    "users"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "read"
                        ]
                    },
                    {
                        "Bearer": [
                            "read"
                        ]
                    }
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "user": {
                                        "id": 5,
                                        "name": "Member",
                                        "identities": [],
                                        "games": []
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"read\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            }
        },
        "/{target}/ratings": {
            "get": {
                "summary": "Ratings of a target (app:ID, yt:ID, tw:ID)",
                "tags": [
                    "social"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "read"
                        ]
                    },
                    {
                        "Bearer": [
                            "read"
                        ]
                    }
                ],
                "parameters": [
                    {
                        "name": "target",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "required": false,
                        "description": "Page number, from 1",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "per",
                        "in": "query",
                        "required": false,
                        "description": "Items per page, 1-100 (default 30)",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "rating": {
                                        "avg": 4.5,
                                        "count": 12
                                    },
                                    "items": []
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"read\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            }
        },
        "/contacts/search": {
            "post": {
                "summary": "Find recipients in one call: identities plus display data, ready for POST messages",
                "tags": [
                    "contacts"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "messages"
                        ]
                    },
                    {
                        "Bearer": [
                            "messages"
                        ]
                    }
                ],
                "parameters": [],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "items": [
                                        {
                                            "identity": "yt:UCxxxxxxxxxxxxxxxxxxxxxx",
                                            "platform": "yt",
                                            "name": "Creator name",
                                            "sub": "1.2M subscribers",
                                            "avatar": "https://\u2026",
                                            "reachable": true,
                                            "state": "send",
                                            "claimed": false
                                        }
                                    ],
                                    "identities": [
                                        "yt:UC\u2026"
                                    ],
                                    "total": 1745
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"messages\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                },
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "kind": {
                                        "type": "string",
                                        "description": "youtubers, streamers or developers"
                                    },
                                    "filters": {
                                        "type": "object",
                                        "description": "the list filters of that kind (see GET youtubers / streamers / developers)"
                                    },
                                    "limit": {
                                        "type": "integer",
                                        "description": "1-200, default 50"
                                    },
                                    "page": {
                                        "type": "integer",
                                        "description": ""
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/credits": {
            "get": {
                "summary": "Your wallet: credits, free messages left today, caps, packages",
                "tags": [
                    "credits"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "messages"
                        ]
                    },
                    {
                        "Bearer": [
                            "messages"
                        ]
                    }
                ],
                "parameters": [],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "credits": 120,
                                    "free_left_today": 5,
                                    "free_per_day": 5,
                                    "sent_today": 0,
                                    "max_per_send": 1000,
                                    "max_per_day": 5000,
                                    "packages": [
                                        {
                                            "id": 100,
                                            "messages": 100,
                                            "price_cents": 1000
                                        }
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"messages\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            }
        },
        "/messages/quote": {
            "get": {
                "summary": "What a send would cost and who would get it",
                "tags": [
                    "messages"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "messages"
                        ]
                    },
                    {
                        "Bearer": [
                            "messages"
                        ]
                    }
                ],
                "parameters": [
                    {
                        "name": "to",
                        "in": "query",
                        "required": false,
                        "description": "comma-separated identities (yt:, tw:, dev:, or a member as u:<id> / user:<id>)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "recipients": [
                                        {
                                            "identity": "yt:UCxxxxxxxxxxxxxxxxxxxxxx",
                                            "platform": "yt",
                                            "name": "Creator name",
                                            "sub": "1.2M subscribers",
                                            "avatar": "https://\u2026",
                                            "reachable": true,
                                            "state": "send",
                                            "claimed": false,
                                            "status": "send"
                                        }
                                    ],
                                    "send": 1,
                                    "free_left": 5,
                                    "credits_needed": 0,
                                    "credits": 120,
                                    "cost_ok": true
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"messages\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            }
        },
        "/messages": {
            "post": {
                "summary": "Send one message to up to 1,000 recipients. 5 free per UTC day, then 1 credit each; unreachable, duplicate (24 h) and blocked recipients are skipped and never charged; all-or-nothing",
                "tags": [
                    "messages"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "messages"
                        ]
                    },
                    {
                        "Bearer": [
                            "messages"
                        ]
                    }
                ],
                "parameters": [],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "message_id": 77,
                                    "sent": 3,
                                    "free_used": 3,
                                    "credits_used": 0,
                                    "delivered": 1,
                                    "invited": 2,
                                    "credits_left": 120
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"messages\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    },
                    "402": {
                        "description": "Not enough credits: the answer lists the packages"
                    }
                },
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "to": {
                                        "type": "array",
                                        "description": "identities (yt:, tw:, dev:, u:<id> / user:<id> for a member)"
                                    },
                                    "subject": {
                                        "type": "string",
                                        "description": "\u2264 150"
                                    },
                                    "body": {
                                        "type": "string",
                                        "description": "\u2264 5,000 plain text"
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/messages/inbox": {
            "get": {
                "summary": "Messages you received",
                "tags": [
                    "messages"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "messages"
                        ]
                    },
                    {
                        "Bearer": [
                            "messages"
                        ]
                    }
                ],
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "required": false,
                        "description": "Page number, from 1",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "per",
                        "in": "query",
                        "required": false,
                        "description": "Items per page, 1-100 (default 30)",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "items": [],
                                    "unread": 0
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"messages\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            }
        },
        "/messages/sent": {
            "get": {
                "summary": "Messages you sent with per-recipient status counts",
                "tags": [
                    "messages"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "messages"
                        ]
                    },
                    {
                        "Bearer": [
                            "messages"
                        ]
                    }
                ],
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "required": false,
                        "description": "Page number, from 1",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "per",
                        "in": "query",
                        "required": false,
                        "description": "Items per page, 1-100 (default 30)",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "items": []
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"messages\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            }
        },
        "/messages/{id}": {
            "get": {
                "summary": "A conversation (or your sent message with its recipients)",
                "tags": [
                    "messages"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "messages"
                        ]
                    },
                    {
                        "Bearer": [
                            "messages"
                        ]
                    }
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "thread_id": 1,
                                    "messages": []
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"messages\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            }
        },
        "/messages/{id}/reply": {
            "post": {
                "summary": "Reply in a conversation (free)",
                "tags": [
                    "messages"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "messages"
                        ]
                    },
                    {
                        "Bearer": [
                            "messages"
                        ]
                    }
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "message_id": 78
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"messages\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                },
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "body": {
                                        "type": "string",
                                        "description": ""
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/messages/{id}/read": {
            "post": {
                "summary": "Mark read",
                "tags": [
                    "messages"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "messages"
                        ]
                    },
                    {
                        "Bearer": [
                            "messages"
                        ]
                    }
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"messages\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            }
        },
        "/messages/read-all": {
            "post": {
                "summary": "Mark every received message read",
                "tags": [
                    "messages"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "messages"
                        ]
                    },
                    {
                        "Bearer": [
                            "messages"
                        ]
                    }
                ],
                "parameters": [],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"messages\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            }
        },
        "/messages/{id}/report": {
            "post": {
                "summary": "Report a message you received",
                "tags": [
                    "messages"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "messages"
                        ]
                    },
                    {
                        "Bearer": [
                            "messages"
                        ]
                    }
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "blocked": false
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"messages\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                },
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "reason": {
                                        "type": "string",
                                        "description": ""
                                    },
                                    "block": {
                                        "type": "boolean",
                                        "description": "also block the sender"
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/users/{id}/block": {
            "post": {
                "summary": "Block a member",
                "tags": [
                    "users"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "messages"
                        ]
                    },
                    {
                        "Bearer": [
                            "messages"
                        ]
                    }
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"messages\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            },
            "delete": {
                "summary": "Unblock a member",
                "tags": [
                    "users"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "messages"
                        ]
                    },
                    {
                        "Bearer": [
                            "messages"
                        ]
                    }
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"messages\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            }
        },
        "/credits/packages": {
            "get": {
                "summary": "Credit packages",
                "tags": [
                    "credits"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "messages"
                        ]
                    },
                    {
                        "Bearer": [
                            "messages"
                        ]
                    }
                ],
                "parameters": [],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "items": [
                                        {
                                            "id": 100,
                                            "messages": 100,
                                            "price_cents": 1000,
                                            "price": "$10.00"
                                        }
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"messages\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            }
        },
        "/credits/checkout": {
            "post": {
                "summary": "Start a purchase: returns the Stripe Checkout URL to open in a browser",
                "tags": [
                    "credits"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "messages"
                        ]
                    },
                    {
                        "Bearer": [
                            "messages"
                        ]
                    }
                ],
                "parameters": [],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "checkout_url": "https://checkout.stripe.com/\u2026"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"messages\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                },
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "package_id": {
                                        "type": "integer",
                                        "description": "100, 500, 1000, 5000, 10000 or 25000"
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/credits/history": {
            "get": {
                "summary": "Credit ledger",
                "tags": [
                    "credits"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "messages"
                        ]
                    },
                    {
                        "Bearer": [
                            "messages"
                        ]
                    }
                ],
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "required": false,
                        "description": "Page number, from 1",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "per",
                        "in": "query",
                        "required": false,
                        "description": "Items per page, 1-100 (default 30)",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "items": [],
                                    "credits": 120
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"messages\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            }
        },
        "/dashboard": {
            "get": {
                "summary": "Dashboard summary: follows, my games with live coverage, alerts, claims, requests",
                "tags": [
                    "dashboard"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "dashboard"
                        ]
                    },
                    {
                        "Bearer": [
                            "dashboard"
                        ]
                    }
                ],
                "parameters": [],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "credits": 120,
                                    "follows": [],
                                    "my_games": []
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"dashboard\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            }
        },
        "/apps/{appid}/follow": {
            "post": {
                "summary": "Follow a game (alerts when creators cover it)",
                "tags": [
                    "apps"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "dashboard"
                        ]
                    },
                    {
                        "Bearer": [
                            "dashboard"
                        ]
                    }
                ],
                "parameters": [
                    {
                        "name": "appid",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"dashboard\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            },
            "delete": {
                "summary": "Unfollow",
                "tags": [
                    "apps"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "dashboard"
                        ]
                    },
                    {
                        "Bearer": [
                            "dashboard"
                        ]
                    }
                ],
                "parameters": [
                    {
                        "name": "appid",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"dashboard\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            }
        },
        "/apps/{appid}/own": {
            "post": {
                "summary": "Attach a game to your dashboard \"My games\" (private; others see it on your profile only once you verified it with a claim)",
                "tags": [
                    "apps"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "dashboard"
                        ]
                    },
                    {
                        "Bearer": [
                            "dashboard"
                        ]
                    }
                ],
                "parameters": [
                    {
                        "name": "appid",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"dashboard\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            },
            "delete": {
                "summary": "Detach a game from \"My games\"",
                "tags": [
                    "apps"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "dashboard"
                        ]
                    },
                    {
                        "Bearer": [
                            "dashboard"
                        ]
                    }
                ],
                "parameters": [
                    {
                        "name": "appid",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"dashboard\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            }
        },
        "/alerts": {
            "get": {
                "summary": "Alerts (new creators / videos / streamers on followed games, claims)",
                "tags": [
                    "alerts"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "dashboard"
                        ]
                    },
                    {
                        "Bearer": [
                            "dashboard"
                        ]
                    }
                ],
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "required": false,
                        "description": "Page number, from 1",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "per",
                        "in": "query",
                        "required": false,
                        "description": "Items per page, 1-100 (default 30)",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "items": []
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"dashboard\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            }
        },
        "/alerts/read": {
            "post": {
                "summary": "Mark alerts read",
                "tags": [
                    "alerts"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "dashboard"
                        ]
                    },
                    {
                        "Bearer": [
                            "dashboard"
                        ]
                    }
                ],
                "parameters": [],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"dashboard\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                },
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "ids": {
                                        "type": "array",
                                        "description": "optional; all when omitted"
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/claims": {
            "get": {
                "summary": "Your ownership claims and verified assets",
                "tags": [
                    "claims"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "dashboard"
                        ]
                    },
                    {
                        "Bearer": [
                            "dashboard"
                        ]
                    }
                ],
                "parameters": [],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "items": []
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"dashboard\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            },
            "post": {
                "summary": "Start a claim: a code is e-mailed to the profile's contact address",
                "tags": [
                    "claims"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "dashboard"
                        ]
                    },
                    {
                        "Bearer": [
                            "dashboard"
                        ]
                    }
                ],
                "parameters": [],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "claim": {
                                        "id": 9,
                                        "status": "pending"
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"dashboard\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                },
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "identity": {
                                        "type": "string",
                                        "description": "yt:, tw: or dev:"
                                    },
                                    "method": {
                                        "type": "string",
                                        "description": "email_code (the only method)"
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/claims/{id}": {
            "get": {
                "summary": "Claim status",
                "tags": [
                    "claims"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "dashboard"
                        ]
                    },
                    {
                        "Bearer": [
                            "dashboard"
                        ]
                    }
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "claim": {
                                        "id": 9,
                                        "status": "pending"
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"dashboard\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            }
        },
        "/claims/{id}/cancel": {
            "post": {
                "summary": "Cancel a claim",
                "tags": [
                    "claims"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "dashboard"
                        ]
                    },
                    {
                        "Bearer": [
                            "dashboard"
                        ]
                    }
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"dashboard\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            }
        },
        "/claims/{id}/verify": {
            "post": {
                "summary": "Enter the e-mailed verification code",
                "tags": [
                    "claims"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "dashboard"
                        ]
                    },
                    {
                        "Bearer": [
                            "dashboard"
                        ]
                    }
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "verified": true
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"dashboard\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                },
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "code": {
                                        "type": "string",
                                        "description": "SR-XXXX-XXXX"
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/library": {
            "get": {
                "summary": "Imported Steam library or wishlist with our data per game",
                "tags": [
                    "library"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "dashboard"
                        ]
                    },
                    {
                        "Bearer": [
                            "dashboard"
                        ]
                    }
                ],
                "parameters": [
                    {
                        "name": "kind",
                        "in": "query",
                        "required": false,
                        "description": "owned (default) or wishlist",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "items": []
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"dashboard\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            }
        },
        "/library/import": {
            "post": {
                "summary": "Import the linked Steam account's library or wishlist (public profile)",
                "tags": [
                    "library"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "dashboard"
                        ]
                    },
                    {
                        "Bearer": [
                            "dashboard"
                        ]
                    }
                ],
                "parameters": [],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "imported": 120
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"dashboard\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                },
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "kind": {
                                        "type": "string",
                                        "description": "owned or wishlist"
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/affiliate": {
            "get": {
                "summary": "Referral link, referred users, earnings, payouts",
                "tags": [
                    "affiliate"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "dashboard"
                        ]
                    },
                    {
                        "Bearer": [
                            "dashboard"
                        ]
                    }
                ],
                "parameters": [],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "ref_code": "abc12345",
                                    "balance_cents": 0,
                                    "earned_cents": 0,
                                    "min_payout_cents": 2000,
                                    "payout_methods": [
                                        {
                                            "id": "USDT-TRC20",
                                            "label": "USDT \u00b7 Tron (TRC-20)"
                                        }
                                    ],
                                    "payouts": []
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"dashboard\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            }
        },
        "/affiliate/convert": {
            "post": {
                "summary": "Convert affiliate earnings to credits",
                "tags": [
                    "affiliate"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "dashboard"
                        ]
                    },
                    {
                        "Bearer": [
                            "dashboard"
                        ]
                    }
                ],
                "parameters": [],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"dashboard\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            }
        },
        "/affiliate/payout": {
            "post": {
                "summary": "Request a crypto withdrawal of the whole available balance (\u2265 $20; session token only, confirmed e-mail). method = a payout_methods id from GET affiliate (USDT-TRC20, USDT-ERC20, USDC-ERC20, USDC-SOL, BTC, ETH), details = the wallet address",
                "tags": [
                    "affiliate"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "dashboard"
                        ]
                    },
                    {
                        "Bearer": [
                            "dashboard"
                        ]
                    }
                ],
                "parameters": [],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "amount_cents": 2000,
                                    "payout_id": 1
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"dashboard\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                },
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "method": {
                                        "type": "string",
                                        "description": "USDT-TRC20"
                                    },
                                    "details": {
                                        "type": "string",
                                        "description": "wallet address"
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/purchases": {
            "get": {
                "summary": "Payments and ledger",
                "tags": [
                    "purchases"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "dashboard"
                        ]
                    },
                    {
                        "Bearer": [
                            "dashboard"
                        ]
                    }
                ],
                "parameters": [],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "payments": [],
                                    "ledger": []
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"dashboard\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                }
            }
        },
        "/{target}/rate": {
            "post": {
                "summary": "Rate a target 1-5 with an optional review",
                "tags": [
                    "social"
                ],
                "security": [
                    {
                        "ApiKey": [
                            "dashboard"
                        ]
                    },
                    {
                        "Bearer": [
                            "dashboard"
                        ]
                    }
                ],
                "parameters": [
                    {
                        "name": "target",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "example": {
                                    "ok": true,
                                    "rating": {
                                        "avg": 4.5,
                                        "count": 13
                                    },
                                    "my_rating": 5
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key / token"
                    },
                    "403": {
                        "description": "The key lacks the \"dashboard\" scope"
                    },
                    "429": {
                        "description": "Rate limited (per-key limit per minute)"
                    }
                },
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "stars": {
                                        "type": "integer",
                                        "description": "1-5"
                                    },
                                    "review": {
                                        "type": "string",
                                        "description": "optional"
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}