{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/arena-predictions-com/json-schema/arena-predictions-com-me-schema.json",
  "title": "Me",
  "x-generated": "2026-11-01",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/arena-predictions-com-openapi.json#/components/schemas/Me",
  "type": "object",
  "required": [
    "user",
    "key",
    "mode",
    "paperOnly",
    "limits"
  ],
  "properties": {
    "user": {
      "type": "object",
      "required": [
        "id",
        "displayName",
        "private"
      ],
      "properties": {
        "id": {
          "type": "string",
          "format": "uuid"
        },
        "displayName": {
          "type": [
            "string",
            "null"
          ]
        },
        "private": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "Accounts are private by default: others see none of this account's trades or numbers until its owner makes the profile public in Settings on the website. Null when it could not be read."
        }
      }
    },
    "key": {
      "type": "object",
      "required": [
        "prefix",
        "scopes"
      ],
      "properties": {
        "prefix": {
          "type": "string"
        },
        "scopes": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "mode": {
      "type": "string",
      "const": "paper"
    },
    "paperOnly": {
      "type": "boolean",
      "description": "True unless this key carries a live-order scope (trade:write:kalshi, trade:write:poly-intl or trade:write:prophetx). A paper-only key's trades fill in Arena's sandbox and are not sent to a venue."
    },
    "limits": {
      "type": [
        "object",
        "null"
      ],
      "description": "The plan's minute and month. The same numbers as the RateLimit and Arena-Quota headers. Null when the server could not read them.",
      "required": [
        "minute",
        "month",
        "enforced"
      ],
      "properties": {
        "minute": {
          "type": "object",
          "required": [
            "limit",
            "remaining"
          ],
          "properties": {
            "limit": {
              "type": "integer",
              "minimum": 0
            },
            "remaining": {
              "type": "integer",
              "minimum": 0
            }
          }
        },
        "month": {
          "type": "object",
          "required": [
            "limit",
            "used"
          ],
          "properties": {
            "limit": {
              "type": "integer",
              "minimum": 0
            },
            "used": {
              "type": "integer",
              "minimum": 0
            }
          }
        },
        "enforced": {
          "type": "boolean",
          "description": "When false, a request over the limit is still answered and only the count is kept."
        }
      }
    }
  }
}