{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/valotcg/json-schema/valotcg-usage-response-schema.json",
  "title": "UsageResponse",
  "x-generated": "2026-11-03",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/valotcg-data-v1-openapi.json#/components/schemas/UsageResponse",
  "properties": {
    "product": {
      "type": "string",
      "enum": [
        "data",
        "vision",
        "ia"
      ],
      "title": "Product",
      "description": "`data` (credits), `vision` (scans) or `ia` (questions)."
    },
    "plan_id": {
      "type": "string",
      "title": "Plan Id"
    },
    "status": {
      "type": "string",
      "title": "Status",
      "description": "Subscription status."
    },
    "period_start": {
      "type": "string",
      "format": "date",
      "title": "Period Start",
      "description": "Start of the current monthly credit window (trial: its start)."
    },
    "period_end": {
      "anyOf": [
        {
          "type": "string",
          "format": "date"
        },
        {
          "type": "null"
        }
      ],
      "title": "Period End",
      "description": "End (exclusive) of the current monthly credit window; `null` for the trial."
    },
    "resets_at": {
      "anyOf": [
        {
          "type": "string",
          "format": "date-time"
        },
        {
          "type": "null"
        }
      ],
      "title": "Resets At",
      "description": "When the credits renew; `null` for the trial (never)."
    },
    "credits_included": {
      "type": "integer",
      "title": "Credits Included"
    },
    "credits_used": {
      "type": "integer",
      "title": "Credits Used"
    },
    "credits_remaining": {
      "type": "integer",
      "title": "Credits Remaining"
    },
    "rate_limit_per_minute": {
      "type": "integer",
      "title": "Rate Limit Per Minute"
    },
    "overage": {
      "$ref": "#/$defs/Overage"
    },
    "daily": {
      "items": {
        "$ref": "#/$defs/DailyUsage"
      },
      "type": "array",
      "title": "Daily",
      "description": "Last 30 days (UTC), oldest first, days without traffic at 0."
    }
  },
  "type": "object",
  "required": [
    "product",
    "plan_id",
    "status",
    "period_start",
    "period_end",
    "resets_at",
    "credits_included",
    "credits_used",
    "credits_remaining",
    "rate_limit_per_minute",
    "daily"
  ],
  "$defs": {
    "DailyUsage": {
      "properties": {
        "date": {
          "type": "string",
          "format": "date",
          "title": "Date"
        },
        "credits": {
          "type": "integer",
          "title": "Credits",
          "description": "Credits billed that day (UTC)."
        },
        "requests": {
          "type": "integer",
          "title": "Requests",
          "description": "Metered requests, errors included."
        },
        "errors": {
          "type": "integer",
          "title": "Errors",
          "description": "Responses with a status of 400 or more."
        }
      },
      "type": "object",
      "required": [
        "date",
        "credits",
        "requests",
        "errors"
      ],
      "title": "DailyUsage"
    },
    "Overage": {
      "properties": {
        "enabled": {
          "type": "boolean",
          "title": "Enabled",
          "description": "Paid overage is not available during the beta.",
          "default": false
        }
      },
      "type": "object",
      "title": "Overage"
    }
  }
}