{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/fluidrecall-com/json-schema/fluidrecall-com-new-cards-report-schema.json",
  "title": "NewCardsReport",
  "x-generated": "2026-11-08",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/fluidrecall-com-openapi.json#/components/schemas/NewCardsReport",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "mode",
    "extraNew",
    "timezone",
    "dayBoundaryHour",
    "dayStart",
    "nextDayStart",
    "remainingToday",
    "waiting",
    "decks"
  ],
  "properties": {
    "mode": {
      "type": "string",
      "enum": [
        "daily",
        "extra"
      ]
    },
    "extraNew": {
      "type": "integer",
      "description": "How many past-cap new cards this call asked for. 0 on a daily call."
    },
    "timezone": {
      "type": "string"
    },
    "dayBoundaryHour": {
      "type": "integer"
    },
    "dayStart": {
      "type": "string",
      "description": "UTC ISO-8601 timestamp ending in Z"
    },
    "nextDayStart": {
      "type": "string",
      "description": "When the allowance resets. Do not raise newCardsPerDay just to finish today's extras."
    },
    "remainingToday": {
      "type": "integer",
      "description": "How many new cards the default queue may still introduce across the decks in this response."
    },
    "waiting": {
      "type": "integer",
      "description": "New cards held behind the cap. Offer to keep going when this is greater than 0 and the person wants more. Do not fetch them until they agree."
    },
    "decks": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "deckId",
          "deckName",
          "newCardsPerDay",
          "effectiveNewCardsPerDay",
          "introducedToday",
          "remainingToday",
          "waiting"
        ],
        "properties": {
          "deckId": {
            "type": "string"
          },
          "deckName": {
            "type": "string"
          },
          "newCardsPerDay": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The integer stored on this deck. Null only when the deck still inherits the account fallback. New decks store an integer."
          },
          "effectiveNewCardsPerDay": {
            "type": "integer"
          },
          "introducedToday": {
            "type": "integer"
          },
          "remainingToday": {
            "type": "integer"
          },
          "waiting": {
            "type": "integer"
          }
        }
      }
    }
  }
}