{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/changethisfile-com/json-schema/changethisfile-com-plan-schema.json",
  "title": "Plan",
  "x-generated": "2026-11-03",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/changethisfile-com-openapi.yml#/components/schemas/Plan",
  "type": "object",
  "required": [
    "id",
    "name",
    "monthly_price_cents",
    "annual_price_cents",
    "monthly_conversions",
    "max_file_size",
    "rate_per_minute",
    "overage_cents_per_conversion"
  ],
  "properties": {
    "id": {
      "$ref": "#/$defs/PlanId"
    },
    "name": {
      "type": "string"
    },
    "monthly_price_cents": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Monthly price in USD cents. `0` for the free plan, `null` for enterprise."
    },
    "annual_price_cents": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Annual price in USD cents. Reflects the 20% annual discount."
    },
    "monthly_conversions": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Conversions permitted per calendar month. `null` for enterprise (custom)."
    },
    "max_file_size": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Maximum file size in bytes."
    },
    "rate_per_minute": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Maximum requests per minute."
    },
    "overage_cents_per_conversion": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Legacy pricing metadata. Runtime conversion above plan quota requires a prepaid conversion-credit balance; no automatic usage overage is charged."
    }
  },
  "$defs": {
    "PlanId": {
      "type": "string",
      "enum": [
        "free",
        "hobby",
        "startup",
        "scale",
        "growth",
        "enterprise"
      ],
      "description": "Self-serve plan identifier. `enterprise` is billed via custom contract — see `/pricing`."
    }
  }
}