{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/hootlens-com/json-schema/hootlens-com-traffic-summary-schema.json",
  "title": "TrafficSummary",
  "x-generated": "2026-11-11",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/hootlens-com-openapi.json#/components/schemas/TrafficSummary",
  "type": "object",
  "properties": {
    "from": {
      "type": "integer",
      "description": "Epoch milliseconds.",
      "minimum": 0
    },
    "to": {
      "type": "integer",
      "description": "Epoch milliseconds.",
      "minimum": 0
    },
    "sessions": {
      "type": "integer"
    },
    "automatedSessions": {
      "type": "integer",
      "description": "Site-wide traffic only."
    },
    "daily": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "day": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
          },
          "sessions": {
            "type": "integer"
          },
          "automated": {
            "type": "integer"
          }
        },
        "required": [
          "day",
          "sessions"
        ],
        "additionalProperties": true
      }
    },
    "goals": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/GoalStat"
      }
    },
    "referrers": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "sessions": {
            "type": "integer"
          }
        },
        "required": [
          "key",
          "sessions"
        ],
        "additionalProperties": true
      },
      "description": "Referrer origins; (direct) is a visit without an external referrer. At most 25."
    },
    "utmSources": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "sessions": {
            "type": "integer"
          }
        },
        "required": [
          "key",
          "sessions"
        ],
        "additionalProperties": true
      },
      "description": "At most 25."
    },
    "utmCampaigns": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "sessions": {
            "type": "integer"
          }
        },
        "required": [
          "key",
          "sessions"
        ],
        "additionalProperties": true
      },
      "description": "At most 25."
    },
    "deviceClasses": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "sessions": {
            "type": "integer"
          }
        },
        "required": [
          "key",
          "sessions"
        ],
        "additionalProperties": true
      },
      "description": "Visits by device class."
    },
    "browsers": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "sessions": {
            "type": "integer"
          }
        },
        "required": [
          "key",
          "sessions"
        ],
        "additionalProperties": true
      },
      "description": "At most 25."
    },
    "operatingSystems": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "sessions": {
            "type": "integer"
          }
        },
        "required": [
          "key",
          "sessions"
        ],
        "additionalProperties": true
      },
      "description": "At most 25."
    },
    "visitors": {
      "type": "object",
      "properties": {
        "new": {
          "type": "integer"
        },
        "returning": {
          "type": "integer"
        },
        "unknown": {
          "type": "integer"
        }
      },
      "required": [
        "new",
        "returning",
        "unknown"
      ],
      "additionalProperties": true
    },
    "countries": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "sessions": {
            "type": "integer"
          }
        },
        "required": [
          "key",
          "sessions"
        ],
        "additionalProperties": true
      },
      "description": "ISO 3166-1 codes or unknown. At most 25."
    },
    "channels": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "sessions": {
            "type": "integer"
          }
        },
        "required": [
          "key",
          "sessions"
        ],
        "additionalProperties": true
      },
      "description": "Default channel ids. At most 25."
    },
    "adNetworks": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "sessions": {
            "type": "integer"
          }
        },
        "required": [
          "key",
          "sessions"
        ],
        "additionalProperties": true
      },
      "description": "Ad network names."
    },
    "inApps": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "sessions": {
            "type": "integer"
          }
        },
        "required": [
          "key",
          "sessions"
        ],
        "additionalProperties": true
      },
      "description": "In-app browser names."
    },
    "entryPages": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "sessions": {
            "type": "integer"
          }
        },
        "required": [
          "key",
          "sessions"
        ],
        "additionalProperties": true
      },
      "description": "First page of each visit. At most 25."
    },
    "notRecorded": {
      "type": "object",
      "description": "Visits with no value for each source, so each list plus its gap adds up to sessions. Days before channels, countries and entry pages were counted are here.",
      "properties": {
        "countries": {
          "type": "integer"
        },
        "channels": {
          "type": "integer"
        },
        "entryPages": {
          "type": "integer"
        }
      },
      "required": [
        "countries",
        "channels",
        "entryPages"
      ],
      "additionalProperties": true
    },
    "sourcesCountedFrom": {
      "type": "string",
      "description": "The first UTC day (YYYY-MM-DD) channels, countries and entry pages are counted. Set when the range starts before it and visits lack them."
    },
    "group": {
      "type": "object",
      "description": "Set when the request named a page group.",
      "properties": {
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        }
      },
      "required": [
        "id",
        "name"
      ],
      "additionalProperties": true
    },
    "languages": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "sessions": {
            "type": "integer"
          }
        },
        "required": [
          "key",
          "sessions"
        ],
        "additionalProperties": true
      },
      "description": "Page group traffic only."
    },
    "variants": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "sessions": {
            "type": "integer"
          }
        },
        "required": [
          "key",
          "sessions"
        ],
        "additionalProperties": true
      },
      "description": "Page group traffic only."
    }
  },
  "required": [
    "from",
    "to",
    "sessions",
    "daily",
    "goals",
    "referrers",
    "utmSources",
    "utmCampaigns",
    "deviceClasses",
    "browsers",
    "operatingSystems",
    "visitors"
  ],
  "additionalProperties": true,
  "$defs": {
    "GoalStat": {
      "type": "object",
      "properties": {
        "goalId": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "kind": {
          "type": "string",
          "enum": [
            "click",
            "page",
            "event"
          ]
        },
        "sessions": {
          "type": "integer"
        },
        "conversions": {
          "type": "integer"
        },
        "rate": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ]
        },
        "interval": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "type": "number"
              },
              "minItems": 2,
              "maxItems": 2
            },
            {
              "type": "null"
            }
          ]
        },
        "since": {
          "type": "integer",
          "description": "When counting under the goal's current definition began.",
          "minimum": 0
        }
      },
      "required": [
        "goalId",
        "name",
        "kind",
        "sessions",
        "conversions",
        "rate",
        "interval",
        "since"
      ],
      "additionalProperties": true
    }
  }
}