{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://www.umggaming.com/schemas/sites.schema.json",
  "title": "UMG Gaming Open iGaming Dataset — sites export",
  "description": "Every site in the UMG Gaming directory with operator details and player-review ratings. Data © UMG Gaming contributors, CC BY-SA 4.0.",
  "type": "object",
  "required": ["dataset", "generated_at", "license", "attribution", "schema_version", "count", "data"],
  "properties": {
    "dataset": { "type": "string", "const": "umggaming-sites" },
    "generated_at": { "type": "string", "format": "date-time" },
    "source": { "type": "string", "format": "uri" },
    "license": { "type": "string", "const": "CC BY-SA 4.0" },
    "license_url": { "type": "string", "format": "uri" },
    "attribution": { "type": "string" },
    "schema_version": { "type": "string" },
    "schema": { "type": "string", "format": "uri" },
    "count": { "type": "integer", "minimum": 0 },
    "data": { "type": "array", "items": { "$ref": "#/$defs/site" } }
  },
  "$defs": {
    "site": {
      "type": "object",
      "required": ["id", "name", "slug", "vertical", "is_active", "review_count", "verified_review_count"],
      "properties": {
        "id": { "type": "string", "format": "uuid", "description": "Stable site identifier" },
        "name": { "type": "string" },
        "slug": { "type": "string", "description": "URL path of the site page: umggaming.com/site/{slug}" },
        "vertical": { "type": "string", "description": "Category key, e.g. sweepstakes_casino" },
        "company": { "type": ["string", "null"], "description": "Operating company" },
        "established_year": { "type": ["integer", "null"] },
        "website": { "type": ["string", "null"], "description": "The operator's official site (direct link, no tracking)" },
        "is_active": { "type": "boolean", "description": "false for sites in the inactive archive" },
        "rating": { "type": ["number", "null"], "minimum": 1, "maximum": 5, "description": "Weighted player-review average; verified reviews count five times. Null when unrated." },
        "rating_unweighted": { "type": ["number", "null"], "minimum": 1, "maximum": 5, "description": "Plain average of published reviews" },
        "review_count": { "type": "integer", "minimum": 0 },
        "verified_review_count": { "type": "integer", "minimum": 0 }
      }
    }
  }
}
