{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/flashdata-dev/json-schema/flashdata-dev-trial-credit-state-schema.json",
  "title": "TrialCreditState",
  "x-generated": "2026-11-10",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/flashdata-dev-trial-credits-api-openapi.yml#/components/schemas/TrialCreditState",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "eligible",
    "ineligibilityReason",
    "grantCredits",
    "settingsVersion",
    "request"
  ],
  "properties": {
    "eligible": {
      "type": "boolean"
    },
    "ineligibilityReason": {
      "type": [
        "string",
        "null"
      ],
      "enum": [
        "account_inactive",
        "email_unverified",
        "onboarding_incomplete",
        "not_payg",
        "payment_history",
        "already_granted",
        "already_requested",
        null
      ]
    },
    "grantCredits": {
      "type": "integer",
      "minimum": 1
    },
    "settingsVersion": {
      "type": "integer",
      "minimum": 0
    },
    "request": {
      "oneOf": [
        {
          "$ref": "#/$defs/TrialCreditRequest"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "$defs": {
    "TrialCreditRequest": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "id",
        "status",
        "requestedCredits",
        "policyVersion",
        "useCase",
        "requestedAt",
        "reviewedAt",
        "reviewReason",
        "version"
      ],
      "properties": {
        "id": {
          "type": "string",
          "pattern": "^tcr_[A-Za-z0-9_-]{8,}$"
        },
        "status": {
          "$ref": "#/$defs/TrialCreditRequestStatus"
        },
        "requestedCredits": {
          "type": "integer",
          "minimum": 1
        },
        "policyVersion": {
          "type": "integer",
          "minimum": 0
        },
        "useCase": {
          "type": [
            "string",
            "null"
          ],
          "enum": [
            "google_search",
            "youtube_data",
            "download",
            null
          ]
        },
        "requestedAt": {
          "type": "string",
          "format": "date-time"
        },
        "reviewedAt": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time"
        },
        "reviewReason": {
          "type": [
            "string",
            "null"
          ]
        },
        "version": {
          "type": "integer",
          "minimum": 0
        }
      }
    },
    "TrialCreditRequestStatus": {
      "type": "string",
      "enum": [
        "pending",
        "approved",
        "rejected"
      ]
    }
  }
}