{
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "license": "CC BY 4.0",
 "$id": "https://glp1pricecompare.com/data/schema/prices.schema.json",
 "title": "GLP-1 Price Compare — prices",
 "description": "Price observations: normalized plan rows with grades, dates, sources and computed all-in figures.",
 "type": "object",
 "properties": {
  "dataset_version": {
   "type": "string"
  },
  "generated_at": {
   "type": "string"
  },
  "license": {
   "type": "string"
  },
  "attribution": {
   "type": "string"
  },
  "count": {
   "type": "integer"
  },
  "observations": {
   "type": "array",
   "items": {
    "type": "object",
    "properties": {
     "observation_id": {
      "type": "string"
     },
     "provider_id": {
      "type": "string"
     },
     "provider": {
      "type": "string"
     },
     "slug": {
      "type": "string"
     },
     "medication": {
      "type": "string"
     },
     "formulation": {
      "type": "string"
     },
     "protocol": {
      "type": "string"
     },
     "form": {
      "type": "string"
     },
     "plan_term_months": {
      "type": "integer",
      "description": "Commitment length in months; 1 = true month-to-month."
     },
     "term_label": {
      "type": "string"
     },
     "advertised_monthly_price_usd": {
      "type": [
       "integer",
       "number",
       "null"
      ],
      "description": "The provider's advertised per-month figure for the plan, exactly as published."
     },
     "maintenance_monthly_price_usd": {
      "type": [
       "integer",
       "number",
       "null"
      ]
     },
     "introductory_months": {
      "type": "integer"
     },
     "first_month_total_usd": {
      "type": [
       "integer",
       "number",
       "null"
      ]
     },
     "billing_cycle": {
      "type": "string",
      "description": "How the plan bills: monthly, per-28-days, prepaid, or not_stated (never assumed)."
     },
     "billing_cycle_days": {
      "type": "integer"
     },
     "calendar_month_equivalent_usd": {
      "type": [
       "integer",
       "number",
       "null"
      ],
      "description": "28-day prices × 365.25/28/12, shown alongside (never replacing) the advertised figure."
     },
     "upfront_payment_usd": {
      "type": [
       "integer",
       "null"
      ]
     },
     "mandatory_membership_fee_usd": {
      "type": [
       "integer",
       "null"
      ],
      "description": "Mandatory recurring membership in USD; 0 means the provider states no fee; null means not published."
     },
     "shipping": {
      "type": "string"
     },
     "consultation": {
      "type": "string"
     },
     "provider_care_included": {
      "type": "boolean"
     },
     "medication_included": {
      "type": "boolean"
     },
     "dose_pricing": {
      "type": "string",
      "description": "flat (provider states one price at every dose), dose_based, or not_stated (never assumed)."
     },
     "maintenance_price_published": {
      "type": "boolean",
      "description": "Whether the provider publishes the maintenance-dose price."
     },
     "true_monthly_usd": {
      "type": [
       "integer",
       "number",
       "null"
      ],
      "description": "All-in monthly cost at the maintenance dose: medication + every mandatory recurring fee. Null where it cannot be computed from published terms."
     },
     "true_monthly_starting_usd": {
      "type": [
       "integer",
       "number",
       "null"
      ]
     },
     "annual_total_usd": {
      "type": [
       "integer",
       "number",
       "null"
      ],
      "description": "12-month all-in cost: month-by-month sum applying introductory prices to covered months and the modeled dose path, plus all mandatory fees and upfront payments."
     },
     "annual_assumptions": {
      "type": "array"
     },
     "price_source_url": {
      "type": "string",
      "description": "The exact page the figure was recorded from."
     },
     "source_type": {
      "type": "string",
      "description": "provider_page (first-party) or third_party_report (grade D)."
     },
     "source_quote": {
      "type": [
       "null",
       "null"
      ]
     },
     "verified_at": {
      "type": [
       "string",
       "null"
      ],
      "description": "Date the figure was recorded from its source (ISO 8601)."
     },
     "verification_status": {
      "type": "string"
     },
     "grade": {
      "type": "string",
      "description": "Evidence grade. A: price and terms verified on the provider's page. B: price verified; some terms unpublished. C: introductory/promotional price only. D: third-party report, never counted as verified. U: no public price (no number published)."
     },
     "grade_reason": {
      "type": "string"
     },
     "freshness_days": {
      "type": [
       "integer",
       "null"
      ]
     },
     "freshness": {
      "type": "string",
      "description": "Fresh <=7d, Recent 8-30d, Stale 31-60d, Expired >60d (excluded from headline statistics)."
     },
     "rankable": {
      "type": "boolean"
     },
     "flags": {
      "type": "array"
     },
     "note": {
      "type": [
       "string",
       "null"
      ]
     },
     "third_party_reports": {
      "type": "array"
     },
     "latest_change": {
      "type": [
       "object",
       "null"
      ]
     }
    },
    "additionalProperties": true
   }
  },
  "priced_count": {
   "type": "integer"
  },
  "note": {
   "type": "string"
  }
 }
}