{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "metadata": {
      "type": "object",
      "properties": {
        "v": {
          "type": "number",
          "description": "v recorded for this result."
        },
        "kind": {
          "type": "string",
          "description": "kind recorded for this result."
        },
        "set_id": {
          "anyOf": [
            {
              "type": "string",
              "description": "set id recorded for this result."
            },
            {
              "type": "null"
            }
          ],
          "description": "set id recorded for this result."
        },
        "set_revision": {
          "anyOf": [
            {
              "type": "number",
              "description": "set revision recorded for this result."
            },
            {
              "type": "null"
            }
          ],
          "description": "set revision recorded for this result."
        },
        "comparison": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "mode": {
                  "type": "string",
                  "description": "mode recorded for this result."
                },
                "reasons": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "description": "reasons recorded for this result."
                  },
                  "description": "reasons recorded for this result."
                },
                "absence_claim": {
                  "type": "string",
                  "const": "not_supported",
                  "description": "not_supported: missing dataset rows cannot prove link absence."
                }
              },
              "required": [
                "mode",
                "reasons",
                "absence_claim"
              ],
              "additionalProperties": {},
              "description": "comparison recorded for this result."
            },
            {
              "type": "null"
            }
          ],
          "description": "comparison recorded for this result."
        },
        "ranking_scope": {
          "type": "string",
          "description": "ranking scope recorded for this result."
        },
        "whole_web_coverage": {
          "type": "boolean",
          "const": false,
          "description": "False: these results do not measure the whole web."
        },
        "absence_claim": {
          "type": "string",
          "const": "not_supported",
          "description": "not_supported: missing dataset rows cannot prove link absence."
        },
        "label_source": {
          "type": "string",
          "description": "label source recorded for this result."
        },
        "labels": {
          "type": "array",
          "items": {
            "type": "string",
            "description": "labels recorded for this result."
          },
          "description": "labels recorded for this result."
        },
        "lanes": {
          "type": "array",
          "items": {
            "type": "string",
            "description": "lanes recorded for this result."
          },
          "description": "lanes recorded for this result."
        },
        "selected_inventory_ids": {
          "type": "array",
          "items": {
            "type": "string",
            "description": "selected inventory ids recorded for this result."
          },
          "description": "selected inventory ids recorded for this result."
        },
        "coverage_by_inventory": {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {
            "type": "string",
            "description": "coverage by inventory recorded for this result."
          },
          "description": "coverage by inventory recorded for this result."
        },
        "unselected_member_ids": {
          "type": "array",
          "items": {
            "type": "string",
            "description": "unselected member ids recorded for this result."
          },
          "description": "unselected member ids recorded for this result."
        },
        "competitor_side_available": {
          "type": "boolean",
          "description": "competitor side available recorded for this result."
        },
        "competitor_side_state": {
          "type": "string",
          "description": "competitor side state recorded for this result."
        },
        "report_hash": {
          "type": "string",
          "description": "report hash recorded for this result."
        },
        "limit": {
          "type": "number",
          "description": "limit recorded for this result."
        }
      },
      "required": [
        "v",
        "kind",
        "set_id",
        "set_revision",
        "comparison",
        "ranking_scope",
        "whole_web_coverage",
        "absence_claim",
        "label_source",
        "labels",
        "lanes",
        "selected_inventory_ids",
        "coverage_by_inventory",
        "unselected_member_ids",
        "competitor_side_available",
        "competitor_side_state",
        "report_hash",
        "limit"
      ],
      "additionalProperties": {},
      "description": "metadata recorded for this result."
    },
    "ours": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "lane": {
            "type": "string",
            "description": "lane recorded for this result."
          },
          "rows_read": {
            "type": "number",
            "description": "rows read recorded for this result."
          },
          "referring_domains": {
            "type": "number",
            "description": "referring domains recorded for this result."
          },
          "classes": {
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {
              "type": "number",
              "description": "classes recorded for this result."
            },
            "description": "classes recorded for this result."
          },
          "labelled_domains": {
            "type": "number",
            "description": "labelled domains recorded for this result."
          },
          "label_coverage": {
            "anyOf": [
              {
                "type": "number",
                "description": "label coverage recorded for this result."
              },
              {
                "type": "null"
              }
            ],
            "description": "label coverage recorded for this result."
          },
          "generic_share_of_labelled": {
            "anyOf": [
              {
                "type": "number",
                "description": "generic share of labelled recorded for this result."
              },
              {
                "type": "null"
              }
            ],
            "description": "generic share of labelled recorded for this result."
          },
          "niche_share_of_labelled": {
            "anyOf": [
              {
                "type": "number",
                "description": "niche share of labelled recorded for this result."
              },
              {
                "type": "null"
              }
            ],
            "description": "niche share of labelled recorded for this result."
          },
          "generic_niche_ratio": {
            "anyOf": [
              {
                "type": "number",
                "description": "generic niche ratio recorded for this result."
              },
              {
                "type": "null"
              }
            ],
            "description": "generic niche ratio recorded for this result."
          },
          "top_domains": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "host": {
                  "type": "string",
                  "description": "host recorded for this result."
                },
                "class": {
                  "type": "string",
                  "description": "class recorded for this result."
                },
                "referring_pages": {
                  "type": "number",
                  "description": "referring pages recorded for this result."
                },
                "rank_within_dataset": {
                  "type": "number",
                  "description": "rank within dataset recorded for this result."
                }
              },
              "required": [
                "host",
                "class",
                "referring_pages",
                "rank_within_dataset"
              ],
              "additionalProperties": {},
              "description": "top domains recorded for this result."
            },
            "description": "top domains recorded for this result."
          },
          "domain_classes": {
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {
              "type": "string",
              "description": "domain classes recorded for this result."
            },
            "description": "domain classes recorded for this result."
          }
        },
        "required": [
          "lane",
          "rows_read",
          "referring_domains",
          "classes",
          "labelled_domains",
          "label_coverage",
          "generic_share_of_labelled",
          "niche_share_of_labelled",
          "generic_niche_ratio",
          "top_domains",
          "domain_classes"
        ],
        "additionalProperties": {},
        "description": "ours recorded for this result."
      },
      "description": "ours recorded for this result."
    },
    "members": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "member_id": {
            "type": "string",
            "description": "member id recorded for this result."
          },
          "member_role": {
            "type": "string",
            "description": "member role recorded for this result."
          },
          "inventory_id": {
            "type": "string",
            "description": "inventory id recorded for this result."
          },
          "coverage": {
            "type": "string",
            "description": "Dataset scope and completeness, including limits on what these results establish."
          },
          "referring_domains": {
            "type": "number",
            "description": "referring domains recorded for this result."
          },
          "classes": {
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {
              "type": "number",
              "description": "classes recorded for this result."
            },
            "description": "classes recorded for this result."
          },
          "labelled_domains": {
            "type": "number",
            "description": "labelled domains recorded for this result."
          },
          "label_coverage": {
            "anyOf": [
              {
                "type": "number",
                "description": "label coverage recorded for this result."
              },
              {
                "type": "null"
              }
            ],
            "description": "label coverage recorded for this result."
          },
          "generic_share_of_labelled": {
            "anyOf": [
              {
                "type": "number",
                "description": "generic share of labelled recorded for this result."
              },
              {
                "type": "null"
              }
            ],
            "description": "generic share of labelled recorded for this result."
          },
          "niche_share_of_labelled": {
            "anyOf": [
              {
                "type": "number",
                "description": "niche share of labelled recorded for this result."
              },
              {
                "type": "null"
              }
            ],
            "description": "niche share of labelled recorded for this result."
          },
          "generic_niche_ratio": {
            "anyOf": [
              {
                "type": "number",
                "description": "generic niche ratio recorded for this result."
              },
              {
                "type": "null"
              }
            ],
            "description": "generic niche ratio recorded for this result."
          },
          "top_domains": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "host": {
                  "type": "string",
                  "description": "host recorded for this result."
                },
                "class": {
                  "type": "string",
                  "description": "class recorded for this result."
                },
                "referring_pages": {
                  "type": "number",
                  "description": "referring pages recorded for this result."
                },
                "rank_within_dataset": {
                  "type": "number",
                  "description": "rank within dataset recorded for this result."
                }
              },
              "required": [
                "host",
                "class",
                "referring_pages",
                "rank_within_dataset"
              ],
              "additionalProperties": {},
              "description": "top domains recorded for this result."
            },
            "description": "top domains recorded for this result."
          },
          "domain_classes": {
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {
              "type": "string",
              "description": "domain classes recorded for this result."
            },
            "description": "domain classes recorded for this result."
          }
        },
        "required": [
          "member_id",
          "member_role",
          "inventory_id",
          "coverage",
          "referring_domains",
          "classes",
          "labelled_domains",
          "label_coverage",
          "generic_share_of_labelled",
          "niche_share_of_labelled",
          "generic_niche_ratio",
          "top_domains",
          "domain_classes"
        ],
        "additionalProperties": {},
        "description": "members recorded for this result."
      },
      "description": "members recorded for this result."
    }
  },
  "required": [
    "metadata",
    "ours",
    "members"
  ],
  "additionalProperties": {}
}
