{
  "type": "object",
  "properties": {
    "state": {
      "type": "string",
      "enum": [
        "page_outside_property",
        "empty_site",
        "incomplete_window",
        "revoked",
        "not_authorized",
        "manual_only",
        "ok",
        "truncated_top_rows"
      ],
      "description": "Read-time coverage or authorization state."
    },
    "page": {
      "type": "string",
      "description": "Requested page URL."
    },
    "properties": {
      "type": "array",
      "items": {
        "type": "string",
        "description": "One recorded value."
      },
      "description": "Connected properties when the page lies outside them."
    },
    "window": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "start": {
              "type": "string",
              "description": "Calendar date in YYYY-MM-DD form."
            },
            "end": {
              "type": "string",
              "description": "Calendar date in YYYY-MM-DD form."
            },
            "days": {
              "type": "integer",
              "minimum": 0,
              "description": "Inclusive day count."
            }
          },
          "required": [
            "start",
            "end"
          ],
          "additionalProperties": false,
          "description": "Selected date window."
        },
        {
          "type": "null"
        }
      ],
      "description": "Selected date window."
    },
    "rows_returned": {
      "type": "integer",
      "minimum": 0,
      "description": "Reported count; current populated branch counts one plus query rows even when page_totals is null."
    },
    "queries": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Query text."
          },
          "clicks": {
            "anyOf": [
              {
                "type": "number",
                "description": "Observed or derived metric; null means no observed value."
              },
              {
                "type": "null"
              }
            ],
            "description": "Observed or derived metric; null means no observed value."
          },
          "impressions": {
            "anyOf": [
              {
                "type": "number",
                "description": "Observed or derived metric; null means no observed value."
              },
              {
                "type": "null"
              }
            ],
            "description": "Observed or derived metric; null means no observed value."
          },
          "ctr": {
            "anyOf": [
              {
                "type": "number",
                "description": "Observed or derived metric; null means no observed value."
              },
              {
                "type": "null"
              }
            ],
            "description": "Observed or derived metric; null means no observed value."
          },
          "average_position": {
            "anyOf": [
              {
                "type": "number",
                "description": "Observed or derived metric; null means no observed value."
              },
              {
                "type": "null"
              }
            ],
            "description": "Observed or derived metric; null means no observed value."
          }
        },
        "required": [
          "query",
          "clicks",
          "impressions",
          "ctr",
          "average_position"
        ],
        "additionalProperties": false,
        "description": "One saved page/query row."
      },
      "description": "Saved query observations ranked by clicks."
    },
    "page_totals": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "clicks": {
              "anyOf": [
                {
                  "type": "number",
                  "description": "Observed or derived metric; null means no observed value."
                },
                {
                  "type": "null"
                }
              ],
              "description": "Observed or derived metric; null means no observed value."
            },
            "impressions": {
              "anyOf": [
                {
                  "type": "number",
                  "description": "Observed or derived metric; null means no observed value."
                },
                {
                  "type": "null"
                }
              ],
              "description": "Observed or derived metric; null means no observed value."
            },
            "ctr": {
              "anyOf": [
                {
                  "type": "number",
                  "description": "Observed or derived metric; null means no observed value."
                },
                {
                  "type": "null"
                }
              ],
              "description": "Observed or derived metric; null means no observed value."
            },
            "average_position": {
              "anyOf": [
                {
                  "type": "number",
                  "description": "Observed or derived metric; null means no observed value."
                },
                {
                  "type": "null"
                }
              ],
              "description": "Observed or derived metric; null means no observed value."
            }
          },
          "required": [
            "clicks",
            "impressions",
            "ctr",
            "average_position"
          ],
          "additionalProperties": false,
          "description": "Dated counts, derived click-through rate and average position."
        },
        {
          "type": "null"
        }
      ],
      "description": "Dated counts, derived click-through rate and average position."
    },
    "notes": {
      "type": "array",
      "items": {
        "type": "string",
        "description": "One recorded value."
      },
      "description": "Coverage or manual-context explanations."
    },
    "type": {
      "type": "string",
      "description": "Search type, normally web."
    },
    "aggregationType": {
      "type": "string",
      "description": "Grouping mode, normally byPage."
    },
    "dataState": {
      "type": "string",
      "description": "Final or all data mode."
    },
    "final_through": {
      "anyOf": [
        {
          "type": "string",
          "description": "Calendar date in YYYY-MM-DD form."
        },
        {
          "type": "null"
        }
      ],
      "description": "Calendar date in YYYY-MM-DD form."
    },
    "truncated": {
      "type": "boolean",
      "description": "Returned rows hit a source cap."
    },
    "first_incomplete_date": {
      "anyOf": [
        {
          "type": "string",
          "description": "Calendar date in YYYY-MM-DD form."
        },
        {
          "type": "null"
        }
      ],
      "description": "Calendar date in YYYY-MM-DD form."
    },
    "days_requested": {
      "anyOf": [
        {
          "type": "integer",
          "minimum": 0,
          "description": "Requested window day count."
        },
        {
          "type": "null"
        }
      ],
      "description": "Requested window day count."
    },
    "days_reported": {
      "anyOf": [
        {
          "type": "integer",
          "minimum": 0,
          "description": "Reported day count when known."
        },
        {
          "type": "null"
        }
      ],
      "description": "Reported day count when known."
    },
    "days_reported_basis": {
      "anyOf": [
        {
          "type": "string",
          "description": "How the reported day count was established."
        },
        {
          "type": "null"
        }
      ],
      "description": "How the reported day count was established."
    }
  },
  "required": [
    "state",
    "page",
    "rows_returned",
    "queries",
    "page_totals"
  ],
  "additionalProperties": false,
  "description": "Page/query context; fields vary with the named state."
}
