{
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "$id": "https://kolaboro.com/data/schemas/kolaboro-data.schema.json",
 "title": "Kolaboro data contracts",
 "description": "One JSON Schema (2020-12) per public dataset under https://kolaboro.com/data/, in $defs keyed by dataset id (see /data/catalog.json). Validate a file with {\"$ref\": \"https://kolaboro.com/data/schemas/kolaboro-data.schema.json#/$defs/<id>\"}, or fetch one schema alone from /api/x/data/schema/<id>.json. Written from the files as published on 5 Nov 2026 and checked against the live files every day (results: /data/contracts.json).",
 "$defs": {
  "a11y": {
   "title": "Accessibility audit",
   "description": "Contract of https://kolaboro.com/data/a11y.json. axe-core audit of every page (WCAG 2.2 AA rules) with counts per rule and page and the run history.",
   "type": "object",
   "properties": {
    "updated": {
     "type": "string"
    },
    "base": {
     "type": "string"
    },
    "tool": {
     "type": "string"
    },
    "viewport": {
     "type": "string"
    },
    "seconds": {
     "type": "number"
    },
    "goal": {
     "type": "string"
    },
    "ok": {
     "type": "boolean"
    },
    "summary": {
     "type": "object",
     "properties": {
      "at": {
       "type": "string"
      },
      "pages": {
       "type": "number"
      },
      "errors": {
       "type": "number"
      },
      "nodes_by_impact": {
       "type": "object",
       "properties": {
        "critical": {
         "type": [
          "null",
          "number"
         ]
        },
        "serious": {
         "type": [
          "null",
          "number"
         ]
        },
        "moderate": {
         "type": [
          "null",
          "number"
         ]
        },
        "minor": {
         "type": [
          "null",
          "number"
         ]
        }
       }
      },
      "pages_clean": {
       "type": "number"
      },
      "pages_with_serious_or_critical": {
       "type": "number"
      }
     }
    },
    "rules": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "id": {
        "type": [
         "null",
         "string"
        ]
       },
       "impact": {
        "type": [
         "null",
         "string"
        ]
       },
       "help": {
        "type": [
         "null",
         "string"
        ]
       },
       "helpUrl": {
        "type": [
         "null",
         "string"
        ]
       },
       "pages": {
        "type": [
         "null",
         "number"
        ]
       },
       "nodes": {
        "type": [
         "null",
         "number"
        ]
       },
       "examples": {
        "type": "array",
        "items": {
         "type": [
          "null",
          "string"
         ]
        }
       }
      },
      "required": [
       "examples",
       "help",
       "helpUrl",
       "id",
       "impact",
       "nodes",
       "pages"
      ]
     }
    },
    "pages": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "url": {
        "type": [
         "null",
         "string"
        ]
       },
       "status": {
        "type": [
         "null",
         "number"
        ]
       },
       "error": {
        "type": "null"
       },
       "violations": {
        "type": "array",
        "items": {
         "type": "object",
         "properties": {
          "id": {
           "type": [
            "null",
            "string"
           ]
          },
          "impact": {
           "type": [
            "null",
            "string"
           ]
          },
          "nodes": {
           "type": [
            "null",
            "number"
           ]
          },
          "targets": {
           "type": "array",
           "items": {
            "type": [
             "null",
             "string"
            ]
           }
          }
         }
        }
       }
      },
      "required": [
       "error",
       "status",
       "url",
       "violations"
      ]
     }
    },
    "history": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "at": {
        "type": [
         "null",
         "string"
        ]
       },
       "pages": {
        "type": [
         "null",
         "number"
        ]
       },
       "errors": {
        "type": [
         "null",
         "number"
        ]
       },
       "nodes_by_impact": {
        "type": "object",
        "properties": {
         "critical": {
          "type": [
           "null",
           "number"
          ]
         },
         "serious": {
          "type": [
           "null",
           "number"
          ]
         },
         "moderate": {
          "type": [
           "null",
           "number"
          ]
         },
         "minor": {
          "type": [
           "null",
           "number"
          ]
         }
        }
       },
       "pages_clean": {
        "type": [
         "null",
         "number"
        ]
       },
       "pages_with_serious_or_critical": {
        "type": [
         "null",
         "number"
        ]
       }
      },
      "required": [
       "at",
       "errors",
       "nodes_by_impact",
       "pages",
       "pages_clean",
       "pages_with_serious_or_critical"
      ]
     }
    }
   },
   "required": [
    "base",
    "goal",
    "history",
    "ok",
    "pages",
    "rules",
    "seconds",
    "summary",
    "tool",
    "updated",
    "viewport"
   ]
  },
  "bali-cases": {
   "title": "Tracked off-plan projects (anonymous)",
   "description": "Contract of https://kolaboro.com/data/bali-cases.json. Every off-plan project Kolaboro tracks, one record per anonymous project id: market, country, stage, price band, promised handover year, the six public checks (permit, deposit protection, progress, plans, track record, no guaranteed returns), how far each is confirmed, claims tested, flags and the change history. Advertised claims, not verified facts. The same data is served filtered by /api/open/projects.",
   "type": "object",
   "properties": {
    "updated": {
     "type": "string"
    },
    "markets": {
     "type": "number"
    },
    "countries": {
     "type": "number"
    },
    "note": {
     "type": "string"
    },
    "cases": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "id": {
        "type": [
         "null",
         "string"
        ]
       },
       "market": {
        "type": [
         "null",
         "string"
        ]
       },
       "country": {
        "type": [
         "null",
         "string"
        ]
       },
       "region": {
        "type": [
         "null",
         "string"
        ]
       },
       "docs": {
        "type": [
         "boolean",
         "null"
        ]
       },
       "plans": {
        "type": [
         "boolean",
         "null"
        ]
       },
       "band": {
        "type": [
         "null",
         "string"
        ]
       },
       "done": {
        "type": [
         "null",
         "number"
        ]
       },
       "title": {
        "type": [
         "null",
         "string"
        ]
       },
       "lease": {
        "type": [
         "null",
         "number"
        ]
       },
       "yield": {
        "type": [
         "null",
         "number"
        ]
       },
       "units": {
        "type": [
         "null",
         "number"
        ]
       },
       "checks": {
        "type": "object",
        "properties": {
         "permit": {
          "type": [
           "null",
           "number"
          ]
         },
         "escrow": {
          "type": [
           "boolean",
           "null"
          ]
         },
         "progress": {
          "type": [
           "null",
           "number",
           "string"
          ]
         },
         "plans": {
          "type": [
           "boolean",
           "null"
          ]
         },
         "record": {
          "type": [
           "boolean",
           "null"
          ]
         },
         "returns_ok": {
          "type": [
           "boolean",
           "null"
          ]
         },
         "researched": {
          "type": "array",
          "items": {
           "type": [
            "null",
            "string"
           ]
          }
         }
        }
       },
       "score": {
        "type": [
         "null",
         "number"
        ]
       },
       "max": {
        "type": [
         "null",
         "number"
        ]
       },
       "flags": {
        "type": "array",
        "items": {
         "type": [
          "null",
          "string"
         ]
        }
       },
       "notes": {
        "type": "array",
        "items": {
         "type": [
          "null",
          "string"
         ]
        }
       },
       "tier": {
        "type": [
         "null",
         "string"
        ]
       },
       "read": {
        "type": [
         "boolean",
         "null"
        ]
       },
       "checked": {
        "type": [
         "null",
         "string"
        ]
       },
       "invited": {
        "type": [
         "null",
         "string"
        ]
       },
       "q": {
        "type": "array",
        "items": {
         "type": [
          "null",
          "string"
         ]
        }
       },
       "verified": {
        "type": "object",
        "properties": {
         "permit": {
          "type": [
           "null",
           "string"
          ]
         },
         "escrow": {
          "type": [
           "null",
           "string"
          ]
         },
         "progress": {
          "type": [
           "null",
           "string"
          ]
         },
         "plans": {
          "type": [
           "null",
           "string"
          ]
         },
         "record": {
          "type": [
           "null",
           "string"
          ]
         },
         "returns_ok": {
          "type": [
           "null",
           "string"
          ]
         }
        }
       },
       "vscore": {
        "type": [
         "null",
         "number"
        ]
       },
       "claims": {
        "type": "object",
        "properties": {
         "verified": {
          "type": [
           "null",
           "number"
          ]
         },
         "unverified": {
          "type": [
           "null",
           "number"
          ]
         },
         "contradicted": {
          "type": [
           "null",
           "number"
          ]
         }
        }
       },
       "stage": {
        "type": [
         "null",
         "string"
        ]
       },
       "delay": {
        "type": [
         "null",
         "number"
        ]
       },
       "overdue": {
        "type": [
         "null",
         "number"
        ]
       },
       "profile": {
        "type": [
         "null",
         "number"
        ]
       },
       "fp": {
        "type": "object",
        "properties": {
         "sha256": {
          "type": [
           "null",
           "string"
          ]
         },
         "date": {
          "type": [
           "null",
           "string"
          ]
         }
        }
       },
       "history": {
        "type": "array",
        "items": {
         "type": "object",
         "properties": {
          "d": {
           "type": [
            "null",
            "string"
           ]
          },
          "f": {
           "type": [
            "null",
            "string"
           ]
          },
          "from": {
           "type": [
            "boolean",
            "null"
           ]
          },
          "to": {
           "type": [
            "boolean",
            "null"
           ]
          }
         }
        }
       },
       "sat": {
        "type": "object",
        "properties": {
         "status": {
          "type": [
           "null",
           "string"
          ]
         },
         "changed_pct": {
          "type": [
           "null",
           "number"
          ]
         },
         "date": {
          "type": [
           "null",
           "string"
          ]
         }
        }
       },
       "register": {
        "type": "object",
        "properties": {
         "register": {
          "type": [
           "null",
           "string"
          ]
         },
         "item": {
          "type": [
           "null",
           "string"
          ]
         },
         "status": {
          "type": [
           "null",
           "string"
          ]
         },
         "checked": {
          "type": [
           "null",
           "string"
          ]
         }
        }
       }
      },
      "required": [
       "band",
       "checked",
       "checks",
       "claims",
       "country",
       "delay",
       "docs",
       "done",
       "flags",
       "id",
       "invited",
       "lease",
       "market",
       "max",
       "notes",
       "overdue",
       "plans",
       "profile",
       "q",
       "read",
       "region",
       "score",
       "stage",
       "tier",
       "title",
       "units",
       "verified",
       "vscore",
       "yield"
      ]
     }
    },
    "db": {
     "type": "object",
     "properties": {
      "updated": {
       "type": "string"
      },
      "projects": {
       "type": "number"
      },
      "markets": {
       "type": "number"
      },
      "countries": {
       "type": "number"
      },
      "sources": {
       "type": "number"
      },
      "data_points": {
       "type": "number"
      },
      "claims": {
       "type": "object",
       "properties": {
        "verified": {
         "type": [
          "null",
          "number"
         ]
        },
        "unverified": {
         "type": [
          "null",
          "number"
         ]
        },
        "contradicted": {
         "type": [
          "null",
          "number"
         ]
        }
       }
      },
      "claims_total": {
       "type": "number"
      },
      "deep_profiles": {
       "type": "number"
      },
      "checks_by_level": {
       "type": "object",
       "properties": {
        "registry": {
         "type": [
          "null",
          "number"
         ]
        },
        "independent": {
         "type": [
          "null",
          "number"
         ]
        },
        "developer": {
         "type": [
          "null",
          "number"
         ]
        },
        "contradicted": {
         "type": [
          "null",
          "number"
         ]
        },
        "none": {
         "type": [
          "null",
          "number"
         ]
        }
       }
      },
      "checks_rated": {
       "type": "number"
      },
      "stages": {
       "type": "object",
       "properties": {
        "off-plan": {
         "type": [
          "null",
          "number"
         ]
        },
        "under construction": {
         "type": [
          "null",
          "number"
         ]
        },
        "completed": {
         "type": [
          "null",
          "number"
         ]
        }
       }
      },
      "all_six_public": {
       "type": "number"
      },
      "with_flags": {
       "type": "number"
      },
      "overdue": {
       "type": "number"
      },
      "overdue_avg_months": {
       "type": "number"
      },
      "delayed": {
       "type": "number"
      },
      "changes_detected": {
       "type": "number"
      },
      "sat_watched": {
       "type": "number"
      },
      "sat_no_change": {
       "type": "number"
      },
      "register_watched": {
       "type": "number"
      }
     }
    },
    "seal": {
     "type": "object",
     "properties": {
      "date": {
       "type": "string"
      },
      "count": {
       "type": "number"
      },
      "root": {
       "type": "string"
      },
      "method": {
       "type": "string"
      },
      "stamped": {
       "type": "boolean"
      }
     }
    },
    "ships": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "d": {
        "type": [
         "null",
         "string"
        ]
       },
       "k": {
        "type": [
         "null",
         "string"
        ]
       },
       "t": {
        "type": [
         "null",
         "string"
        ]
       },
       "u": {
        "type": [
         "null",
         "string"
        ]
       }
      },
      "required": [
       "d",
       "k",
       "t",
       "u"
      ]
     }
    }
   },
   "required": [
    "cases",
    "countries",
    "db",
    "markets",
    "note",
    "seal",
    "ships",
    "updated"
   ]
  },
  "bali-claims": {
   "title": "What developers advertise in Bali",
   "description": "Contract of https://kolaboro.com/data/bali-claims.json. The same aggregate as world-claims for the Bali market alone: title and lease terms, guaranteed-return language, permit claims and numbers, plans and advertised prices.",
   "type": "object",
   "properties": {
    "updated": {
     "type": "string"
    },
    "market": {
     "type": "string"
    },
    "source": {
     "type": "string"
    },
    "projects": {
     "type": "number"
    },
    "title": {
     "type": "object",
     "properties": {
      "leasehold": {
       "type": "number"
      },
      "known": {
       "type": "number"
      }
     }
    },
    "lease": {
     "type": "object",
     "properties": {
      "known": {
       "type": "number"
      },
      "median": {
       "type": "number"
      },
      "min": {
       "type": "number"
      },
      "max": {
       "type": "number"
      },
      "hist": {
       "type": "object",
       "properties": {
        "under 30": {
         "type": [
          "null",
          "number"
         ]
        },
        "30 to 34": {
         "type": [
          "null",
          "number"
         ]
        },
        "35 to 39": {
         "type": [
          "null",
          "number"
         ]
        },
        "40 or more": {
         "type": [
          "null",
          "number"
         ]
        }
       }
      }
     }
    },
    "extension_promised": {
     "type": "object",
     "properties": {
      "yes": {
       "type": "number"
      },
      "known": {
       "type": "number"
      }
     }
    },
    "guaranteed_language": {
     "type": "number"
    },
    "permit_claims": {
     "type": "number"
    },
    "permit_numbers_published": {
     "type": "number"
    },
    "plans_published": {
     "type": "number"
    },
    "price_usd": {
     "type": "object",
     "properties": {
      "known": {
       "type": "number"
      },
      "median": {
       "type": "number"
      },
      "min": {
       "type": "number"
      },
      "max": {
       "type": "number"
      }
     }
    },
    "yield": {
     "type": "object",
     "properties": {
      "known": {
       "type": "number"
      },
      "median": {
       "type": "number"
      },
      "max": {
       "type": "number"
      }
     }
    },
    "completion": {
     "type": "object",
     "properties": {
      "2024": {
       "type": "number"
      },
      "2026": {
       "type": "number"
      },
      "2027": {
       "type": "number"
      },
      "2028": {
       "type": "number"
      },
      "2029": {
       "type": "number"
      },
      "unknown": {
       "type": "number"
      }
     }
    },
    "runs": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "date": {
        "type": [
         "null",
         "string"
        ]
       },
       "mode": {
        "type": [
         "null",
         "string"
        ]
       },
       "pages_ok": {
        "type": [
         "null",
         "number"
        ]
       },
       "pages_failed": {
        "type": [
         "null",
         "number"
        ]
       },
       "changes": {
        "type": [
         "null",
         "number"
        ]
       }
      },
      "required": [
       "changes",
       "date",
       "mode",
       "pages_failed",
       "pages_ok"
      ]
     }
    }
   },
   "required": [
    "completion",
    "extension_promised",
    "guaranteed_language",
    "lease",
    "market",
    "permit_claims",
    "permit_numbers_published",
    "plans_published",
    "price_usd",
    "projects",
    "runs",
    "source",
    "title",
    "updated",
    "yield"
   ]
  },
  "benchmark-file": {
   "title": "AI desk review benchmark, one file",
   "description": "Contract of each JSON file under https://kolaboro.com/data/benchmark/. Results of the desk review benchmark on fixed fictional cases, one file per model (Haiku, Sonnet), each case answer signed with the Kolaboro Ed25519 key.",
   "type": "object",
   "properties": {
    "benchmark": {
     "type": "string"
    },
    "model": {
     "type": "string"
    },
    "cases_version": {
     "type": "number"
    },
    "github_run": {
     "type": "string"
    },
    "run_url": {
     "type": "string"
    },
    "started": {
     "type": "string"
    },
    "seconds": {
     "type": "number"
    },
    "cases_total": {
     "type": "number"
    },
    "cases_answered": {
     "type": "number"
    },
    "cases_passed": {
     "type": "number"
    },
    "checks_passed": {
     "type": "number"
    },
    "checks_total": {
     "type": "number"
    },
    "usd_estimated": {
     "type": "number"
    },
    "note": {
     "type": "string"
    },
    "cases": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "case": {
        "type": [
         "null",
         "string"
        ]
       },
       "body": {
        "type": [
         "null",
         "string"
        ]
       },
       "signature": {
        "type": [
         "null",
         "string"
        ]
       },
       "key_id": {
        "type": [
         "null",
         "string"
        ]
       }
      }
     }
    }
   },
   "required": [
    "benchmark",
    "cases",
    "cases_answered",
    "cases_passed",
    "cases_total",
    "cases_version",
    "checks_passed",
    "checks_total",
    "github_run",
    "model",
    "note",
    "run_url",
    "seconds",
    "started",
    "usd_estimated"
   ]
  },
  "builds": {
   "title": "Reproducible worker builds",
   "description": "Contract of https://kolaboro.com/data/builds.json. Deterministic bundle of the site worker for each worker source tree that went live, built twice in clean folders; reproduced says whether both builds were identical.",
   "type": "object",
   "properties": {
    "version": {
     "type": "string"
    },
    "about": {
     "type": "string"
    },
    "how": {
     "type": "object",
     "properties": {
      "esbuild": {
       "type": "string"
      },
      "command": {
       "type": "string"
      },
      "cwd": {
       "type": "string"
      },
      "lookup": {
       "type": "string"
      }
     }
    },
    "limits": {
     "type": "array",
     "items": {
      "type": "string"
     }
    },
    "updated": {
     "type": "string"
    },
    "builds": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "worker_tree": {
        "type": [
         "null",
         "string"
        ]
       },
       "first_commit": {
        "type": [
         "null",
         "string"
        ]
       },
       "commit_time": {
        "type": [
         "null",
         "string"
        ]
       },
       "built_at": {
        "type": [
         "null",
         "string"
        ]
       },
       "sha256": {
        "type": [
         "null",
         "string"
        ]
       },
       "bytes": {
        "type": [
         "null",
         "number"
        ]
       },
       "reproduced": {
        "type": [
         "boolean",
         "null"
        ]
       },
       "node": {
        "type": [
         "null",
         "string"
        ]
       },
       "run_id": {
        "type": [
         "null",
         "string"
        ]
       }
      },
      "required": [
       "built_at",
       "bytes",
       "commit_time",
       "first_commit",
       "node",
       "reproduced",
       "run_id",
       "sha256",
       "worker_tree"
      ]
     }
    }
   },
   "required": [
    "about",
    "builds",
    "how",
    "limits",
    "updated",
    "version"
   ]
  },
  "changes": {
   "title": "Change heatmap",
   "description": "Contract of https://kolaboro.com/data/changes.json. Day by day, the last published bali-cases.json of each day compared with the previous day's copy: new projects, page edits (page fingerprint changed), price band moves, date moves and register changes, counted per market over rolling windows. A project counts once per kind and market in a window.",
   "type": "object",
   "properties": {
    "generated": {
     "type": "string"
    },
    "history_starts": {
     "type": "string"
    },
    "kinds": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "key": {
        "type": [
         "null",
         "string"
        ]
       },
       "label": {
        "type": [
         "null",
         "string"
        ]
       },
       "means": {
        "type": [
         "null",
         "string"
        ]
       }
      },
      "required": [
       "key",
       "label",
       "means"
      ]
     }
    },
    "method": {
     "type": "string"
    },
    "days_compared": {
     "type": "array",
     "items": {
      "type": "string"
     }
    },
    "windows": {
     "type": "object",
     "properties": {
      "7": {
       "type": "object",
       "properties": {
        "days": {
         "type": [
          "null",
          "number"
         ]
        },
        "from": {
         "type": [
          "null",
          "string"
         ]
        },
        "to": {
         "type": [
          "null",
          "string"
         ]
        },
        "covers_days": {
         "type": [
          "null",
          "number"
         ]
        },
        "totals": {
         "type": "object",
         "properties": {
          "new": {
           "type": [
            "null",
            "number"
           ]
          },
          "page": {
           "type": [
            "null",
            "number"
           ]
          },
          "price": {
           "type": [
            "null",
            "number"
           ]
          },
          "date": {
           "type": [
            "null",
            "number"
           ]
          },
          "register": {
           "type": [
            "null",
            "number"
           ]
          }
         }
        },
        "markets": {
         "type": "array",
         "items": {
          "type": "object",
          "properties": {
           "market": {
            "type": [
             "null",
             "string"
            ]
           },
           "total": {
            "type": [
             "null",
             "number"
            ]
           },
           "counts": {
            "type": "object",
            "properties": {
             "new": {
              "type": [
               "null",
               "number"
              ]
             },
             "page": {
              "type": [
               "null",
               "number"
              ]
             },
             "price": {
              "type": [
               "null",
               "number"
              ]
             },
             "date": {
              "type": [
               "null",
               "number"
              ]
             },
             "register": {
              "type": [
               "null",
               "number"
              ]
             }
            }
           },
           "ids": {
            "type": "object",
            "properties": {
             "new": {
              "type": "array",
              "items": {
               "type": [
                "null",
                "string"
               ]
              }
             },
             "page": {
              "type": "array",
              "items": {
               "type": [
                "null",
                "string"
               ]
              }
             },
             "price": {
              "type": "array",
              "items": {
               "type": [
                "null",
                "string"
               ]
              }
             },
             "date": {
              "type": "array",
              "items": {
               "type": [
                "null",
                "string"
               ]
              }
             },
             "register": {
              "type": "array",
              "items": {
               "type": [
                "null",
                "string"
               ]
              }
             }
            }
           }
          }
         }
        },
        "max_cell": {
         "type": [
          "null",
          "number"
         ]
        }
       }
      },
      "30": {
       "type": "object",
       "properties": {
        "days": {
         "type": [
          "null",
          "number"
         ]
        },
        "from": {
         "type": [
          "null",
          "string"
         ]
        },
        "to": {
         "type": [
          "null",
          "string"
         ]
        },
        "covers_days": {
         "type": [
          "null",
          "number"
         ]
        },
        "totals": {
         "type": "object",
         "properties": {
          "new": {
           "type": [
            "null",
            "number"
           ]
          },
          "page": {
           "type": [
            "null",
            "number"
           ]
          },
          "price": {
           "type": [
            "null",
            "number"
           ]
          },
          "date": {
           "type": [
            "null",
            "number"
           ]
          },
          "register": {
           "type": [
            "null",
            "number"
           ]
          }
         }
        },
        "markets": {
         "type": "array",
         "items": {
          "type": "object",
          "properties": {
           "market": {
            "type": [
             "null",
             "string"
            ]
           },
           "total": {
            "type": [
             "null",
             "number"
            ]
           },
           "counts": {
            "type": "object",
            "properties": {
             "new": {
              "type": [
               "null",
               "number"
              ]
             },
             "page": {
              "type": [
               "null",
               "number"
              ]
             },
             "price": {
              "type": [
               "null",
               "number"
              ]
             },
             "date": {
              "type": [
               "null",
               "number"
              ]
             },
             "register": {
              "type": [
               "null",
               "number"
              ]
             }
            }
           },
           "ids": {
            "type": "object",
            "properties": {
             "new": {
              "type": "array",
              "items": {
               "type": [
                "null",
                "string"
               ]
              }
             },
             "page": {
              "type": "array",
              "items": {
               "type": [
                "null",
                "string"
               ]
              }
             },
             "price": {
              "type": "array",
              "items": {
               "type": [
                "null",
                "string"
               ]
              }
             },
             "date": {
              "type": "array",
              "items": {
               "type": [
                "null",
                "string"
               ]
              }
             },
             "register": {
              "type": "array",
              "items": {
               "type": [
                "null",
                "string"
               ]
              }
             }
            }
           }
          }
         }
        },
        "max_cell": {
         "type": [
          "null",
          "number"
         ]
        }
       }
      }
     }
    },
    "licence": {
     "type": "string"
    }
   },
   "required": [
    "days_compared",
    "generated",
    "history_starts",
    "kinds",
    "licence",
    "method",
    "windows"
   ]
  },
  "chaos": {
   "title": "Chaos drills",
   "description": "Contract of https://kolaboro.com/data/chaos.json. Weekly fault-injection drills of the desk review (for example the primary AI reader down): what was forced, what was expected, what happened, and what is not covered.",
   "type": "object",
   "properties": {
    "updated": {
     "type": "string"
    },
    "target": {
     "type": "string"
    },
    "schedule": {
     "type": "string"
    },
    "not_covered": {
     "type": "array",
     "items": {
      "type": "string"
     }
    },
    "runs": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "at": {
        "type": [
         "null",
         "string"
        ]
       },
       "seconds": {
        "type": [
         "null",
         "number"
        ]
       },
       "ran": {
        "type": [
         "null",
         "number"
        ]
       },
       "passed": {
        "type": [
         "null",
         "number"
        ]
       },
       "scenarios": {
        "type": "array",
        "items": {
         "type": "object",
         "properties": {
          "id": {
           "type": [
            "null",
            "string"
           ]
          },
          "title": {
           "type": [
            "null",
            "string"
           ]
          },
          "kind": {
           "type": [
            "null",
            "string"
           ]
          },
          "forced": {
           "type": [
            "null",
            "string"
           ]
          },
          "expected": {
           "type": [
            "null",
            "string"
           ]
          },
          "observed_text": {
           "type": [
            "null",
            "string"
           ]
          },
          "ms": {
           "type": [
            "null",
            "number"
           ]
          },
          "wall_ms": {
           "type": [
            "null",
            "number"
           ]
          },
          "pass": {
           "type": [
            "boolean",
            "null"
           ]
          }
         }
        }
       }
      },
      "required": [
       "at",
       "passed",
       "ran",
       "scenarios",
       "seconds"
      ]
     }
    }
   },
   "required": [
    "not_covered",
    "runs",
    "schedule",
    "target",
    "updated"
   ]
  },
  "coast-tiles-file": {
   "title": "Coastline outline tiles, one file",
   "description": "Contract of each JSON file under https://kolaboro.com/data/coast/. Natural Earth 1:10m land outline (public domain, via world-atlas 2.0.2) cut into 10 degree tiles, quantised and delta-encoded, used by the hazards check only when no OpenStreetMap server answers. Every tile exists; open-ocean tiles are empty.",
   "type": "object",
   "properties": {
    "s": {
     "type": "array",
     "items": {
      "type": "number"
     }
    },
    "t": {
     "type": "array",
     "items": {
      "type": "number"
     }
    },
    "tiles": {
     "type": "object",
     "additionalProperties": {
      "type": "array",
      "items": {
       "type": "array",
       "items": {
        "type": [
         "null",
         "number"
        ]
       }
      }
     }
    }
   },
   "required": [
    "s",
    "t",
    "tiles"
   ]
  },
  "company-graph": {
   "title": "Company and director graph (UK)",
   "description": "Contract of https://kolaboro.com/data/company-graph.json. Anonymised company and director graph for tracked projects whose developer is a UK company found on Companies House by exact name. Counts and anonymised nodes only.",
   "type": "object",
   "properties": {
    "version": {
     "type": "string"
    },
    "updated": {
     "type": "string"
    },
    "generated_at": {
     "type": "string"
    },
    "register": {
     "type": "object",
     "properties": {
      "name": {
       "type": "string"
      },
      "url": {
       "type": "string"
      },
      "access": {
       "type": "string"
      },
      "user_agent": {
       "type": "string"
      },
      "pause_seconds": {
       "type": "number"
      }
     }
    },
    "coverage": {
     "type": "object",
     "properties": {
      "uk_projects": {
       "type": "number"
      },
      "projects_naming_a_legal_entity": {
       "type": "number"
      },
      "legal_names": {
       "type": "number"
      },
      "resolved": {
       "type": "number"
      },
      "ambiguous": {
       "type": "number"
      },
      "not_found": {
       "type": "number"
      },
      "directors": {
       "type": "number"
      },
      "appointments_read": {
       "type": "number"
      },
      "officers_truncated": {
       "type": "number"
      },
      "network_companies": {
       "type": "number"
      },
      "projects_with_graph": {
       "type": "number"
      },
      "requests": {
       "type": "number"
      },
      "retries": {
       "type": "number"
      }
     }
    },
    "complete": {
     "type": "boolean"
    },
    "archive": {
     "type": "object",
     "properties": {
      "lines": {
       "type": "number"
      },
      "root": {
       "type": "string"
      },
      "line_format": {
       "type": "string"
      }
     }
    },
    "method": {
     "type": "array",
     "items": {
      "type": "string"
     }
    },
    "not_covered": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "jurisdiction": {
        "type": [
         "null",
         "string"
        ]
       },
       "reason": {
        "type": [
         "null",
         "string"
        ]
       }
      },
      "required": [
       "jurisdiction",
       "reason"
      ]
     }
    },
    "projects": {
     "type": "object",
     "additionalProperties": {
      "type": "object",
      "properties": {
       "market": {
        "type": [
         "null",
         "string"
        ]
       },
       "named_companies": {
        "type": [
         "null",
         "number"
        ]
       },
       "resolved": {
        "type": [
         "null",
         "number"
        ]
       },
       "unresolved_reasons": {
        "type": "array",
        "items": {
         "type": [
          "null",
          "string"
         ]
        }
       },
       "nodes": {
        "type": "array",
        "items": {
         "type": "object",
         "properties": {
          "id": {
           "type": [
            "null",
            "string"
           ]
          },
          "type": {
           "type": [
            "null",
            "string"
           ]
          },
          "label": {
           "type": [
            "null",
            "string"
           ]
          },
          "role": {
           "type": [
            "null",
            "string"
           ]
          },
          "status": {
           "type": [
            "null",
            "string"
           ]
          },
          "inc_year": {
           "type": [
            "null",
            "number"
           ]
          },
          "short_lived": {
           "type": [
            "boolean",
            "null"
           ]
          },
          "corporate": {
           "type": [
            "boolean",
            "null"
           ]
          },
          "appointments_total": {
           "type": [
            "null",
            "number"
           ]
          },
          "appointments_read": {
           "type": [
            "null",
            "number"
           ]
          },
          "truncated": {
           "type": [
            "boolean",
            "null"
           ]
          },
          "count": {
           "type": [
            "null",
            "number"
           ]
          }
         }
        }
       },
       "edges": {
        "type": "array",
        "items": {
         "type": "object",
         "properties": {
          "s": {
           "type": [
            "null",
            "string"
           ]
          },
          "t": {
           "type": [
            "null",
            "string"
           ]
          },
          "type": {
           "type": [
            "null",
            "string"
           ]
          }
         }
        }
       },
       "network": {
        "type": "object",
        "properties": {
         "active": {
          "type": [
           "null",
           "number"
          ]
         },
         "dissolved": {
          "type": [
           "null",
           "number"
          ]
         },
         "dissolved_within_2y": {
          "type": [
           "null",
           "number"
          ]
         },
         "dissolved_last_5y": {
          "type": [
           "null",
           "number"
          ]
         },
         "insolvency": {
          "type": [
           "null",
           "number"
          ]
         },
         "strike-off proposed": {
          "type": [
           "null",
           "number"
          ]
         },
         "other": {
          "type": [
           "null",
           "number"
          ]
         }
        }
       },
       "directors": {
        "type": [
         "null",
         "number"
        ]
       },
       "summary": {
        "type": "array",
        "items": {
         "type": [
          "null",
          "string"
         ]
        }
       },
       "partial": {
        "type": [
         "boolean",
         "null"
        ]
       },
       "checked": {
        "type": [
         "boolean",
         "null"
        ]
       }
      },
      "required": [
       "checked",
       "directors",
       "edges",
       "market",
       "named_companies",
       "network",
       "nodes",
       "partial",
       "resolved",
       "summary",
       "unresolved_reasons"
      ]
     },
     "propertyNames": {
      "pattern": "^[A-Z]{2,6}-\\d{2,4}$"
     }
    }
   },
   "required": [
    "archive",
    "complete",
    "coverage",
    "generated_at",
    "method",
    "not_covered",
    "projects",
    "register",
    "updated",
    "version"
   ]
  },
  "company-graph-global": {
   "title": "Global company graph (GLEIF)",
   "description": "Contract of https://kolaboro.com/data/company-graph-global.json. For each tracked project: whether the companies named as developer have a Legal Entity Identifier, their parents and countries, as counts and booleans only. Source GLEIF (CC0).",
   "type": "object",
   "properties": {
    "updated": {
     "type": "string"
    },
    "source": {
     "type": "object",
     "properties": {
      "name": {
       "type": "string"
      },
      "api": {
       "type": "string"
      },
      "licence": {
       "type": "string"
      },
      "golden_copy_note": {
       "type": "string"
      },
      "queries": {
       "type": "array",
       "items": {
        "type": [
         "null",
         "string"
        ]
       }
      }
     }
    },
    "method": {
     "type": "array",
     "items": {
      "type": "string"
     }
    },
    "privacy": {
     "type": "string"
    },
    "coverage": {
     "type": "object",
     "properties": {
      "projects": {
       "type": "number"
      },
      "projects_with_candidate_names": {
       "type": "number"
      },
      "candidate_names": {
       "type": "number"
      },
      "matched_names": {
       "type": "number"
      },
      "ambiguous_names": {
       "type": "number"
      },
      "unmatched_names": {
       "type": "number"
      },
      "projects_with_lei": {
       "type": "number"
      },
      "requests": {
       "type": "number"
      },
      "stopped_early": {
       "type": "boolean"
      }
     }
    },
    "totals": {
     "type": "object",
     "properties": {
      "projects": {
       "type": "number"
      },
      "checked": {
       "type": "number"
      },
      "projects_with_lei": {
       "type": "number"
      },
      "projects_foreign_parent": {
       "type": "number"
      },
      "projects_lei_not_issued": {
       "type": "number"
      },
      "developers": {
       "type": "number"
      },
      "developers_with_lei": {
       "type": "number"
      },
      "developers_foreign_parent": {
       "type": "number"
      },
      "developers_lei_not_issued": {
       "type": "number"
      },
      "lei_status": {
       "type": "object",
       "properties": {
        "issued": {
         "type": [
          "null",
          "number"
         ]
        },
        "lapsed": {
         "type": [
          "null",
          "number"
         ]
        },
        "retired": {
         "type": [
          "null",
          "number"
         ]
        }
       }
      },
      "parent_exceptions": {
       "type": "object",
       "properties": {
        "NON_CONSOLIDATING": {
         "type": [
          "null",
          "number"
         ]
        },
        "NO_KNOWN_PERSON": {
         "type": [
          "null",
          "number"
         ]
        },
        "NATURAL_PERSONS": {
         "type": [
          "null",
          "number"
         ]
        },
        "NON_PUBLIC": {
         "type": [
          "null",
          "number"
         ]
        },
        "NO_LEI": {
         "type": [
          "null",
          "number"
         ]
        }
       }
      }
     }
    },
    "shares": {
     "type": "object",
     "properties": {
      "projects_with_lei": {
       "type": "number"
      },
      "developers_with_lei": {
       "type": "number"
      },
      "lei_developers_foreign_parent": {
       "type": "number"
      },
      "lei_developers_not_issued": {
       "type": "number"
      }
     }
    },
    "markets": {
     "type": "object",
     "additionalProperties": {
      "type": "object",
      "properties": {
       "country_iso": {
        "type": [
         "null",
         "string"
        ]
       },
       "projects": {
        "type": [
         "null",
         "number"
        ]
       },
       "projects_with_lei": {
        "type": [
         "null",
         "number"
        ]
       },
       "projects_lei_not_issued": {
        "type": [
         "null",
         "number"
        ]
       },
       "projects_foreign_parent": {
        "type": [
         "null",
         "number"
        ]
       },
       "developers": {
        "type": [
         "null",
         "number"
        ]
       },
       "developers_with_lei": {
        "type": [
         "null",
         "number"
        ]
       },
       "developers_foreign_parent": {
        "type": [
         "null",
         "number"
        ]
       },
       "developers_lei_not_issued": {
        "type": [
         "null",
         "number"
        ]
       },
       "lei_status": {
        "type": "object",
        "properties": {
         "issued": {
          "type": [
           "null",
           "number"
          ]
         },
         "lapsed": {
          "type": [
           "null",
           "number"
          ]
         },
         "retired": {
          "type": [
           "null",
           "number"
          ]
         }
        }
       },
       "parent_countries": {
        "type": "object",
        "properties": {}
       },
       "parent_exceptions": {
        "type": "object",
        "properties": {
         "NON_CONSOLIDATING": {
          "type": [
           "null",
           "number"
          ]
         },
         "NO_KNOWN_PERSON": {
          "type": [
           "null",
           "number"
          ]
         },
         "NATURAL_PERSONS": {
          "type": [
           "null",
           "number"
          ]
         },
         "NON_PUBLIC": {
          "type": [
           "null",
           "number"
          ]
         },
         "NO_LEI": {
          "type": [
           "null",
           "number"
          ]
         }
        }
       },
       "checked": {
        "type": [
         "null",
         "number"
        ]
       },
       "share_projects_with_lei": {
        "type": [
         "null",
         "number"
        ]
       },
       "share_developers_with_lei": {
        "type": [
         "null",
         "number"
        ]
       },
       "share_lei_developers_foreign_parent": {
        "type": [
         "null",
         "number"
        ]
       },
       "share_lei_developers_not_issued": {
        "type": [
         "null",
         "number"
        ]
       }
      },
      "required": [
       "checked",
       "country_iso",
       "developers",
       "developers_foreign_parent",
       "developers_lei_not_issued",
       "developers_with_lei",
       "lei_status",
       "parent_countries",
       "parent_exceptions",
       "projects",
       "projects_foreign_parent",
       "projects_lei_not_issued",
       "projects_with_lei",
       "share_developers_with_lei",
       "share_lei_developers_foreign_parent",
       "share_lei_developers_not_issued",
       "share_projects_with_lei"
      ]
     }
    },
    "projects": {
     "type": "object",
     "additionalProperties": {
      "type": "object",
      "properties": {
       "market": {
        "type": [
         "null",
         "string"
        ]
       },
       "checked": {
        "type": [
         "boolean",
         "null"
        ]
       },
       "names_checked": {
        "type": [
         "null",
         "number"
        ]
       },
       "lei_entities": {
        "type": [
         "null",
         "number"
        ]
       },
       "lei_not_issued": {
        "type": [
         "null",
         "number"
        ]
       },
       "statuses": {
        "type": "array",
        "items": {
         "type": [
          "null",
          "string"
         ]
        }
       },
       "foreign_parent": {
        "type": [
         "boolean",
         "null"
        ]
       },
       "parent_reported": {
        "type": [
         "boolean",
         "null"
        ]
       },
       "parent_exception_only": {
        "type": [
         "boolean",
         "null"
        ]
       },
       "oldest_lei_year": {
        "type": [
         "null",
         "number"
        ]
       },
       "note": {
        "type": [
         "null",
         "string"
        ]
       }
      },
      "required": [
       "checked",
       "market"
      ]
     }
    },
    "archive": {
     "type": "object",
     "properties": {
      "responses": {
       "type": "number"
      },
      "root_sha256": {
       "type": "string"
      },
      "note": {
       "type": "string"
      }
     }
    }
   },
   "required": [
    "archive",
    "coverage",
    "markets",
    "method",
    "privacy",
    "projects",
    "shares",
    "source",
    "totals",
    "updated"
   ]
  },
  "delay-index": {
   "title": "Delivery delay index",
   "description": "Contract of https://kolaboro.com/data/delay-index.json. How far tracked off-plan projects are behind the first handover date on record, by market, with rules, caveats and monthly history.",
   "type": "object",
   "properties": {
    "version": {
     "type": "string"
    },
    "generated": {
     "type": "string"
    },
    "as_of_month": {
     "type": "string"
    },
    "history_starts": {
     "type": "string"
    },
    "licence": {
     "type": "string"
    },
    "what": {
     "type": "string"
    },
    "rules": {
     "type": "object",
     "properties": {
      "min_sample": {
       "type": "number"
      },
      "quantile": {
       "type": "string"
      },
      "month_now": {
       "type": "string"
      },
      "current_handover": {
       "type": "string"
      },
      "first_handover": {
       "type": "string"
      },
      "months_late": {
       "type": "string"
      },
      "share_past_first": {
       "type": "string"
      },
      "share_past_current": {
       "type": "string"
      }
     }
    },
    "caveats": {
     "type": "array",
     "items": {
      "type": "string"
     }
    },
    "all_markets": {
     "type": "object",
     "properties": {
      "market": {
       "type": "string"
      },
      "tracked": {
       "type": "number"
      },
      "with_date": {
       "type": "number"
      },
      "past_first": {
       "type": "number"
      },
      "past_current": {
       "type": "number"
      },
      "completed": {
       "type": "number"
      },
      "moved": {
       "type": "number"
      },
      "no_date": {
       "type": "number"
      },
      "inconsistent": {
       "type": "number"
      },
      "share_past_first": {
       "type": "number"
      },
      "share_past_current": {
       "type": "number"
      },
      "median_late": {
       "type": "number"
      },
      "p90_late": {
       "type": "number"
      },
      "late_months": {
       "type": "array",
       "items": {
        "type": [
         "null",
         "number"
        ]
       }
      }
     }
    },
    "markets": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "market": {
        "type": [
         "null",
         "string"
        ]
       },
       "tracked": {
        "type": [
         "null",
         "number"
        ]
       },
       "with_date": {
        "type": [
         "null",
         "number"
        ]
       },
       "past_first": {
        "type": [
         "null",
         "number"
        ]
       },
       "past_current": {
        "type": [
         "null",
         "number"
        ]
       },
       "completed": {
        "type": [
         "null",
         "number"
        ]
       },
       "moved": {
        "type": [
         "null",
         "number"
        ]
       },
       "no_date": {
        "type": [
         "null",
         "number"
        ]
       },
       "inconsistent": {
        "type": [
         "null",
         "number"
        ]
       },
       "share_past_first": {
        "type": [
         "null",
         "number"
        ]
       },
       "share_past_current": {
        "type": [
         "null",
         "number"
        ]
       },
       "median_late": {
        "type": [
         "null",
         "number"
        ]
       },
       "p90_late": {
        "type": [
         "null",
         "number"
        ]
       },
       "late_months": {
        "type": "array",
        "items": {
         "type": [
          "null",
          "number"
         ]
        }
       }
      },
      "required": [
       "completed",
       "inconsistent",
       "late_months",
       "market",
       "median_late",
       "moved",
       "no_date",
       "p90_late",
       "past_current",
       "past_first",
       "share_past_current",
       "share_past_first",
       "tracked",
       "with_date"
      ]
     }
    },
    "history": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "month": {
        "type": [
         "null",
         "string"
        ]
       },
       "taken": {
        "type": [
         "null",
         "string"
        ]
       },
       "input_sha256": {
        "type": [
         "null",
         "string"
        ]
       },
       "all": {
        "type": "object",
        "properties": {
         "tracked": {
          "type": [
           "null",
           "number"
          ]
         },
         "with_date": {
          "type": [
           "null",
           "number"
          ]
         },
         "past_first": {
          "type": [
           "null",
           "number"
          ]
         },
         "past_current": {
          "type": [
           "null",
           "number"
          ]
         },
         "share_past_first": {
          "type": [
           "null",
           "number"
          ]
         },
         "share_past_current": {
          "type": [
           "null",
           "number"
          ]
         },
         "median_late": {
          "type": [
           "null",
           "number"
          ]
         },
         "p90_late": {
          "type": [
           "null",
           "number"
          ]
         }
        }
       },
       "markets": {
        "type": "object",
        "additionalProperties": {
         "type": "array",
         "items": {
          "type": [
           "null",
           "number"
          ]
         }
        }
       }
      },
      "required": [
       "all",
       "input_sha256",
       "markets",
       "month",
       "taken"
      ]
     }
    },
    "inputs": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "file": {
        "type": [
         "null",
         "string"
        ]
       },
       "sha256": {
        "type": [
         "null",
         "string"
        ]
       },
       "updated": {
        "type": [
         "null",
         "string"
        ]
       },
       "projects": {
        "type": [
         "null",
         "number"
        ]
       },
       "generated": {
        "type": [
         "null",
         "string"
        ]
       }
      },
      "required": [
       "file",
       "sha256"
      ]
     }
    }
   },
   "required": [
    "all_markets",
    "as_of_month",
    "caveats",
    "generated",
    "history",
    "history_starts",
    "inputs",
    "licence",
    "markets",
    "rules",
    "version",
    "what"
   ]
  },
  "deploys": {
   "title": "Deploy guard record",
   "description": "Contract of https://kolaboro.com/data/deploys.json. Each deploy of the site: smoke checks after it went live, and any automatic rollback.",
   "type": "object",
   "properties": {
    "deploys": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "at": {
        "type": [
         "null",
         "string"
        ]
       },
       "commit": {
        "type": [
         "null",
         "string"
        ]
       },
       "checks_passed": {
        "type": [
         "null",
         "number"
        ]
       },
       "checks_total": {
        "type": [
         "null",
         "number"
        ]
       },
       "failed": {
        "type": "array",
        "items": {
         "type": [
          "null",
          "string"
         ]
        }
       },
       "run": {
        "type": [
         "null",
         "string"
        ]
       },
       "result": {
        "type": [
         "null",
         "string"
        ]
       },
       "wait_s": {
        "type": [
         "null",
         "number"
        ]
       },
       "changes": {
        "type": "array",
        "items": {
         "type": [
          "null",
          "string"
         ]
        }
       }
      },
      "required": [
       "at",
       "checks_passed",
       "checks_total",
       "commit",
       "failed",
       "result",
       "run",
       "wait_s"
      ]
     }
    },
    "drills": {
     "type": "array"
    },
    "about": {
     "type": "string"
    },
    "canary": {
     "type": "string"
    },
    "rollback_mode": {
     "type": "string"
    },
    "latest_checks": {
     "type": "object",
     "properties": {
      "at": {
       "type": "string"
      },
      "commit": {
       "type": "string"
      },
      "checks": {
       "type": "array",
       "items": {
        "type": "object",
        "properties": {
         "name": {
          "type": [
           "null",
           "string"
          ]
         },
         "ok": {
          "type": [
           "boolean",
           "null"
          ]
         },
         "detail": {
          "type": [
           "null",
           "string"
          ]
         }
        }
       }
      }
     }
    },
    "last_checked": {
     "type": "string"
    },
    "last_good": {
     "type": "string"
    },
    "updated": {
     "type": "string"
    }
   },
   "required": [
    "about",
    "canary",
    "deploys",
    "drills",
    "last_checked",
    "last_good",
    "latest_checks",
    "rollback_mode",
    "updated"
   ]
  },
  "digest": {
   "title": "Weekly market digest",
   "description": "Contract of https://kolaboro.com/data/digest.json. Per ISO week: new projects, changes and alerts by market, built from the public bali-cases, promises, register-checks and stalled-sites files. An AI model may draft only the intro paragraph, and code checks every number in it.",
   "type": "object",
   "properties": {
    "version": {
     "type": "string"
    },
    "generated": {
     "type": "string"
    },
    "history_starts": {
     "type": "string"
    },
    "latest": {
     "type": "string"
    },
    "licence": {
     "type": "string"
    },
    "sources": {
     "type": "array",
     "items": {
      "type": "string"
     }
    },
    "weeks": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "id": {
        "type": [
         "null",
         "string"
        ]
       },
       "from": {
        "type": [
         "null",
         "string"
        ]
       },
       "to": {
        "type": [
         "null",
         "string"
        ]
       },
       "week_end": {
        "type": [
         "null",
         "string"
        ]
       },
       "partial": {
        "type": [
         "boolean",
         "null"
        ]
       },
       "generated": {
        "type": [
         "null",
         "string"
        ]
       },
       "sections": {
        "type": "object",
        "properties": {
         "new": {
          "type": "object",
          "properties": {
           "total": {
            "type": [
             "null",
             "number"
            ]
           },
           "by_market": {
            "type": "array",
            "items": {
             "type": "object",
             "properties": {
              "market": {
               "type": [
                "null",
                "string"
               ]
              },
              "n": {
               "type": [
                "null",
                "number"
               ]
              },
              "ids": {
               "type": "array",
               "items": {
                "type": [
                 "null",
                 "string"
                ]
               }
              }
             }
            }
           },
           "removed": {
            "type": [
             "null",
             "number"
            ]
           },
           "projects_end": {
            "type": [
             "null",
             "number"
            ]
           },
           "markets_end": {
            "type": [
             "null",
             "number"
            ]
           }
          }
         },
         "promises": {
          "type": "object",
          "properties": {
           "moved": {
            "type": "object",
            "properties": {
             "projects": {
              "type": [
               "null",
               "number"
              ]
             },
             "by_market": {
              "type": "array",
              "items": {
               "type": "object",
               "properties": {
                "market": {
                 "type": [
                  "null",
                  "string"
                 ]
                },
                "n": {
                 "type": [
                  "null",
                  "number"
                 ]
                },
                "ids": {
                 "type": "array",
                 "items": {
                  "type": [
                   "null",
                   "string"
                  ]
                 }
                }
               }
              }
             },
             "detail": {
              "anyOf": [
               {
                "type": "object",
                "properties": {}
               },
               {
                "type": "object",
                "additionalProperties": {
                 "type": "array",
                 "items": {
                  "type": [
                   "null",
                   "string"
                  ]
                 }
                },
                "propertyNames": {
                 "pattern": "^[A-Z]{2,6}-\\d{2,4}$"
                }
               }
              ]
             }
            }
           },
           "broken": {
            "type": "object",
            "properties": {
             "projects": {
              "type": [
               "null",
               "number"
              ]
             },
             "by_market": {
              "type": "array"
             },
             "detail": {
              "type": "object",
              "properties": {}
             }
            }
           },
           "kept": {
            "type": "object",
            "properties": {
             "projects": {
              "type": [
               "null",
               "number"
              ]
             },
             "by_market": {
              "type": "array"
             },
             "detail": {
              "type": "object",
              "properties": {}
             }
            }
           },
           "note": {
            "type": [
             "null",
             "string"
            ]
           },
           "available": {
            "type": [
             "boolean",
             "null"
            ]
           }
          }
         },
         "slipped": {
          "type": "object",
          "properties": {
           "projects": {
            "type": [
             "null",
             "number"
            ]
           },
           "by_market": {
            "type": "array"
           },
           "detail": {
            "type": "object",
            "properties": {}
           }
          }
         },
         "pages": {
          "type": "object",
          "properties": {
           "text_changed": {
            "type": "object",
            "properties": {
             "projects": {
              "type": [
               "null",
               "number"
              ]
             },
             "by_market": {
              "type": "array",
              "items": {
               "type": "object",
               "properties": {
                "market": {
                 "type": [
                  "null",
                  "string"
                 ]
                },
                "n": {
                 "type": [
                  "null",
                  "number"
                 ]
                },
                "ids": {
                 "type": "array",
                 "items": {
                  "type": [
                   "null",
                   "string"
                  ]
                 }
                }
               }
              }
             }
            }
           },
           "note": {
            "type": [
             "null",
             "string"
            ]
           },
           "fields": {
            "type": "array",
            "items": {
             "type": "object",
             "properties": {
              "change": {
               "type": [
                "null",
                "string"
               ]
              },
              "projects": {
               "type": [
                "null",
                "number"
               ]
              },
              "by_market": {
               "type": "array",
               "items": {
                "type": "object",
                "properties": {
                 "market": {
                  "type": [
                   "null",
                   "string"
                  ]
                 },
                 "n": {
                  "type": [
                   "null",
                   "number"
                  ]
                 },
                 "ids": {
                  "type": "array",
                  "items": {
                   "type": [
                    "null",
                    "string"
                   ]
                  }
                 }
                }
               }
              }
             }
            }
           }
          }
         },
         "register": {
          "type": "object",
          "properties": {
           "available": {
            "type": [
             "boolean",
             "null"
            ]
           },
           "looked_up": {
            "type": "object",
            "properties": {
             "projects": {
              "type": [
               "null",
               "number"
              ]
             },
             "by_market": {
              "type": "array",
              "items": {
               "type": "object",
               "properties": {
                "market": {
                 "type": [
                  "null",
                  "string"
                 ]
                },
                "n": {
                 "type": [
                  "null",
                  "number"
                 ]
                },
                "ids": {
                 "type": "array",
                 "items": {
                  "type": [
                   "null",
                   "string"
                  ]
                 }
                }
               }
              }
             },
             "detail": {
              "anyOf": [
               {
                "type": "object",
                "properties": {}
               },
               {
                "type": "object",
                "additionalProperties": {
                 "type": [
                  "null",
                  "string"
                 ]
                },
                "propertyNames": {
                 "pattern": "^[A-Z]{2,6}-\\d{2,4}$"
                }
               }
              ]
             }
            }
           },
           "changed": {
            "type": "object",
            "properties": {
             "projects": {
              "type": [
               "null",
               "number"
              ]
             },
             "by_market": {
              "type": "array",
              "items": {
               "type": "object",
               "properties": {
                "market": {
                 "type": [
                  "null",
                  "string"
                 ]
                },
                "n": {
                 "type": [
                  "null",
                  "number"
                 ]
                },
                "ids": {
                 "type": "array",
                 "items": {
                  "type": [
                   "null",
                   "string"
                  ]
                 }
                }
               }
              }
             },
             "detail": {
              "anyOf": [
               {
                "type": "object",
                "properties": {}
               },
               {
                "type": "object",
                "additionalProperties": {
                 "type": [
                  "null",
                  "string"
                 ]
                },
                "propertyNames": {
                 "pattern": "^[A-Z]{2,6}-\\d{2,4}$"
                }
               }
              ]
             }
            }
           },
           "note": {
            "type": [
             "null",
             "string"
            ]
           }
          }
         },
         "satellite": {
          "type": "object",
          "properties": {
           "available": {
            "type": [
             "boolean",
             "null"
            ]
           },
           "flagged_now": {
            "type": "object",
            "properties": {
             "projects": {
              "type": [
               "null",
               "number"
              ]
             },
             "by_market": {
              "type": "array",
              "items": {
               "type": "object",
               "properties": {
                "market": {
                 "type": [
                  "null",
                  "string"
                 ]
                },
                "n": {
                 "type": [
                  "null",
                  "number"
                 ]
                },
                "ids": {
                 "type": "array",
                 "items": {
                  "type": [
                   "null",
                   "string"
                  ]
                 }
                }
               }
              }
             },
             "detail": {
              "anyOf": [
               {
                "type": "object",
                "properties": {}
               },
               {
                "type": "object",
                "additionalProperties": {
                 "type": [
                  "null",
                  "string"
                 ]
                },
                "propertyNames": {
                 "pattern": "^[A-Z]{2,6}-\\d{2,4}$"
                }
               }
              ]
             }
            }
           },
           "new_flags": {
            "type": "null"
           },
           "status_changed": {
            "type": "object",
            "properties": {
             "projects": {
              "type": [
               "null",
               "number"
              ]
             },
             "by_market": {
              "type": "array"
             },
             "detail": {
              "type": "object",
              "properties": {}
             }
            }
           },
           "compared_this_week": {
            "type": "object",
            "properties": {
             "projects": {
              "type": [
               "null",
               "number"
              ]
             },
             "by_market": {
              "type": "array",
              "items": {
               "type": "object",
               "properties": {
                "market": {
                 "type": [
                  "null",
                  "string"
                 ]
                },
                "n": {
                 "type": [
                  "null",
                  "number"
                 ]
                },
                "ids": {
                 "type": "array",
                 "items": {
                  "type": [
                   "null",
                   "string"
                  ]
                 }
                }
               }
              }
             }
            }
           },
           "note": {
            "type": [
             "null",
             "string"
            ]
           }
          }
         },
         "promises_first_copy": {
          "type": "object",
          "properties": {
           "broken_now": {
            "type": [
             "null",
             "number"
            ]
           }
          }
         }
        }
       },
       "baseline_note": {
        "type": [
         "null",
         "string"
        ]
       },
       "copies": {
        "type": "object",
        "properties": {
         "bali-cases.json": {
          "type": "object",
          "properties": {
           "baseline": {
            "type": [
             "null",
             "string"
            ]
           },
           "end": {
            "type": [
             "null",
             "string"
            ]
           }
          }
         },
         "promises.json": {
          "type": "object",
          "properties": {
           "baseline": {
            "type": "null"
           },
           "end": {
            "type": [
             "null",
             "string"
            ]
           }
          }
         }
        }
       },
       "data_updated": {
        "type": [
         "null",
         "string"
        ]
       },
       "intro": {
        "type": "object",
        "properties": {
         "text": {
          "type": [
           "null",
           "string"
          ]
         },
         "by": {
          "type": [
           "null",
           "string"
          ]
         },
         "check": {
          "type": "object",
          "properties": {
           "numbers_found": {
            "type": "array",
            "items": {
             "type": [
              "null",
              "string"
             ]
            }
           },
           "all_backed": {
            "type": [
             "boolean",
             "null"
            ]
           },
           "problems": {
            "type": "array"
           },
           "rejected": {
            "type": [
             "boolean",
             "null"
            ]
           },
           "draft": {
            "type": [
             "null",
             "string"
            ]
           }
          }
         },
         "spend": {
          "type": "object",
          "properties": {
           "model": {
            "type": [
             "null",
             "string"
            ]
           },
           "input_tokens": {
            "type": [
             "null",
             "number"
            ]
           },
           "output_tokens": {
            "type": [
             "null",
             "number"
            ]
           },
           "usd": {
            "type": [
             "null",
             "number"
            ]
           }
          }
         },
         "facts": {
          "type": "object",
          "properties": {
           "week": {
            "type": [
             "null",
             "string"
            ]
           },
           "projects_tracked": {
            "type": [
             "null",
             "number"
            ]
           },
           "markets_tracked": {
            "type": [
             "null",
             "number"
            ]
           },
           "new_projects": {
            "type": [
             "null",
             "number"
            ]
           },
           "markets_with_new_projects": {
            "type": [
             "null",
             "number"
            ]
           },
           "projects_past_promised_date_this_week": {
            "type": [
             "null",
             "number"
            ]
           },
           "projects_with_promise_moved_later": {
            "type": [
             "null",
             "number"
            ]
           },
           "pages_with_text_changed": {
            "type": [
             "null",
             "number"
            ]
           },
           "register_lookups_dated_this_week": {
            "type": [
             "null",
             "number"
            ]
           },
           "satellite_flags_standing": {
            "type": [
             "null",
             "number"
            ]
           }
          }
         }
        }
       }
      },
      "required": [
       "baseline_note",
       "copies",
       "data_updated",
       "from",
       "generated",
       "id",
       "intro",
       "partial",
       "sections",
       "to",
       "week_end"
      ]
     }
    },
    "ai": {
     "type": "object",
     "properties": {
      "model": {
       "type": "string"
      },
      "role": {
       "type": "string"
      },
      "this_run_usd": {
       "type": "number"
      }
     }
    }
   },
   "required": [
    "ai",
    "generated",
    "history_starts",
    "latest",
    "licence",
    "sources",
    "version",
    "weeks"
   ]
  },
  "domain-age": {
   "title": "Website age of project pages",
   "description": "Contract of https://kolaboro.com/data/domain-age.json. For each project whose page is on its own website: domain registration date (RDAP) and earliest TLS certificate (Certificate Transparency), at month precision. No domains are published.",
   "type": "object",
   "properties": {
    "updated": {
     "type": "string"
    },
    "method": {
     "type": "string"
    },
    "source": {
     "type": "string"
    },
    "counts": {
     "type": "object",
     "properties": {
      "projects": {
       "type": "number"
      },
      "own_site": {
       "type": "number"
      },
      "third_party": {
       "type": "number"
      },
      "domains": {
       "type": "number"
      },
      "with_registration": {
       "type": "number"
      },
      "with_certificate": {
       "type": "number"
      },
      "with_founded_claim": {
       "type": "number"
      }
     }
    },
    "projects": {
     "type": "object",
     "additionalProperties": {
      "type": "object",
      "properties": {
       "site": {
        "type": [
         "null",
         "string"
        ]
       },
       "reg_note": {
        "type": [
         "null",
         "string"
        ]
       },
       "ct_note": {
        "type": [
         "null",
         "string"
        ]
       },
       "founded_claim": {
        "type": [
         "null",
         "number"
        ]
       },
       "reg": {
        "type": [
         "null",
         "string"
        ]
       },
       "ct": {
        "type": [
         "null",
         "string"
        ]
       },
       "checked": {
        "type": [
         "null",
         "string"
        ]
       }
      },
      "required": [
       "site"
      ]
     }
    }
   },
   "required": [
    "counts",
    "method",
    "projects",
    "source",
    "updated"
   ]
  },
  "hazards": {
   "title": "Natural hazards at tracked projects",
   "description": "Contract of https://kolaboro.com/data/hazards.json. Elevation, flood depth, earthquakes, tsunamis, volcanoes and coastline distance for tracked projects with coordinates and watched areas, rounded so they cannot pinpoint a plot. Sources listed in the file.",
   "type": "object",
   "properties": {
    "updated": {
     "type": "string"
    },
    "seconds": {
     "type": "number"
    },
    "method": {
     "type": "string"
    },
    "sources": {
     "type": "object",
     "properties": {
      "elevation": {
       "type": "string"
      },
      "flood": {
       "type": "string"
      },
      "quakes": {
       "type": "string"
      },
      "tsunami": {
       "type": "string"
      },
      "volcano": {
       "type": "string"
      },
      "coast": {
       "type": "string"
      }
     }
    },
    "not_included": {
     "type": "object",
     "properties": {
      "JRC global river flood hazard maps": {
       "type": "string"
      },
      "official zoning": {
       "type": "string"
      }
     }
    },
    "counts": {
     "type": "object",
     "properties": {
      "areas": {
       "type": "number"
      },
      "projects": {
       "type": "number"
      },
      "skipped_id_mismatch": {
       "type": "number"
      },
      "source_failures": {
       "type": "object",
       "properties": {
        "elevation": {
         "type": [
          "null",
          "number"
         ]
        }
       }
      }
     }
    },
    "areas": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "id": {
        "type": [
         "null",
         "string"
        ]
       },
       "label": {
        "type": [
         "null",
         "string"
        ]
       },
       "lat": {
        "type": [
         "null",
         "number"
        ]
       },
       "lng": {
        "type": [
         "null",
         "number"
        ]
       },
       "elev_m": {
        "type": [
         "null",
         "number"
        ]
       },
       "flood_river_m": {
        "type": [
         "null",
         "number"
        ]
       },
       "flood_coast_m": {
        "type": [
         "null",
         "number"
        ]
       },
       "quakes": {
        "type": "object",
        "properties": {
         "m5": {
          "type": [
           "null",
           "number"
          ]
         },
         "m6": {
          "type": [
           "null",
           "number"
          ]
         },
         "m7": {
          "type": [
           "null",
           "number"
          ]
         },
         "max": {
          "type": "object",
          "properties": {
           "mag": {
            "type": [
             "null",
             "number"
            ]
           },
           "year": {
            "type": [
             "null",
             "number"
            ]
           },
           "dist_km": {
            "type": [
             "null",
             "number"
            ]
           }
          }
         }
        }
       },
       "tsunami": {
        "type": "object",
        "properties": {
         "runups": {
          "type": [
           "null",
           "number"
          ]
         },
         "events": {
          "type": [
           "null",
           "number"
          ]
         },
         "max_m": {
          "type": [
           "null",
           "number"
          ]
         },
         "latest": {
          "type": [
           "null",
           "number"
          ]
         }
        }
       },
       "volcano": {
        "type": "object",
        "properties": {
         "name": {
          "type": [
           "null",
           "string"
          ]
         },
         "number": {
          "type": [
           "null",
           "number"
          ]
         },
         "dist_km": {
          "type": [
           "null",
           "number"
          ]
         },
         "last": {
          "type": [
           "null",
           "number"
          ]
         },
         "none_within_km": {
          "type": [
           "null",
           "number"
          ]
         }
        }
       },
       "coast": {
        "type": [
         "null",
         "number",
         "string"
        ]
       },
       "unavailable": {
        "type": "array",
        "items": {
         "type": [
          "null",
          "string"
         ]
        }
       }
      },
      "required": [
       "coast",
       "flood_coast_m",
       "flood_river_m",
       "id",
       "label",
       "lat",
       "lng",
       "quakes",
       "tsunami",
       "volcano"
      ]
     }
    },
    "projects": {
     "type": "object",
     "additionalProperties": {
      "type": "object",
      "properties": {
       "elev_m": {
        "type": [
         "null",
         "number"
        ]
       },
       "flood_river_m": {
        "type": [
         "null",
         "number"
        ]
       },
       "flood_coast_m": {
        "type": [
         "null",
         "number"
        ]
       },
       "quakes": {
        "type": "object",
        "properties": {
         "m5": {
          "type": [
           "null",
           "number"
          ]
         },
         "m6": {
          "type": [
           "null",
           "number"
          ]
         },
         "m7": {
          "type": [
           "null",
           "number"
          ]
         },
         "max": {
          "type": "object",
          "properties": {
           "mag": {
            "type": [
             "null",
             "number"
            ]
           },
           "year": {
            "type": [
             "null",
             "number"
            ]
           },
           "dist_km": {
            "type": [
             "null",
             "number"
            ]
           }
          }
         }
        }
       },
       "tsunami": {
        "type": "object",
        "properties": {
         "runups": {
          "type": [
           "null",
           "number"
          ]
         },
         "events": {
          "type": [
           "null",
           "number"
          ]
         },
         "max_m": {
          "type": [
           "null",
           "number"
          ]
         },
         "latest": {
          "type": [
           "null",
           "number"
          ]
         }
        }
       },
       "volcano": {
        "type": "object",
        "properties": {
         "name": {
          "type": [
           "null",
           "string"
          ]
         },
         "number": {
          "type": [
           "null",
           "number"
          ]
         },
         "dist_km": {
          "type": [
           "null",
           "number"
          ]
         },
         "last": {
          "type": [
           "null",
           "number"
          ]
         },
         "none_within_km": {
          "type": [
           "null",
           "number"
          ]
         }
        }
       },
       "coast": {
        "type": [
         "null",
         "string"
        ]
       }
      },
      "required": [
       "coast",
       "elev_m",
       "flood_coast_m",
       "flood_river_m",
       "quakes",
       "tsunami",
       "volcano"
      ]
     },
     "propertyNames": {
      "pattern": "^[A-Z]{2,6}-\\d{2,4}$"
     }
    }
   },
   "required": [
    "areas",
    "counts",
    "method",
    "not_included",
    "projects",
    "seconds",
    "sources",
    "updated"
   ]
  },
  "image-hashes": {
   "title": "Perceptual image hashes",
   "description": "Contract of https://kolaboro.com/data/image-hashes.json. 64-bit difference hashes of the images kept by the weekly render-reuse run, so anyone can check whether a picture appears on a tracked project page.",
   "type": "object",
   "properties": {
    "generated": {
     "type": "string"
    },
    "algo": {
     "type": "string"
    },
    "fields": {
     "type": "array",
     "items": {
      "type": "string"
     }
    },
    "images": {
     "type": "number"
    },
    "cases": {
     "type": "number"
    },
    "method": {
     "type": "string"
    },
    "items": {
     "type": "array",
     "items": {
      "type": "array",
      "items": {
       "type": [
        "null",
        "string"
       ]
      }
     }
    }
   },
   "required": [
    "algo",
    "cases",
    "fields",
    "generated",
    "images",
    "items",
    "method"
   ]
  },
  "image-index": {
   "title": "Render index",
   "description": "Contract of https://kolaboro.com/data/image-index.json. Perceptual hashes of images found on the websites the research agent reads, used to check whether a picture a buyer was sent also appears elsewhere.",
   "type": "object",
   "properties": {
    "updated": {
     "type": "string"
    },
    "images": {
     "type": "number"
    },
    "sites": {
     "type": "number"
    },
    "items": {
     "type": "array",
     "items": {
      "type": "array",
      "items": {
       "type": [
        "null",
        "string"
       ]
      }
     }
    }
   },
   "required": [
    "images",
    "items",
    "sites",
    "updated"
   ]
  },
  "insolvency-es-index": {
   "title": "Spanish insolvency index (hashed)",
   "description": "Contract of https://kolaboro.com/data/insolvency-es-index.json. Insolvency acts published in BORME Section One, keyed by a truncated SHA-256 of the normalised company name so the file is not a readable list of companies; anyone can test a name against it. Source BOE, reuse with attribution.",
   "type": "object",
   "properties": {
    "updated": {
     "type": "string"
    },
    "from": {
     "type": "string"
    },
    "to": {
     "type": "string"
    },
    "days": {
     "type": "array",
     "items": {
      "type": "string"
     }
    },
    "source": {
     "type": "string"
    },
    "key": {
     "type": "string"
    },
    "row": {
     "type": "array",
     "items": {
      "type": "string"
     }
    },
    "note": {
     "type": "string"
    },
    "acts": {
     "type": "number"
    },
    "companies": {
     "type": "number"
    },
    "h": {
     "type": "object",
     "additionalProperties": {
      "type": "array",
      "items": {
       "type": "array",
       "items": {
        "type": [
         "null",
         "string"
        ]
       }
      }
     }
    }
   },
   "required": [
    "acts",
    "companies",
    "days",
    "from",
    "h",
    "key",
    "note",
    "row",
    "source",
    "to",
    "updated"
   ]
  },
  "insolvency-watch": {
   "title": "Insolvency watch",
   "description": "Contract of https://kolaboro.com/data/insolvency-watch.json. Daily check of UK and Spanish developer companies against insolvency notices (The Gazette, BORME). Each hit is reduced to date, source and type of notice; no company names.",
   "type": "object",
   "properties": {
    "updated": {
     "type": "string"
    },
    "coverage": {
     "type": "object",
     "properties": {
      "covered": {
       "type": "array",
       "items": {
        "type": "object",
        "properties": {
         "country": {
          "type": [
           "null",
           "string"
          ]
         },
         "source": {
          "type": [
           "null",
           "string"
          ]
         },
         "url": {
          "type": [
           "null",
           "string"
          ]
         },
         "licence": {
          "type": [
           "null",
           "string"
          ]
         },
         "from": {
          "type": [
           "null",
           "string"
          ]
         },
         "how": {
          "type": [
           "null",
           "string"
          ]
         }
        }
       }
      },
      "partial_or_by_hand": {
       "type": "array",
       "items": {
        "type": "object",
        "properties": {
         "country": {
          "type": [
           "null",
           "string"
          ]
         },
         "source": {
          "type": [
           "null",
           "string"
          ]
         },
         "url": {
          "type": [
           "null",
           "string"
          ]
         },
         "why": {
          "type": [
           "null",
           "string"
          ]
         }
        }
       }
      },
      "not_covered": {
       "type": "string"
      }
     }
    },
    "method": {
     "type": "array",
     "items": {
      "type": "string"
     }
    },
    "privacy": {
     "type": "string"
    },
    "coverage_counts": {
     "type": "object",
     "properties": {
      "uk_projects": {
       "type": "number"
      },
      "uk_names_checked": {
       "type": "number"
      },
      "uk_gazette_errors": {
       "type": "number"
      },
      "es_projects": {
       "type": "number"
      },
      "es_names_checked": {
       "type": "number"
      }
     }
    },
    "spain_index": {
     "type": "object",
     "properties": {
      "from": {
       "type": "string"
      },
      "to": {
       "type": "string"
      },
      "days": {
       "type": "number"
      },
      "acts": {
       "type": "number"
      },
      "companies": {
       "type": "number"
      },
      "days_scanned_this_run": {
       "type": "number"
      },
      "acts_added_this_run": {
       "type": "number"
      }
     }
    },
    "markets": {
     "type": "object",
     "additionalProperties": {
      "type": "object",
      "properties": {
       "country": {
        "type": [
         "null",
         "string"
        ]
       },
       "source": {
        "type": [
         "null",
         "string"
        ]
       },
       "projects": {
        "type": [
         "null",
         "number"
        ]
       },
       "projects_with_names": {
        "type": [
         "null",
         "number"
        ]
       },
       "names_checked": {
        "type": [
         "null",
         "number"
        ]
       },
       "projects_with_notice": {
        "type": [
         "null",
         "number"
        ]
       }
      },
      "required": [
       "country",
       "names_checked",
       "projects",
       "projects_with_names",
       "projects_with_notice",
       "source"
      ]
     }
    },
    "totals": {
     "type": "object",
     "properties": {
      "projects_checked": {
       "type": "number"
      },
      "projects_with_notice": {
       "type": "number"
      },
      "names_checked": {
       "type": "number"
      }
     }
    },
    "projects": {
     "type": "object",
     "additionalProperties": {
      "type": "object",
      "properties": {
       "market": {
        "type": [
         "null",
         "string"
        ]
       },
       "names_checked": {
        "type": [
         "null",
         "number"
        ]
       },
       "notices": {
        "type": [
         "null",
         "number"
        ]
       },
       "found": {
        "type": "array",
        "items": {
         "type": "object",
         "properties": {
          "date": {
           "type": [
            "null",
            "string"
           ]
          },
          "source": {
           "type": [
            "null",
            "string"
           ]
          },
          "type": {
           "type": [
            "null",
            "string"
           ]
          },
          "text": {
           "type": [
            "null",
            "string"
           ]
          }
         }
        }
       }
      },
      "required": [
       "market",
       "names_checked",
       "notices"
      ]
     },
     "propertyNames": {
      "pattern": "^[A-Z]{2,6}-\\d{2,4}$"
     }
    }
   },
   "required": [
    "coverage",
    "coverage_counts",
    "markets",
    "method",
    "privacy",
    "projects",
    "spain_index",
    "totals",
    "updated"
   ]
  },
  "journeys": {
   "title": "Synthetic user journeys",
   "description": "Contract of https://kolaboro.com/data/journeys.json. A scripted buyer journey run in a real browser every hour: pass or fail per step, timings and the latest screenshots (journeys/1.webp to 5.webp).",
   "type": "object",
   "properties": {
    "updated": {
     "type": "string"
    },
    "base": {
     "type": "string"
    },
    "journey": {
     "type": "array",
     "items": {
      "type": "string"
     }
    },
    "runs_kept": {
     "type": "number"
    },
    "runs_passed": {
     "type": "number"
    },
    "median_ms_by_step": {
     "type": "object",
     "additionalProperties": {
      "type": "number"
     }
    },
    "latest_shots": {
     "type": "array",
     "items": {
      "type": "string"
     }
    },
    "runs": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "at": {
        "type": [
         "null",
         "string"
        ]
       },
       "ok": {
        "type": [
         "boolean",
         "null"
        ]
       },
       "total_ms": {
        "type": [
         "null",
         "number"
        ]
       },
       "browser": {
        "type": [
         "null",
         "string"
        ]
       },
       "steps": {
        "type": "array",
        "items": {
         "type": "object",
         "properties": {
          "n": {
           "type": [
            "null",
            "number"
           ]
          },
          "name": {
           "type": [
            "null",
            "string"
           ]
          },
          "ok": {
           "type": [
            "boolean",
            "null"
           ]
          },
          "ms": {
           "type": [
            "null",
            "number"
           ]
          },
          "url": {
           "type": [
            "null",
            "string"
           ]
          },
          "detail": {
           "type": [
            "null",
            "string"
           ]
          },
          "console_errors": {
           "type": [
            "null",
            "number"
           ]
          },
          "errors": {
           "type": "array",
           "items": {
            "type": [
             "null",
             "string"
            ]
           }
          },
          "shot": {
           "type": [
            "boolean",
            "null"
           ]
          }
         }
        }
       }
      },
      "required": [
       "at",
       "browser",
       "ok",
       "steps",
       "total_ms"
      ]
     }
    }
   },
   "required": [
    "base",
    "journey",
    "latest_shots",
    "median_ms_by_step",
    "runs",
    "runs_kept",
    "runs_passed",
    "updated"
   ]
  },
  "kolaboro-parquet-manifest": {
   "title": "Parquet export manifest",
   "description": "Contract of https://kolaboro.com/data/kolaboro.parquet.json. Columns, row counts, sizes and SHA-256 of the two Parquet files and the SHA-256 of the bali-cases.json they were built from. A signed copy is served by /api/x/e/parquet-manifest.",
   "type": "object",
   "properties": {
    "name": {
     "type": "string"
    },
    "version": {
     "type": "number"
    },
    "generated": {
     "type": "string"
    },
    "license": {
     "type": "string"
    },
    "source": {
     "type": "object",
     "properties": {
      "url": {
       "type": "string"
      },
      "sha256": {
       "type": "string"
      },
      "updated": {
       "type": "string"
      },
      "projects": {
       "type": "number"
      }
     }
    },
    "files": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "path": {
        "type": [
         "null",
         "string"
        ]
       },
       "table": {
        "type": [
         "null",
         "string"
        ]
       },
       "description": {
        "type": [
         "null",
         "string"
        ]
       },
       "rows": {
        "type": [
         "null",
         "number"
        ]
       },
       "bytes": {
        "type": [
         "null",
         "number"
        ]
       },
       "sha256": {
        "type": [
         "null",
         "string"
        ]
       },
       "columns": {
        "type": "array",
        "items": {
         "type": "object",
         "properties": {
          "name": {
           "type": [
            "null",
            "string"
           ]
          },
          "type": {
           "type": [
            "null",
            "string"
           ]
          }
         }
        }
       }
      },
      "required": [
       "bytes",
       "columns",
       "description",
       "path",
       "rows",
       "sha256",
       "table"
      ]
     }
    },
    "signed_manifest": {
     "type": "string"
    },
    "note": {
     "type": "string"
    }
   },
   "required": [
    "files",
    "generated",
    "license",
    "name",
    "note",
    "signed_manifest",
    "source",
    "version"
   ]
  },
  "lighthouse": {
   "title": "Lighthouse scores",
   "description": "Contract of https://kolaboro.com/data/lighthouse.json. Lighthouse runs per page and form factor with thresholds and flags.",
   "type": "object",
   "properties": {
    "generated": {
     "type": "string"
    },
    "tool": {
     "type": "string"
    },
    "run": {
     "type": "string"
    },
    "method": {
     "type": "string"
    },
    "pages": {
     "type": "number"
    },
    "baseline": {
     "type": "boolean"
    },
    "thresholds_margin": {
     "type": "object",
     "properties": {
      "performance": {
       "type": "number"
      },
      "accessibility": {
       "type": "number"
      },
      "best-practices": {
       "type": "number"
      },
      "seo": {
       "type": "number"
      }
     }
    },
    "summary": {
     "type": "object",
     "properties": {
      "mobile": {
       "type": "object",
       "properties": {
        "performance": {
         "type": "object",
         "properties": {
          "average": {
           "type": [
            "null",
            "number"
           ]
          },
          "lowest": {
           "type": [
            "null",
            "number"
           ]
          },
          "pages_at_100": {
           "type": [
            "null",
            "number"
           ]
          }
         }
        },
        "accessibility": {
         "type": "object",
         "properties": {
          "average": {
           "type": [
            "null",
            "number"
           ]
          },
          "lowest": {
           "type": [
            "null",
            "number"
           ]
          },
          "pages_at_100": {
           "type": [
            "null",
            "number"
           ]
          }
         }
        },
        "best-practices": {
         "type": "object",
         "properties": {
          "average": {
           "type": [
            "null",
            "number"
           ]
          },
          "lowest": {
           "type": [
            "null",
            "number"
           ]
          },
          "pages_at_100": {
           "type": [
            "null",
            "number"
           ]
          }
         }
        },
        "seo": {
         "type": "object",
         "properties": {
          "average": {
           "type": [
            "null",
            "number"
           ]
          },
          "lowest": {
           "type": [
            "null",
            "number"
           ]
          },
          "pages_at_100": {
           "type": [
            "null",
            "number"
           ]
          }
         }
        }
       }
      },
      "desktop": {
       "type": "object",
       "properties": {
        "performance": {
         "type": "object",
         "properties": {
          "average": {
           "type": [
            "null",
            "number"
           ]
          },
          "lowest": {
           "type": [
            "null",
            "number"
           ]
          },
          "pages_at_100": {
           "type": [
            "null",
            "number"
           ]
          }
         }
        },
        "accessibility": {
         "type": "object",
         "properties": {
          "average": {
           "type": [
            "null",
            "number"
           ]
          },
          "lowest": {
           "type": [
            "null",
            "number"
           ]
          },
          "pages_at_100": {
           "type": [
            "null",
            "number"
           ]
          }
         }
        },
        "best-practices": {
         "type": "object",
         "properties": {
          "average": {
           "type": [
            "null",
            "number"
           ]
          },
          "lowest": {
           "type": [
            "null",
            "number"
           ]
          },
          "pages_at_100": {
           "type": [
            "null",
            "number"
           ]
          }
         }
        },
        "seo": {
         "type": "object",
         "properties": {
          "average": {
           "type": [
            "null",
            "number"
           ]
          },
          "lowest": {
           "type": [
            "null",
            "number"
           ]
          },
          "pages_at_100": {
           "type": [
            "null",
            "number"
           ]
          }
         }
        }
       }
      }
     }
    },
    "flags": {
     "type": "array"
    },
    "runs": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "page": {
        "type": [
         "null",
         "string"
        ]
       },
       "form_factor": {
        "type": [
         "null",
         "string"
        ]
       },
       "scores": {
        "type": "object",
        "properties": {
         "performance": {
          "type": [
           "null",
           "number"
          ]
         },
         "accessibility": {
          "type": [
           "null",
           "number"
          ]
         },
         "best-practices": {
          "type": [
           "null",
           "number"
          ]
         },
         "seo": {
          "type": [
           "null",
           "number"
          ]
         }
        }
       },
       "metrics": {
        "type": "object",
        "properties": {
         "lcp_ms": {
          "type": [
           "null",
           "number"
          ]
         },
         "fcp_ms": {
          "type": [
           "null",
           "number"
          ]
         },
         "tbt_ms": {
          "type": [
           "null",
           "number"
          ]
         },
         "cls": {
          "type": [
           "null",
           "number"
          ]
         },
         "si_ms": {
          "type": [
           "null",
           "number"
          ]
         }
        }
       },
       "failing_audits": {
        "type": "array",
        "items": {
         "type": [
          "null",
          "string"
         ]
        }
       }
      },
      "required": [
       "failing_audits",
       "form_factor",
       "metrics",
       "page",
       "scores"
      ]
     }
    }
   },
   "required": [
    "baseline",
    "flags",
    "generated",
    "method",
    "pages",
    "run",
    "runs",
    "summary",
    "thresholds_margin",
    "tool"
   ]
  },
  "market-points": {
   "title": "Market points for the map",
   "description": "Contract of https://kolaboro.com/data/market-points.json. One public point per market (not per project), from Natural Earth and GeoNames, used to place anonymous projects on the map. Private per-project coordinates are never used.",
   "type": "object",
   "properties": {
    "version": {
     "type": "string"
    },
    "generated": {
     "type": "string"
    },
    "dataset_updated": {
     "type": "string"
    },
    "what": {
     "type": "string"
    },
    "method": {
     "type": "array",
     "items": {
      "type": "string"
     }
    },
    "sources": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "name": {
        "type": [
         "null",
         "string"
        ]
       },
       "licence": {
        "type": [
         "null",
         "string"
        ]
       },
       "url": {
        "type": [
         "null",
         "string"
        ]
       },
       "query": {
        "type": [
         "null",
         "string"
        ]
       }
      },
      "required": [
       "licence",
       "name",
       "query",
       "url"
      ]
     }
    },
    "counts": {
     "type": "object",
     "properties": {
      "markets": {
       "type": "number"
      },
      "placed": {
       "type": "number"
      },
      "unplaced": {
       "type": "number"
      },
      "projects": {
       "type": "number"
      },
      "projects_placed": {
       "type": "number"
      },
      "by_how": {
       "type": "object",
       "properties": {
        "place": {
         "type": [
          "null",
          "number"
         ]
        },
        "country": {
         "type": [
          "null",
          "number"
         ]
        },
        "anchor": {
         "type": [
          "null",
          "number"
         ]
        }
       }
      }
     }
    },
    "input": {
     "type": "object",
     "properties": {
      "file": {
       "type": "string"
      },
      "sha256": {
       "type": "string"
      }
     }
    },
    "markets": {
     "type": "object",
     "additionalProperties": {
      "type": "object",
      "properties": {
       "lat": {
        "type": [
         "null",
         "number"
        ]
       },
       "lng": {
        "type": [
         "null",
         "number"
        ]
       },
       "place": {
        "type": [
         "null",
         "string"
        ]
       },
       "src": {
        "type": [
         "null",
         "string"
        ]
       },
       "how": {
        "type": [
         "null",
         "string"
        ]
       }
      },
      "required": [
       "how",
       "lat",
       "lng",
       "place",
       "src"
      ]
     }
    },
    "unplaced": {
     "type": "array"
    }
   },
   "required": [
    "counts",
    "dataset_updated",
    "generated",
    "input",
    "markets",
    "method",
    "sources",
    "unplaced",
    "version",
    "what"
   ]
  },
  "mystery-shopper": {
   "title": "Mystery shopper programme",
   "description": "Contract of https://kolaboro.com/data/mystery-shopper.json. Questionnaire, measurement rules and status of the mystery shopper programme. It has not started; the file says why.",
   "type": "object",
   "properties": {
    "version": {
     "type": "string"
    },
    "updated": {
     "type": "string"
    },
    "status": {
     "type": "string"
    },
    "enquiries_sent": {
     "type": "number"
    },
    "replies_received": {
     "type": "number"
    },
    "why_not_started": {
     "type": "array",
     "items": {
      "type": "string"
     }
    },
    "sender_policy": {
     "type": "string"
    },
    "questionnaire": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "id": {
        "type": [
         "null",
         "string"
        ]
       },
       "topic": {
        "type": [
         "null",
         "string"
        ]
       },
       "question": {
        "type": [
         "null",
         "string"
        ]
       },
       "checkable_answer": {
        "type": [
         "null",
         "string"
        ]
       }
      },
      "required": [
       "checkable_answer",
       "id",
       "question",
       "topic"
      ]
     }
    },
    "measurement": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "metric": {
        "type": [
         "null",
         "string"
        ]
       },
       "definition": {
        "type": [
         "null",
         "string"
        ]
       }
      },
      "required": [
       "definition",
       "metric"
      ]
     }
    },
    "publication": {
     "type": "string"
    },
    "plan": {
     "type": "string"
    },
    "needed_to_start": {
     "type": "array",
     "items": {
      "type": "string"
     }
    }
   },
   "required": [
    "enquiries_sent",
    "measurement",
    "needed_to_start",
    "plan",
    "publication",
    "questionnaire",
    "replies_received",
    "sender_policy",
    "status",
    "updated",
    "version",
    "why_not_started"
   ]
  },
  "night-lights": {
   "title": "Night lights at finished projects",
   "description": "Contract of https://kolaboro.com/data/night-lights.json. NASA Black Marble night-time light at projects that should be finished, compared with the surrounding ring, monthly for 36 months. Light is a proxy, not proof of occupancy.",
   "type": "object",
   "properties": {
    "updated": {
     "type": "string"
    },
    "from": {
     "type": "string"
    },
    "to": {
     "type": "string"
    },
    "seconds": {
     "type": "number"
    },
    "selection": {
     "type": "string"
    },
    "source": {
     "type": "object",
     "properties": {
      "name": {
       "type": "string"
      },
      "url": {
       "type": "string"
      },
      "license": {
       "type": "string"
      },
      "query": {
       "type": "string"
      },
      "colormap": {
       "type": "string"
      }
     }
    },
    "method": {
     "type": "string"
    },
    "limits": {
     "type": "string"
    },
    "projects": {
     "type": "object",
     "additionalProperties": {
      "type": "object",
      "properties": {
       "group": {
        "type": [
         "null",
         "string"
        ]
       },
       "months": {
        "type": [
         "null",
         "number"
        ]
       },
       "months_with_data": {
        "type": [
         "null",
         "number"
        ]
       },
       "days_read": {
        "type": [
         "null",
         "number"
        ]
       },
       "requests_failed": {
        "type": [
         "null",
         "number"
        ]
       },
       "pin_last12": {
        "type": [
         "null",
         "number"
        ]
       },
       "pin_prev12": {
        "type": [
         "null",
         "number"
        ]
       },
       "ring_last12": {
        "type": [
         "null",
         "number"
        ]
       },
       "change_pct": {
        "type": [
         "null",
         "number"
        ]
       },
       "pin_vs_ring": {
        "type": [
         "null",
         "number"
        ]
       },
       "trend_per_year": {
        "type": [
         "null",
         "number"
        ]
       },
       "saturated_months": {
        "type": [
         "null",
         "number"
        ]
       },
       "quarters": {
        "type": "array",
        "items": {
         "type": [
          "null",
          "number"
         ]
        }
       },
       "reading": {
        "type": [
         "null",
         "string"
        ]
       }
      },
      "required": [
       "change_pct",
       "days_read",
       "group",
       "months",
       "months_with_data",
       "pin_last12",
       "pin_prev12",
       "pin_vs_ring",
       "quarters",
       "reading",
       "requests_failed",
       "ring_last12",
       "saturated_months",
       "trend_per_year"
      ]
     },
     "propertyNames": {
      "pattern": "^[A-Z]{2,6}-\\d{2,4}$"
     }
    }
   },
   "required": [
    "from",
    "limits",
    "method",
    "projects",
    "seconds",
    "selection",
    "source",
    "to",
    "updated"
   ]
  },
  "on-time": {
   "title": "On-time handover odds",
   "description": "Contract of https://kolaboro.com/data/on-time.json. For each project: will it hand over within 6 months of the first date on record? Estimated from closed comparable projects with a 95% interval, plus validation and the bias of the sample.",
   "type": "object",
   "properties": {
    "version": {
     "type": "string"
    },
    "generated": {
     "type": "string"
    },
    "as_of_month": {
     "type": "string"
    },
    "licence": {
     "type": "string"
    },
    "question": {
     "type": "string"
    },
    "rules": {
     "type": "object",
     "properties": {
      "window_months": {
       "type": "number"
      },
      "min_comparables": {
       "type": "number"
      },
      "interval": {
       "type": "string"
      },
      "closed": {
       "type": "string"
      },
      "on_time": {
       "type": "string"
      },
      "comparables": {
       "type": "string"
      },
      "status": {
       "type": "object",
       "properties": {
        "open": {
         "type": [
          "null",
          "string"
         ]
        },
        "missed": {
         "type": [
          "null",
          "string"
         ]
        },
        "moved": {
         "type": [
          "null",
          "string"
         ]
        },
        "done_on_time": {
         "type": [
          "null",
          "string"
         ]
        },
        "done_late": {
         "type": [
          "null",
          "string"
         ]
        },
        "no_date": {
         "type": [
          "null",
          "string"
         ]
        },
        "completed_no_date": {
         "type": [
          "null",
          "string"
         ]
        },
        "inconsistent": {
         "type": [
          "null",
          "string"
         ]
        }
       }
      }
     }
    },
    "why_not_stage": {
     "type": "string"
    },
    "bias": {
     "type": "string"
    },
    "pooled": {
     "type": "object",
     "properties": {
      "n": {
       "type": "number"
      },
      "k": {
       "type": "number"
      },
      "p": {
       "type": "number"
      },
      "lo": {
       "type": "number"
      },
      "hi": {
       "type": "number"
      }
     }
    },
    "closed_by_market": {
     "type": "object",
     "properties": {
      "Bali": {
       "type": "array",
       "items": {
        "type": [
         "null",
         "number"
        ]
       }
      },
      "Algarve": {
       "type": "array",
       "items": {
        "type": [
         "null",
         "number"
        ]
       }
      },
      "Antalya": {
       "type": "array",
       "items": {
        "type": [
         "null",
         "number"
        ]
       }
      },
      "Birmingham": {
       "type": "array",
       "items": {
        "type": [
         "null",
         "number"
        ]
       }
      },
      "Cambodia": {
       "type": "array",
       "items": {
        "type": [
         "null",
         "number"
        ]
       }
      },
      "Cape Verde": {
       "type": "array",
       "items": {
        "type": [
         "null",
         "number"
        ]
       }
      },
      "Cayman Islands": {
       "type": "array",
       "items": {
        "type": [
         "null",
         "number"
        ]
       }
      },
      "Costa Rica": {
       "type": "array",
       "items": {
        "type": [
         "null",
         "number"
        ]
       }
      },
      "Croatia": {
       "type": "array",
       "items": {
        "type": [
         "null",
         "number"
        ]
       }
      },
      "Dubai": {
       "type": "array",
       "items": {
        "type": [
         "null",
         "number"
        ]
       }
      },
      "Istanbul": {
       "type": "array",
       "items": {
        "type": [
         "null",
         "number"
        ]
       }
      },
      "Italy": {
       "type": "array",
       "items": {
        "type": [
         "null",
         "number"
        ]
       }
      },
      "Labuan Bajo": {
       "type": "array",
       "items": {
        "type": [
         "null",
         "number"
        ]
       }
      },
      "Las Vegas": {
       "type": "array",
       "items": {
        "type": [
         "null",
         "number"
        ]
       }
      },
      "Los Cabos": {
       "type": "array",
       "items": {
        "type": [
         "null",
         "number"
        ]
       }
      },
      "Malaysia": {
       "type": "array",
       "items": {
        "type": [
         "null",
         "number"
        ]
       }
      },
      "Medellín": {
       "type": "array",
       "items": {
        "type": [
         "null",
         "number"
        ]
       }
      },
      "Miami": {
       "type": "array",
       "items": {
        "type": [
         "null",
         "number"
        ]
       }
      },
      "Montenegro": {
       "type": "array",
       "items": {
        "type": [
         "null",
         "number"
        ]
       }
      },
      "New Zealand": {
       "type": "array",
       "items": {
        "type": [
         "null",
         "number"
        ]
       }
      },
      "Niseko": {
       "type": "array",
       "items": {
        "type": [
         "null",
         "number"
        ]
       }
      },
      "Northern Cyprus": {
       "type": "array",
       "items": {
        "type": [
         "null",
         "number"
        ]
       }
      },
      "Oman": {
       "type": "array",
       "items": {
        "type": [
         "null",
         "number"
        ]
       }
      },
      "Palm Beach County": {
       "type": "array",
       "items": {
        "type": [
         "null",
         "number"
        ]
       }
      },
      "Portugal": {
       "type": "array",
       "items": {
        "type": [
         "null",
         "number"
        ]
       }
      },
      "Puerto Vallarta": {
       "type": "array",
       "items": {
        "type": [
         "null",
         "number"
        ]
       }
      },
      "Riviera Maya": {
       "type": "array",
       "items": {
        "type": [
         "null",
         "number"
        ]
       }
      },
      "Seychelles": {
       "type": "array",
       "items": {
        "type": [
         "null",
         "number"
        ]
       }
      },
      "Sri Lanka": {
       "type": "array",
       "items": {
        "type": [
         "null",
         "number"
        ]
       }
      },
      "Vietnam": {
       "type": "array",
       "items": {
        "type": [
         "null",
         "number"
        ]
       }
      }
     }
    },
    "groups": {
     "type": "object",
     "properties": {
      "all:all markets": {
       "type": "object",
       "properties": {
        "n": {
         "type": [
          "null",
          "number"
         ]
        },
        "k": {
         "type": [
          "null",
          "number"
         ]
        },
        "p": {
         "type": [
          "null",
          "number"
         ]
        },
        "lo": {
         "type": [
          "null",
          "number"
         ]
        },
        "hi": {
         "type": [
          "null",
          "number"
         ]
        },
        "level": {
         "type": [
          "null",
          "string"
         ]
        },
        "name": {
         "type": [
          "null",
          "string"
         ]
        }
       }
      }
     }
    },
    "counts": {
     "type": "object",
     "properties": {
      "open": {
       "type": "number"
      },
      "moved": {
       "type": "number"
      },
      "done_on_time": {
       "type": "number"
      },
      "no_date": {
       "type": "number"
      },
      "missed": {
       "type": "number"
      },
      "inconsistent": {
       "type": "number"
      },
      "done_late": {
       "type": "number"
      },
      "completed_no_date": {
       "type": "number"
      }
     }
    },
    "validation": {
     "type": "object",
     "properties": {
      "method": {
       "type": "string"
      },
      "n": {
       "type": "number"
      },
      "on_time": {
       "type": "number"
      },
      "levels_used": {
       "type": "object",
       "properties": {
        "all": {
         "type": [
          "null",
          "number"
         ]
        }
       }
      },
      "brier": {
       "type": "number"
      },
      "brier_constant_50": {
       "type": "number"
      },
      "brier_constant_base_in_sample": {
       "type": "number"
      },
      "calibration": {
       "type": "array",
       "items": {
        "type": "object",
        "properties": {
         "predicted_from": {
          "type": [
           "null",
           "number"
          ]
         },
         "predicted_to": {
          "type": [
           "null",
           "number"
          ]
         },
         "n": {
          "type": [
           "null",
           "number"
          ]
         },
         "mean_predicted": {
          "type": [
           "null",
           "number"
          ]
         },
         "observed": {
          "type": [
           "null",
           "number"
          ]
         }
        }
       }
      },
      "verdict": {
       "type": "string"
      }
     }
    },
    "projects": {
     "type": "object",
     "additionalProperties": {
      "type": "object",
      "properties": {
       "s": {
        "type": [
         "null",
         "string"
        ]
       },
       "m": {
        "type": [
         "null",
         "string"
        ]
       },
       "cur": {
        "type": [
         "null",
         "string"
        ]
       },
       "first": {
        "type": [
         "null",
         "string"
        ]
       },
       "moved": {
        "type": [
         "null",
         "number"
        ]
       },
       "overdue": {
        "type": [
         "null",
         "number"
        ]
       },
       "g": {
        "type": [
         "null",
         "string"
        ]
       },
       "to_first": {
        "type": [
         "null",
         "number"
        ]
       }
      },
      "required": [
       "cur",
       "first",
       "m",
       "moved",
       "overdue",
       "s"
      ]
     }
    },
    "snapshots": {
     "type": "object",
     "properties": {
      "2026-11": {
       "type": "object",
       "properties": {
        "taken": {
         "type": [
          "null",
          "string"
         ]
        },
        "rows": {
         "type": "object",
         "additionalProperties": {
          "type": [
           "null",
           "string"
          ]
         }
        }
       }
      }
     }
    },
    "inputs": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "file": {
        "type": [
         "null",
         "string"
        ]
       },
       "sha256": {
        "type": [
         "null",
         "string"
        ]
       },
       "updated": {
        "type": [
         "null",
         "string"
        ]
       },
       "projects": {
        "type": [
         "null",
         "number"
        ]
       },
       "generated": {
        "type": [
         "null",
         "string"
        ]
       }
      },
      "required": [
       "file",
       "sha256"
      ]
     }
    }
   },
   "required": [
    "as_of_month",
    "bias",
    "closed_by_market",
    "counts",
    "generated",
    "groups",
    "inputs",
    "licence",
    "pooled",
    "projects",
    "question",
    "rules",
    "snapshots",
    "validation",
    "version",
    "why_not_stage"
   ]
  },
  "page-weight": {
   "title": "Page weight",
   "description": "Contract of https://kolaboro.com/data/page-weight.json. Bytes transferred for one cold load of key pages (compressed size plus headers, measured in Chrome), first-party bytes split by resource type, against page-weight budgets.",
   "type": "object",
   "properties": {
    "updated": {
     "type": "string"
    },
    "base": {
     "type": "string"
    },
    "method": {
     "type": "string"
    },
    "budgets": {
     "type": "object",
     "properties": {
      "default_type": {
       "type": "string"
      },
      "types": {
       "type": "array",
       "items": {
        "type": "object",
        "properties": {
         "id": {
          "type": [
           "null",
           "string"
          ]
         },
         "match": {
          "type": "array",
          "items": {
           "type": [
            "null",
            "string"
           ]
          }
         }
        }
       }
      },
      "budgets": {
       "type": "object",
       "properties": {
        "home": {
         "type": "object",
         "properties": {
          "phone": {
           "type": "object",
           "properties": {
            "total": {
             "type": [
              "null",
              "number"
             ]
            },
            "js": {
             "type": [
              "null",
              "number"
             ]
            },
            "css": {
             "type": [
              "null",
              "number"
             ]
            },
            "images": {
             "type": [
              "null",
              "number"
             ]
            },
            "fonts": {
             "type": [
              "null",
              "number"
             ]
            },
            "third_party": {
             "type": [
              "null",
              "number"
             ]
            }
           }
          },
          "desktop": {
           "type": "object",
           "properties": {
            "total": {
             "type": [
              "null",
              "number"
             ]
            },
            "js": {
             "type": [
              "null",
              "number"
             ]
            },
            "css": {
             "type": [
              "null",
              "number"
             ]
            },
            "images": {
             "type": [
              "null",
              "number"
             ]
            },
            "fonts": {
             "type": [
              "null",
              "number"
             ]
            },
            "third_party": {
             "type": [
              "null",
              "number"
             ]
            }
           }
          }
         }
        },
        "tool": {
         "type": "object",
         "properties": {
          "phone": {
           "type": "object",
           "properties": {
            "total": {
             "type": [
              "null",
              "number"
             ]
            },
            "js": {
             "type": [
              "null",
              "number"
             ]
            },
            "css": {
             "type": [
              "null",
              "number"
             ]
            },
            "images": {
             "type": [
              "null",
              "number"
             ]
            },
            "fonts": {
             "type": [
              "null",
              "number"
             ]
            },
            "third_party": {
             "type": [
              "null",
              "number"
             ]
            }
           }
          },
          "desktop": {
           "type": "object",
           "properties": {
            "total": {
             "type": [
              "null",
              "number"
             ]
            },
            "js": {
             "type": [
              "null",
              "number"
             ]
            },
            "css": {
             "type": [
              "null",
              "number"
             ]
            },
            "images": {
             "type": [
              "null",
              "number"
             ]
            },
            "fonts": {
             "type": [
              "null",
              "number"
             ]
            },
            "third_party": {
             "type": [
              "null",
              "number"
             ]
            }
           }
          }
         }
        },
        "data": {
         "type": "object",
         "properties": {
          "phone": {
           "type": "object",
           "properties": {
            "total": {
             "type": [
              "null",
              "number"
             ]
            },
            "js": {
             "type": [
              "null",
              "number"
             ]
            },
            "css": {
             "type": [
              "null",
              "number"
             ]
            },
            "images": {
             "type": [
              "null",
              "number"
             ]
            },
            "fonts": {
             "type": [
              "null",
              "number"
             ]
            },
            "third_party": {
             "type": [
              "null",
              "number"
             ]
            }
           }
          },
          "desktop": {
           "type": "object",
           "properties": {
            "total": {
             "type": [
              "null",
              "number"
             ]
            },
            "js": {
             "type": [
              "null",
              "number"
             ]
            },
            "css": {
             "type": [
              "null",
              "number"
             ]
            },
            "images": {
             "type": [
              "null",
              "number"
             ]
            },
            "fonts": {
             "type": [
              "null",
              "number"
             ]
            },
            "third_party": {
             "type": [
              "null",
              "number"
             ]
            }
           }
          }
         }
        },
        "content": {
         "type": "object",
         "properties": {
          "phone": {
           "type": "object",
           "properties": {
            "total": {
             "type": [
              "null",
              "number"
             ]
            },
            "js": {
             "type": [
              "null",
              "number"
             ]
            },
            "css": {
             "type": [
              "null",
              "number"
             ]
            },
            "images": {
             "type": [
              "null",
              "number"
             ]
            },
            "fonts": {
             "type": [
              "null",
              "number"
             ]
            },
            "third_party": {
             "type": [
              "null",
              "number"
             ]
            }
           }
          },
          "desktop": {
           "type": "object",
           "properties": {
            "total": {
             "type": [
              "null",
              "number"
             ]
            },
            "js": {
             "type": [
              "null",
              "number"
             ]
            },
            "css": {
             "type": [
              "null",
              "number"
             ]
            },
            "images": {
             "type": [
              "null",
              "number"
             ]
            },
            "fonts": {
             "type": [
              "null",
              "number"
             ]
            },
            "third_party": {
             "type": [
              "null",
              "number"
             ]
            }
           }
          }
         }
        },
        "project": {
         "type": "object",
         "properties": {
          "phone": {
           "type": "object",
           "properties": {
            "total": {
             "type": [
              "null",
              "number"
             ]
            },
            "js": {
             "type": [
              "null",
              "number"
             ]
            },
            "css": {
             "type": [
              "null",
              "number"
             ]
            },
            "images": {
             "type": [
              "null",
              "number"
             ]
            },
            "fonts": {
             "type": [
              "null",
              "number"
             ]
            },
            "third_party": {
             "type": [
              "null",
              "number"
             ]
            }
           }
          },
          "desktop": {
           "type": "object",
           "properties": {
            "total": {
             "type": [
              "null",
              "number"
             ]
            },
            "js": {
             "type": [
              "null",
              "number"
             ]
            },
            "css": {
             "type": [
              "null",
              "number"
             ]
            },
            "images": {
             "type": [
              "null",
              "number"
             ]
            },
            "fonts": {
             "type": [
              "null",
              "number"
             ]
            },
            "third_party": {
             "type": [
              "null",
              "number"
             ]
            }
           }
          }
         }
        }
       }
      },
      "note": {
       "type": "string"
      }
     }
    },
    "ok": {
     "type": "boolean"
    },
    "breaches": {
     "type": "array"
    },
    "pages": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "page": {
        "type": [
         "null",
         "string"
        ]
       },
       "view": {
        "type": [
         "null",
         "string"
        ]
       },
       "width": {
        "type": [
         "null",
         "number"
        ]
       },
       "type": {
        "type": [
         "null",
         "string"
        ]
       },
       "status": {
        "type": [
         "null",
         "number"
        ]
       },
       "total": {
        "type": [
         "null",
         "number"
        ]
       },
       "requests": {
        "type": [
         "null",
         "number"
        ]
       },
       "by_type": {
        "type": "object",
        "properties": {
         "html": {
          "type": [
           "null",
           "number"
          ]
         },
         "css": {
          "type": [
           "null",
           "number"
          ]
         },
         "js": {
          "type": [
           "null",
           "number"
          ]
         },
         "images": {
          "type": [
           "null",
           "number"
          ]
         },
         "fonts": {
          "type": [
           "null",
           "number"
          ]
         },
         "other": {
          "type": [
           "null",
           "number"
          ]
         },
         "third_party": {
          "type": [
           "null",
           "number"
          ]
         }
        }
       },
       "third_party_hosts": {
        "type": "object",
        "properties": {
         "static.cloudflareinsights.com": {
          "type": [
           "null",
           "number"
          ]
         },
         "oykcsmextclpdnugixqz.supabase.co": {
          "type": [
           "null",
           "number"
          ]
         },
         "kolaboro.com/cdn-cgi": {
          "type": [
           "null",
           "number"
          ]
         },
         "www.clarity.ms": {
          "type": [
           "null",
           "number"
          ]
         },
         "scripts.clarity.ms": {
          "type": [
           "null",
           "number"
          ]
         },
         "j.clarity.ms": {
          "type": [
           "null",
           "number"
          ]
         },
         "c.clarity.ms": {
          "type": [
           "null",
           "number"
          ]
         },
         "www.googletagmanager.com": {
          "type": [
           "null",
           "number"
          ]
         },
         "u.clarity.ms": {
          "type": [
           "null",
           "number"
          ]
         },
         "g.clarity.ms": {
          "type": [
           "null",
           "number"
          ]
         },
         "a.clarity.ms": {
          "type": [
           "null",
           "number"
          ]
         },
         "q.clarity.ms": {
          "type": [
           "null",
           "number"
          ]
         },
         "p.clarity.ms": {
          "type": [
           "null",
           "number"
          ]
         },
         "i.clarity.ms": {
          "type": [
           "null",
           "number"
          ]
         },
         "s.clarity.ms": {
          "type": [
           "null",
           "number"
          ]
         },
         "cdnjs.cloudflare.com": {
          "type": [
           "null",
           "number"
          ]
         },
         "server.arcgisonline.com": {
          "type": [
           "null",
           "number"
          ]
         },
         "o.clarity.ms": {
          "type": [
           "null",
           "number"
          ]
         },
         "n.clarity.ms": {
          "type": [
           "null",
           "number"
          ]
         },
         "h.clarity.ms": {
          "type": [
           "null",
           "number"
          ]
         },
         "b.clarity.ms": {
          "type": [
           "null",
           "number"
          ]
         },
         "k.clarity.ms": {
          "type": [
           "null",
           "number"
          ]
         },
         "r.clarity.ms": {
          "type": [
           "null",
           "number"
          ]
         },
         "t.clarity.ms": {
          "type": [
           "null",
           "number"
          ]
         },
         "l.clarity.ms": {
          "type": [
           "null",
           "number"
          ]
         }
        }
       },
       "budget": {
        "type": "object",
        "properties": {
         "total": {
          "type": [
           "null",
           "number"
          ]
         },
         "js": {
          "type": [
           "null",
           "number"
          ]
         },
         "css": {
          "type": [
           "null",
           "number"
          ]
         },
         "images": {
          "type": [
           "null",
           "number"
          ]
         },
         "fonts": {
          "type": [
           "null",
           "number"
          ]
         },
         "third_party": {
          "type": [
           "null",
           "number"
          ]
         }
        }
       },
       "over": {
        "type": "array"
       }
      },
      "required": [
       "budget",
       "by_type",
       "over",
       "page",
       "requests",
       "status",
       "third_party_hosts",
       "total",
       "type",
       "view",
       "width"
      ]
     }
    },
    "errors": {
     "type": "array"
    }
   },
   "required": [
    "base",
    "breaches",
    "budgets",
    "errors",
    "method",
    "ok",
    "pages",
    "updated"
   ]
  },
  "price-index": {
   "title": "Asking-price index",
   "description": "Contract of https://kolaboro.com/data/price-index.json. Chained index of advertised asking prices (\"from\" prices on developer and listing pages) per market, with daily snapshots, rules and caveats. Not transaction prices.",
   "type": "object",
   "properties": {
    "version": {
     "type": "string"
    },
    "generated": {
     "type": "string"
    },
    "history_starts": {
     "type": "string"
    },
    "snapshots": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "date": {
        "type": [
         "null",
         "string"
        ]
       },
       "projects_in_snapshot": {
        "type": [
         "null",
         "number"
        ]
       },
       "observed_with_price": {
        "type": [
         "null",
         "number"
        ]
       }
      },
      "required": [
       "date",
       "observed_with_price",
       "projects_in_snapshot"
      ]
     }
    },
    "what": {
     "type": "string"
    },
    "rules": {
     "type": "object",
     "properties": {
      "min_pairs_per_link": {
       "type": "number"
      },
      "max_step_change_pct": {
       "type": "number"
      },
      "formula": {
       "type": "string"
      }
     }
    },
    "caveats": {
     "type": "array",
     "items": {
      "type": "string"
     }
    },
    "all_markets": {
     "type": "object",
     "properties": {
      "index": {
       "type": "array",
       "items": {
        "type": "object",
        "properties": {
         "date": {
          "type": [
           "null",
           "string"
          ]
         },
         "index": {
          "type": [
           "null",
           "number"
          ]
         },
         "pairs": {
          "type": [
           "null",
           "number"
          ]
         }
        }
       }
      },
      "restarted_after_gap_at": {
       "type": "null"
      },
      "pairs_total": {
       "type": "number"
      },
      "links": {
       "type": "array",
       "items": {
        "type": "object",
        "properties": {
         "from": {
          "type": [
           "null",
           "string"
          ]
         },
         "to": {
          "type": [
           "null",
           "string"
          ]
         },
         "pairs": {
          "type": [
           "null",
           "number"
          ]
         },
         "unchanged": {
          "type": [
           "null",
           "number"
          ]
         },
         "up": {
          "type": [
           "null",
           "number"
          ]
         },
         "down": {
          "type": [
           "null",
           "number"
          ]
         },
         "excluded_jump": {
          "type": [
           "null",
           "number"
          ]
         },
         "excluded_currency": {
          "type": [
           "null",
           "number"
          ]
         },
         "changes_pct": {
          "type": "array",
          "items": {
           "type": [
            "null",
            "number"
           ]
          }
         },
         "link": {
          "type": [
           "null",
           "number"
          ]
         },
         "median_change_pct": {
          "type": [
           "null",
           "number"
          ]
         }
        }
       }
      }
     }
    },
    "markets": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "market": {
        "type": [
         "null",
         "string"
        ]
       },
       "pairs_total": {
        "type": [
         "null",
         "number"
        ]
       },
       "changes_total": {
        "type": [
         "null",
         "number"
        ]
       },
       "excluded_total": {
        "type": [
         "null",
         "number"
        ]
       },
       "projects_last": {
        "type": [
         "null",
         "number"
        ]
       },
       "index": {
        "type": "array",
        "items": {
         "type": "object",
         "properties": {
          "date": {
           "type": [
            "null",
            "string"
           ]
          },
          "index": {
           "type": [
            "null",
            "number"
           ]
          },
          "pairs": {
           "type": [
            "null",
            "number"
           ]
          }
         }
        }
       },
       "restarted_after_gap_at": {
        "type": [
         "null",
         "string"
        ]
       },
       "links": {
        "type": "array",
        "items": {
         "type": "object",
         "properties": {
          "from": {
           "type": [
            "null",
            "string"
           ]
          },
          "to": {
           "type": [
            "null",
            "string"
           ]
          },
          "pairs": {
           "type": [
            "null",
            "number"
           ]
          },
          "unchanged": {
           "type": [
            "null",
            "number"
           ]
          },
          "up": {
           "type": [
            "null",
            "number"
           ]
          },
          "down": {
           "type": [
            "null",
            "number"
           ]
          },
          "excluded_jump": {
           "type": [
            "null",
            "number"
           ]
          },
          "excluded_currency": {
           "type": [
            "null",
            "number"
           ]
          },
          "changes_pct": {
           "type": "array",
           "items": {
            "type": [
             "null",
             "number"
            ]
           }
          },
          "link": {
           "type": [
            "null",
            "number"
           ]
          },
          "median_change_pct": {
           "type": [
            "null",
            "number"
           ]
          }
         }
        }
       }
      },
      "required": [
       "changes_total",
       "excluded_total",
       "index",
       "links",
       "market",
       "pairs_total",
       "projects_last",
       "restarted_after_gap_at"
      ]
     }
    },
    "official_reference": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "market": {
        "type": [
         "null",
         "string"
        ]
       },
       "source": {
        "type": [
         "null",
         "string"
        ]
       },
       "url": {
        "type": [
         "null",
         "string"
        ]
       },
       "what": {
        "type": [
         "null",
         "string"
        ]
       },
       "filter": {
        "type": [
         "null",
         "string"
        ]
       },
       "currency": {
        "type": [
         "null",
         "string"
        ]
       },
       "monthly": {
        "type": "array",
        "items": {
         "type": "object",
         "properties": {
          "month": {
           "type": [
            "null",
            "string"
           ]
          },
          "n": {
           "type": [
            "null",
            "number"
           ]
          },
          "median_local": {
           "type": [
            "null",
            "number"
           ]
          }
         }
        }
       }
      },
      "required": [
       "currency",
       "filter",
       "market",
       "monthly",
       "source",
       "url",
       "what"
      ]
     }
    },
    "official_note": {
     "type": "string"
    },
    "inputs": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "file": {
        "type": [
         "null",
         "string"
        ]
       },
       "sha256": {
        "type": [
         "null",
         "string"
        ]
       },
       "bytes": {
        "type": [
         "null",
         "number"
        ]
       }
      },
      "required": [
       "bytes",
       "file",
       "sha256"
      ]
     }
    }
   },
   "required": [
    "all_markets",
    "caveats",
    "generated",
    "history_starts",
    "inputs",
    "markets",
    "official_note",
    "official_reference",
    "rules",
    "snapshots",
    "version",
    "what"
   ]
  },
  "price-reality": {
   "title": "Advertised versus registered prices",
   "description": "Contract of https://kolaboro.com/data/price-reality.json. Advertised starting prices compared with officially registered sales where a government publishes them: counts, quartiles and medians only, converted to USD at a cited rate. Lists the markets not covered.",
   "type": "object",
   "properties": {
    "version": {
     "type": "string"
    },
    "updated": {
     "type": "string"
    },
    "summary": {
     "type": "object",
     "properties": {
      "markets_with_official_data": {
       "type": "number"
      },
      "projects_positioned": {
       "type": "number"
      },
      "projects_total": {
       "type": "number"
      },
      "registered_sales_used": {
       "type": "number"
      },
      "market_comparisons": {
       "type": "number"
      }
     }
    },
    "method": {
     "type": "array",
     "items": {
      "type": "string"
     }
    },
    "fx": {
     "type": "object",
     "properties": {
      "AED": {
       "type": "object",
       "properties": {
        "usd_per_unit": {
         "type": [
          "null",
          "number"
         ]
        },
        "basis": {
         "type": [
          "null",
          "string"
         ]
        },
        "source": {
         "type": [
          "null",
          "string"
         ]
        }
       }
      },
      "EUR": {
       "type": "object",
       "properties": {
        "usd_per_unit": {
         "type": [
          "null",
          "number"
         ]
        },
        "basis": {
         "type": [
          "null",
          "string"
         ]
        },
        "source": {
         "type": [
          "null",
          "string"
         ]
        }
       }
      },
      "GBP": {
       "type": "object",
       "properties": {
        "usd_per_unit": {
         "type": [
          "null",
          "number"
         ]
        },
        "basis": {
         "type": [
          "null",
          "string"
         ]
        },
        "source": {
         "type": [
          "null",
          "string"
         ]
        }
       }
      }
     }
    },
    "inputs": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "source": {
        "type": [
         "null",
         "string"
        ]
       },
       "request": {
        "type": [
         "null",
         "string"
        ]
       },
       "fetched_at": {
        "type": [
         "null",
         "string"
        ]
       },
       "bytes": {
        "type": [
         "null",
         "number"
        ]
       },
       "sha256": {
        "type": [
         "null",
         "string"
        ]
       },
       "rows": {
        "type": [
         "null",
         "number"
        ]
       },
       "last_modified": {
        "type": [
         "null",
         "string"
        ]
       }
      },
      "required": [
       "fetched_at",
       "request",
       "sha256",
       "source"
      ]
     }
    },
    "markets": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "market": {
        "type": [
         "null",
         "string"
        ]
       },
       "official": {
        "type": "object",
        "properties": {
         "source": {
          "type": [
           "null",
           "string"
          ]
         },
         "url": {
          "type": [
           "null",
           "string"
          ]
         },
         "access": {
          "type": [
           "null",
           "string"
          ]
         },
         "licence": {
          "type": [
           "null",
           "string"
          ]
         },
         "filter": {
          "type": [
           "null",
           "string"
          ]
         },
         "area": {
          "type": [
           "null",
           "string"
          ]
         },
         "what_short": {
          "type": [
           "null",
           "string"
          ]
         },
         "period": {
          "type": "array",
          "items": {
           "type": [
            "null",
            "string"
           ]
          }
         },
         "period_text": {
          "type": [
           "null",
           "string"
          ]
         },
         "n": {
          "type": [
           "null",
           "number"
          ]
         },
         "currency": {
          "type": [
           "null",
           "string"
          ]
         },
         "median_local": {
          "type": [
           "null",
           "number"
          ]
         },
         "p25_local": {
          "type": [
           "null",
           "number"
          ]
         },
         "p75_local": {
          "type": [
           "null",
           "number"
          ]
         },
         "median_usd": {
          "type": [
           "null",
           "number"
          ]
         },
         "p25_usd": {
          "type": [
           "null",
           "number"
          ]
         },
         "p75_usd": {
          "type": [
           "null",
           "number"
          ]
         },
         "band_share_pct": {
          "type": "object",
          "properties": {
           "Under $100k": {
            "type": [
             "null",
             "number"
            ]
           },
           "$100k to $200k": {
            "type": [
             "null",
             "number"
            ]
           },
           "$200k to $400k": {
            "type": [
             "null",
             "number"
            ]
           },
           "$400k and up": {
            "type": [
             "null",
             "number"
            ]
           }
          }
         },
         "monthly": {
          "type": "array",
          "items": {
           "type": "object",
           "properties": {
            "month": {
             "type": [
              "null",
              "string"
             ]
            },
            "n": {
             "type": [
              "null",
              "number"
             ]
            },
            "median_local": {
             "type": [
              "null",
              "number"
             ]
            }
           }
          }
         },
         "period_short": {
          "type": [
           "null",
           "string"
          ]
         }
        }
       },
       "advertised": {
        "type": "object",
        "properties": {
         "n_known": {
          "type": [
           "null",
           "number"
          ]
         },
         "projects": {
          "type": [
           "null",
           "number"
          ]
         },
         "median_usd": {
          "type": [
           "null",
           "number"
          ]
         },
         "what": {
          "type": [
           "null",
           "string"
          ]
         }
        }
       },
       "comparison": {
        "type": [
         "null",
         "object"
        ],
        "properties": {
         "pct": {
          "type": [
           "null",
           "number"
          ]
         },
         "advertised_percentile": {
          "type": [
           "null",
           "number"
          ]
         },
         "text": {
          "type": [
           "null",
           "string"
          ]
         }
        }
       },
       "projects": {
        "type": "array",
        "items": {
         "type": "object",
         "properties": {
          "id": {
           "type": [
            "null",
            "string"
           ]
          },
          "band": {
           "type": [
            "null",
            "string"
           ]
          },
          "share_of_registered_in_band_pct": {
           "type": [
            "null",
            "number"
           ]
          },
          "percentile_from": {
           "type": [
            "null",
            "number"
           ]
          },
          "percentile_to": {
           "type": [
            "null",
            "number"
           ]
          },
          "text": {
           "type": [
            "null",
            "string"
           ]
          },
          "per_m2": {
           "type": "object",
           "properties": {
            "status": {
             "type": [
              "null",
              "string"
             ]
            },
            "pct_vs_area_median": {
             "type": [
              "null",
              "number"
             ]
            },
            "percentile_in_area": {
             "type": [
              "null",
              "number"
             ]
            },
            "area_sales": {
             "type": [
              "null",
              "string"
             ]
            },
            "text": {
             "type": [
              "null",
              "string"
             ]
            },
            "why": {
             "type": [
              "null",
              "string"
             ]
            }
           }
          }
         }
        }
       },
       "per_m2": {
        "type": "object",
        "properties": {
         "what": {
          "type": [
           "null",
           "string"
          ]
         },
         "currency": {
          "type": [
           "null",
           "string"
          ]
         },
         "all": {
          "type": "object",
          "properties": {
           "n": {
            "type": [
             "null",
             "number"
            ]
           },
           "median_local": {
            "type": [
             "null",
             "number"
            ]
           },
           "median_usd": {
            "type": [
             "null",
             "number"
            ]
           }
          }
         },
         "areas": {
          "type": "array",
          "items": {
           "type": "object",
           "properties": {
            "area": {
             "type": [
              "null",
              "string"
             ]
            },
            "n": {
             "type": [
              "null",
              "number"
             ]
            },
            "median_local": {
             "type": [
              "null",
              "number"
             ]
            },
            "p25_local": {
             "type": [
              "null",
              "number"
             ]
            },
            "p75_local": {
             "type": [
              "null",
              "number"
             ]
            },
            "median_usd": {
             "type": [
              "null",
              "number"
             ]
            }
           }
          }
         },
         "advertised_side": {
          "type": [
           "null",
           "string"
          ]
         },
         "projects_compared": {
          "type": [
           "null",
           "number"
          ]
         },
         "median_pct_vs_area": {
          "type": [
           "null",
           "number"
          ]
         },
         "above_area_median": {
          "type": [
           "null",
           "number"
          ]
         }
        }
       },
       "comparison_withheld": {
        "type": [
         "null",
         "string"
        ]
       }
      },
      "required": [
       "advertised",
       "comparison",
       "market",
       "official",
       "projects"
      ]
     }
    },
    "not_covered": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "market": {
        "type": [
         "null",
         "string"
        ]
       },
       "projects": {
        "type": [
         "null",
         "number"
        ]
       },
       "note": {
        "type": [
         "null",
         "string"
        ]
       }
      },
      "required": [
       "market",
       "note",
       "projects"
      ]
     }
    },
    "inputs_sha256": {
     "type": "string"
    }
   },
   "required": [
    "fx",
    "inputs",
    "inputs_sha256",
    "markets",
    "method",
    "not_covered",
    "summary",
    "updated",
    "version"
   ]
  },
  "progress-sample": {
   "title": "Sample photo progress analysis",
   "description": "Contract of https://kolaboro.com/data/progress-sample.json. One stored example answer of the photo progress check, used on the demo page.",
   "type": "object",
   "properties": {
    "analysed": {
     "type": "string"
    },
    "photos": {
     "type": "number"
    },
    "plan": {
     "type": "boolean"
    },
    "paid_pct": {
     "type": "number"
    },
    "progress": {
     "type": "object",
     "properties": {
      "observed_stage": {
       "type": "string"
      },
      "built_pct": {
       "type": "number"
      },
      "confidence": {
       "type": "string"
      },
      "elements": {
       "type": "array",
       "items": {
        "type": "object",
        "properties": {
         "item": {
          "type": [
           "null",
           "string"
          ]
         },
         "expected": {
          "type": [
           "null",
           "string"
          ]
         },
         "observed": {
          "type": [
           "null",
           "string"
          ]
         },
         "status": {
          "type": [
           "null",
           "string"
          ]
         }
        }
       }
      },
      "discrepancies": {
       "type": "array",
       "items": {
        "type": [
         "null",
         "string"
        ]
       }
      },
      "pay_signal": {
       "type": "string"
      },
      "retake": {
       "type": "array",
       "items": {
        "type": [
         "null",
         "string"
        ]
       }
      },
      "summary": {
       "type": "string"
      }
     }
    },
    "cached": {
     "type": "boolean"
    }
   },
   "required": [
    "analysed",
    "cached",
    "paid_pct",
    "photos",
    "plan",
    "progress"
   ]
  },
  "projects-sample": {
   "title": "Fictional sample score",
   "description": "Contract of https://kolaboro.com/data/projects.json. One fictional project (marked fictional: true) used to demonstrate the score page. Not real data.",
   "type": "object",
   "properties": {
    "updated": {
     "type": "string"
    },
    "projects": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "slug": {
        "type": [
         "null",
         "string"
        ]
       },
       "name": {
        "type": [
         "null",
         "string"
        ]
       },
       "place": {
        "type": [
         "null",
         "string"
        ]
       },
       "developer": {
        "type": [
         "null",
         "string"
        ]
       },
       "score": {
        "type": [
         "null",
         "number"
        ]
       },
       "verified": {
        "type": [
         "null",
         "string"
        ]
       },
       "fictional": {
        "type": [
         "boolean",
         "null"
        ]
       },
       "url": {
        "type": [
         "null",
         "string"
        ]
       },
       "checks": {
        "type": "array",
        "items": {
         "type": "object",
         "properties": {
          "name": {
           "type": [
            "null",
            "string"
           ]
          },
          "weight": {
           "type": [
            "null",
            "number"
           ]
          },
          "score": {
           "type": [
            "null",
            "number"
           ]
          },
          "reason": {
           "type": [
            "null",
            "string"
           ]
          },
          "evidence": {
           "type": [
            "null",
            "string"
           ]
          },
          "verified": {
           "type": [
            "null",
            "string"
           ]
          }
         }
        }
       }
      },
      "required": [
       "checks",
       "developer",
       "fictional",
       "name",
       "place",
       "score",
       "slug",
       "url",
       "verified"
      ]
     }
    }
   },
   "required": [
    "projects",
    "updated"
   ]
  },
  "promise-drift": {
   "title": "Promise drift on developer pages",
   "description": "Contract of https://kolaboro.com/data/promise-drift.json. Day by day, which advertised values changed on each tracked developer page (handover date, prices, units and other fields), from fingerprinted page text. No URLs or names.",
   "type": "object",
   "properties": {
    "updated": {
     "type": "string"
    },
    "days": {
     "type": "array",
     "items": {
      "type": "string"
     }
    },
    "first_day": {
     "type": "string"
    },
    "fields": {
     "type": "array",
     "items": {
      "type": "string"
     }
    },
    "not_tracked_daily": {
     "type": "array",
     "items": {
      "type": "string"
     }
    },
    "method": {
     "type": "string"
    },
    "counts": {
     "type": "object",
     "properties": {
      "projects": {
       "type": "number"
      },
      "with_changes": {
       "type": "number"
      },
      "changes": {
       "type": "number"
      }
     }
    },
    "projects": {
     "type": "object",
     "additionalProperties": {
      "type": "object",
      "properties": {
       "copies": {
        "type": [
         "null",
         "number"
        ]
       },
       "first": {
        "type": [
         "null",
         "string"
        ]
       },
       "last": {
        "type": [
         "null",
         "string"
        ]
       },
       "versions": {
        "type": [
         "null",
         "number"
        ]
       },
       "changes": {
        "type": "array",
        "items": {
         "type": "object",
         "properties": {
          "f": {
           "type": [
            "null",
            "string"
           ]
          },
          "label": {
           "type": [
            "null",
            "string"
           ]
          },
          "first_seen": {
           "type": [
            "null",
            "string"
           ]
          },
          "last_seen": {
           "type": [
            "null",
            "string"
           ]
          },
          "was_first": {
           "type": [
            "null",
            "string"
           ]
          },
          "was_last": {
           "type": [
            "null",
            "string"
           ]
          },
          "sha_from": {
           "type": [
            "null",
            "string"
           ]
          },
          "sha_to": {
           "type": [
            "null",
            "string"
           ]
          },
          "from": {
           "type": [
            "boolean",
            "null",
            "number",
            "string"
           ]
          },
          "to": {
           "type": [
            "boolean",
            "null",
            "number",
            "string"
           ]
          },
          "reverted": {
           "type": [
            "boolean",
            "null"
           ]
          },
          "pct": {
           "type": [
            "null",
            "number"
           ]
          }
         }
        }
       }
      },
      "required": [
       "changes",
       "copies",
       "first",
       "last",
       "versions"
      ]
     }
    }
   },
   "required": [
    "counts",
    "days",
    "fields",
    "first_day",
    "method",
    "not_tracked_daily",
    "projects",
    "updated"
   ]
  },
  "promises": {
   "title": "Dated developer promises",
   "description": "Contract of https://kolaboro.com/data/promises.json. Every dated promise a developer made about a tracked project (handover, construction start, structure, other milestones, permits, rental programme), read from the research records, with its status today. Per project and per market.",
   "type": "object",
   "properties": {
    "updated": {
     "type": "string"
    },
    "version": {
     "type": "string"
    },
    "method": {
     "type": "string"
    },
    "statuses": {
     "type": "object",
     "properties": {
      "kept": {
       "type": "string"
      },
      "broken": {
       "type": "string"
      },
      "moved": {
       "type": "string"
      },
      "pending": {
       "type": "string"
      },
      "unknown": {
       "type": "string"
      }
     }
    },
    "kinds": {
     "type": "object",
     "properties": {
      "handover": {
       "type": "string"
      },
      "construction_start": {
       "type": "string"
      },
      "structure": {
       "type": "string"
      },
      "milestone": {
       "type": "string"
      },
      "permit": {
       "type": "string"
      },
      "rental": {
       "type": "string"
      }
     }
    },
    "sources": {
     "type": "object",
     "properties": {
      "research_records": {
       "type": "number"
      },
      "page_copies": {
       "type": "number"
      },
      "page_copies_without_text": {
       "type": "number"
      },
      "texts_read": {
       "type": "number"
      },
      "texts_not_read_yet": {
       "type": "number"
      },
      "days": {
       "type": "array",
       "items": {
        "type": [
         "null",
         "string"
        ]
       }
      }
     }
    },
    "checks": {
     "type": "object",
     "properties": {
      "rejected": {
       "type": "object",
       "properties": {
        "no_quote": {
         "type": [
          "null",
          "number"
         ]
        },
        "quote_not_found": {
         "type": [
          "null",
          "number"
         ]
        },
        "year_not_in_quote": {
         "type": [
          "null",
          "number"
         ]
        },
        "bad_date": {
         "type": [
          "null",
          "number"
         ]
        },
        "bad_kind": {
         "type": [
          "null",
          "number"
         ]
        },
        "unknown_source": {
         "type": [
          "null",
          "number"
         ]
        }
       }
      },
      "date_conflicts": {
       "type": "number"
      }
     }
    },
    "spend": {
     "type": "object",
     "properties": {
      "this_run_usd": {
       "type": "number"
      },
      "total_usd": {
       "type": "number"
      },
      "cap_usd": {
       "type": "number"
      },
      "runs": {
       "type": "number"
      },
      "models": {
       "type": "array",
       "items": {
        "type": [
         "null",
         "string"
        ]
       }
      },
      "note": {
       "type": "string"
      }
     }
    },
    "counts": {
     "type": "object",
     "properties": {
      "kept": {
       "type": "number"
      },
      "broken": {
       "type": "number"
      },
      "moved": {
       "type": "number"
      },
      "pending": {
       "type": "number"
      },
      "unknown": {
       "type": "number"
      },
      "promises": {
       "type": "number"
      },
      "moved_ever": {
       "type": "number"
      },
      "moves": {
       "type": "number"
      },
      "months_moved_median": {
       "type": "number"
      },
      "months_moved_total": {
       "type": "number"
      },
      "projects": {
       "type": "number"
      },
      "projects_tracked": {
       "type": "number"
      }
     }
    },
    "kinds_totals": {
     "type": "object",
     "properties": {
      "handover": {
       "type": "object",
       "properties": {
        "kept": {
         "type": [
          "null",
          "number"
         ]
        },
        "broken": {
         "type": [
          "null",
          "number"
         ]
        },
        "moved": {
         "type": [
          "null",
          "number"
         ]
        },
        "pending": {
         "type": [
          "null",
          "number"
         ]
        },
        "unknown": {
         "type": [
          "null",
          "number"
         ]
        },
        "promises": {
         "type": [
          "null",
          "number"
         ]
        },
        "moved_ever": {
         "type": [
          "null",
          "number"
         ]
        },
        "moves": {
         "type": [
          "null",
          "number"
         ]
        },
        "months_moved_median": {
         "type": [
          "null",
          "number"
         ]
        },
        "months_moved_total": {
         "type": [
          "null",
          "number"
         ]
        }
       }
      },
      "construction_start": {
       "type": "object",
       "properties": {
        "kept": {
         "type": [
          "null",
          "number"
         ]
        },
        "broken": {
         "type": [
          "null",
          "number"
         ]
        },
        "moved": {
         "type": [
          "null",
          "number"
         ]
        },
        "pending": {
         "type": [
          "null",
          "number"
         ]
        },
        "unknown": {
         "type": [
          "null",
          "number"
         ]
        },
        "promises": {
         "type": [
          "null",
          "number"
         ]
        },
        "moved_ever": {
         "type": [
          "null",
          "number"
         ]
        },
        "moves": {
         "type": [
          "null",
          "number"
         ]
        },
        "months_moved_median": {
         "type": [
          "null",
          "number"
         ]
        },
        "months_moved_total": {
         "type": [
          "null",
          "number"
         ]
        }
       }
      },
      "structure": {
       "type": "object",
       "properties": {
        "kept": {
         "type": [
          "null",
          "number"
         ]
        },
        "broken": {
         "type": [
          "null",
          "number"
         ]
        },
        "moved": {
         "type": [
          "null",
          "number"
         ]
        },
        "pending": {
         "type": [
          "null",
          "number"
         ]
        },
        "unknown": {
         "type": [
          "null",
          "number"
         ]
        },
        "promises": {
         "type": [
          "null",
          "number"
         ]
        },
        "moved_ever": {
         "type": [
          "null",
          "number"
         ]
        },
        "moves": {
         "type": [
          "null",
          "number"
         ]
        },
        "months_moved_median": {
         "type": "null"
        },
        "months_moved_total": {
         "type": [
          "null",
          "number"
         ]
        }
       }
      },
      "milestone": {
       "type": "object",
       "properties": {
        "kept": {
         "type": [
          "null",
          "number"
         ]
        },
        "broken": {
         "type": [
          "null",
          "number"
         ]
        },
        "moved": {
         "type": [
          "null",
          "number"
         ]
        },
        "pending": {
         "type": [
          "null",
          "number"
         ]
        },
        "unknown": {
         "type": [
          "null",
          "number"
         ]
        },
        "promises": {
         "type": [
          "null",
          "number"
         ]
        },
        "moved_ever": {
         "type": [
          "null",
          "number"
         ]
        },
        "moves": {
         "type": [
          "null",
          "number"
         ]
        },
        "months_moved_median": {
         "type": [
          "null",
          "number"
         ]
        },
        "months_moved_total": {
         "type": [
          "null",
          "number"
         ]
        }
       }
      },
      "permit": {
       "type": "object",
       "properties": {
        "kept": {
         "type": [
          "null",
          "number"
         ]
        },
        "broken": {
         "type": [
          "null",
          "number"
         ]
        },
        "moved": {
         "type": [
          "null",
          "number"
         ]
        },
        "pending": {
         "type": [
          "null",
          "number"
         ]
        },
        "unknown": {
         "type": [
          "null",
          "number"
         ]
        },
        "promises": {
         "type": [
          "null",
          "number"
         ]
        },
        "moved_ever": {
         "type": [
          "null",
          "number"
         ]
        },
        "moves": {
         "type": [
          "null",
          "number"
         ]
        },
        "months_moved_median": {
         "type": "null"
        },
        "months_moved_total": {
         "type": [
          "null",
          "number"
         ]
        }
       }
      },
      "rental": {
       "type": "object",
       "properties": {
        "kept": {
         "type": [
          "null",
          "number"
         ]
        },
        "broken": {
         "type": [
          "null",
          "number"
         ]
        },
        "moved": {
         "type": [
          "null",
          "number"
         ]
        },
        "pending": {
         "type": [
          "null",
          "number"
         ]
        },
        "unknown": {
         "type": [
          "null",
          "number"
         ]
        },
        "promises": {
         "type": [
          "null",
          "number"
         ]
        },
        "moved_ever": {
         "type": [
          "null",
          "number"
         ]
        },
        "moves": {
         "type": [
          "null",
          "number"
         ]
        },
        "months_moved_median": {
         "type": [
          "null",
          "number"
         ]
        },
        "months_moved_total": {
         "type": [
          "null",
          "number"
         ]
        }
       }
      }
     }
    },
    "markets": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "kept": {
        "type": [
         "null",
         "number"
        ]
       },
       "broken": {
        "type": [
         "null",
         "number"
        ]
       },
       "moved": {
        "type": [
         "null",
         "number"
        ]
       },
       "pending": {
        "type": [
         "null",
         "number"
        ]
       },
       "unknown": {
        "type": [
         "null",
         "number"
        ]
       },
       "promises": {
        "type": [
         "null",
         "number"
        ]
       },
       "moved_ever": {
        "type": [
         "null",
         "number"
        ]
       },
       "moves": {
        "type": [
         "null",
         "number"
        ]
       },
       "months_moved_median": {
        "type": [
         "null",
         "number"
        ]
       },
       "months_moved_total": {
        "type": [
         "null",
         "number"
        ]
       },
       "market": {
        "type": [
         "null",
         "string"
        ]
       },
       "projects": {
        "type": [
         "null",
         "number"
        ]
       }
      },
      "required": [
       "broken",
       "kept",
       "market",
       "months_moved_median",
       "months_moved_total",
       "moved",
       "moved_ever",
       "moves",
       "pending",
       "projects",
       "promises",
       "unknown"
      ]
     }
    },
    "projects": {
     "type": "object",
     "additionalProperties": {
      "type": "array",
      "items": {
       "type": "object",
       "properties": {
        "k": {
         "type": [
          "null",
          "string"
         ]
        },
        "d": {
         "type": [
          "null",
          "string"
         ]
        },
        "st": {
         "type": [
          "null",
          "string"
         ]
        },
        "mv": {
         "type": [
          "null",
          "number"
         ]
        },
        "mm": {
         "type": [
          "null",
          "number"
         ]
        },
        "src": {
         "type": [
          "null",
          "string"
         ]
        },
        "seen": {
         "type": [
          "null",
          "string"
         ]
        },
        "q": {
         "type": [
          "null",
          "string"
         ]
        },
        "hist": {
         "type": "array",
         "items": {
          "type": "object",
          "properties": {
           "d": {
            "type": [
             "null",
             "string"
            ]
           },
           "q": {
            "type": [
             "null",
             "string"
            ]
           },
           "seen": {
            "type": [
             "null",
             "string"
            ]
           },
           "src": {
            "type": [
             "null",
             "string"
            ]
           },
           "sha": {
            "type": [
             "null",
             "string"
            ]
           },
           "last": {
            "type": [
             "null",
             "string"
            ]
           },
           "note": {
            "type": [
             "null",
             "string"
            ]
           }
          }
         }
        },
        "sha": {
         "type": [
          "null",
          "string"
         ]
        },
        "rd": {
         "type": [
          "null",
          "string"
         ]
        },
        "ev": {
         "type": "object",
         "properties": {
          "src": {
           "type": [
            "null",
            "string"
           ]
          },
          "seen": {
           "type": [
            "null",
            "string"
           ]
          },
          "what": {
           "type": [
            "null",
            "string"
           ]
          }
         }
        }
       }
      }
     }
    }
   },
   "required": [
    "checks",
    "counts",
    "kinds",
    "kinds_totals",
    "markets",
    "method",
    "projects",
    "sources",
    "spend",
    "statuses",
    "updated",
    "version"
   ]
  },
  "property-tests": {
   "title": "Property-based tests of the scoring rules",
   "description": "Contract of https://kolaboro.com/data/property-tests.json. Property-based tests and fuzzing of the open scoring rules, counted by the test run itself.",
   "type": "object",
   "properties": {
    "about": {
     "type": "string"
    },
    "generated": {
     "type": "string"
    },
    "commit": {
     "type": "string"
    },
    "run_url": {
     "type": "null"
    },
    "runner": {
     "type": "string"
    },
    "files_tested": {
     "type": "object",
     "properties": {
      "open/scoring.py": {
       "type": "string"
      },
      "p/whatif.js": {
       "type": "string"
      },
      "transparency-index/ti-core.js": {
       "type": "string"
      }
     }
    },
    "engines": {
     "type": "array",
     "items": {
      "type": "string"
     }
    },
    "seed_javascript": {
     "type": "number"
    },
    "cases_total": {
     "type": "number"
    },
    "properties_total": {
     "type": "number"
    },
    "properties_passed": {
     "type": "number"
    },
    "known_issues": {
     "type": "array"
    },
    "passed": {
     "type": "boolean"
    },
    "mutation": {
     "type": "object",
     "properties": {
      "mutants": {
       "type": "array",
       "items": {
        "type": "object",
        "properties": {
         "mutant": {
          "type": [
           "null",
           "string"
          ]
         },
         "caught": {
          "type": [
           "boolean",
           "null"
          ]
         },
         "by": {
          "type": "array",
          "items": {
           "type": [
            "null",
            "string"
           ]
          }
         }
        }
       }
      },
      "caught": {
       "type": "number"
      },
      "total": {
       "type": "number"
      },
      "examples_per_property": {
       "type": "number"
      }
     }
    },
    "properties": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "suite": {
        "type": [
         "null",
         "string"
        ]
       },
       "id": {
        "type": [
         "null",
         "string"
        ]
       },
       "property": {
        "type": [
         "null",
         "string"
        ]
       },
       "cases": {
        "type": [
         "null",
         "number"
        ]
       },
       "passed": {
        "type": [
         "boolean",
         "null"
        ]
       },
       "known_issue": {
        "type": "null"
       },
       "mismatches": {
        "type": [
         "null",
         "number"
        ]
       },
       "counterexample": {
        "type": "null"
       }
      },
      "required": [
       "cases",
       "counterexample",
       "id",
       "known_issue",
       "mismatches",
       "passed",
       "property",
       "suite"
      ]
     }
    }
   },
   "required": [
    "about",
    "cases_total",
    "commit",
    "engines",
    "files_tested",
    "generated",
    "known_issues",
    "mutation",
    "passed",
    "properties",
    "properties_passed",
    "properties_total",
    "run_url",
    "runner",
    "seed_javascript"
   ]
  },
  "qa": {
   "title": "Site QA crawl",
   "description": "Contract of https://kolaboro.com/data/qa.json. Daily crawl of every page and link with the checks that ran and any problems found.",
   "type": "object",
   "properties": {
    "date": {
     "type": "string"
    },
    "ok": {
     "type": "boolean"
    },
    "pages": {
     "type": "number"
    },
    "links": {
     "type": "number"
    },
    "checks": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "name": {
        "type": [
         "null",
         "string"
        ]
       },
       "ok": {
        "type": [
         "boolean",
         "null"
        ]
       },
       "detail": {
        "type": [
         "null",
         "string"
        ]
       }
      },
      "required": [
       "detail",
       "name",
       "ok"
      ]
     }
    },
    "problems": {
     "type": "array"
    }
   },
   "required": [
    "checks",
    "date",
    "links",
    "ok",
    "pages",
    "problems"
   ]
  },
  "register-checks": {
   "title": "Official register checks",
   "description": "Contract of https://kolaboro.com/data/register-checks.json. Every official register linked on /registers/: whether our checker could read it (time, HTTP status, size and SHA-256 of the bytes received), and per project the register result, with a hash-chained lookup archive.",
   "type": "object",
   "properties": {
    "version": {
     "type": "string"
    },
    "updated": {
     "type": "string"
    },
    "summary": {
     "type": "object",
     "properties": {
      "registers": {
       "type": "number"
      },
      "by_automation": {
       "type": "object",
       "properties": {
        "browser only": {
         "type": [
          "null",
          "number"
         ]
        },
        "manual search form": {
         "type": [
          "null",
          "number"
         ]
        },
        "no official online register": {
         "type": [
          "null",
          "number"
         ]
        },
        "automated": {
         "type": [
          "null",
          "number"
         ]
        }
       }
      },
      "projects_with_register_result": {
       "type": "number"
      },
      "automated_project_checks": {
       "type": "number"
      },
      "archived_responses": {
       "type": "number"
      }
     }
    },
    "method": {
     "type": "array",
     "items": {
      "type": "string"
     }
    },
    "archive_root": {
     "type": "string"
    },
    "archive_lines": {
     "type": "number"
    },
    "registers": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "market_id": {
        "type": [
         "null",
         "string"
        ]
       },
       "market": {
        "type": [
         "null",
         "string"
        ]
       },
       "register": {
        "type": [
         "null",
         "string"
        ]
       },
       "checks": {
        "type": "array",
        "items": {
         "type": [
          "null",
          "string"
         ]
        }
       },
       "url": {
        "type": [
         "null",
         "string"
        ]
       },
       "probed_at": {
        "type": [
         "null",
         "string"
        ]
       },
       "robots": {
        "type": [
         "null",
         "string"
        ]
       },
       "http": {
        "type": [
         "null",
         "number"
        ]
       },
       "final_url": {
        "type": [
         "null",
         "string"
        ]
       },
       "content_type": {
        "type": [
         "null",
         "string"
        ]
       },
       "bytes": {
        "type": [
         "null",
         "number"
        ]
       },
       "sha256": {
        "type": [
         "null",
         "string"
        ]
       },
       "result": {
        "type": [
         "null",
         "string"
        ]
       },
       "automation": {
        "type": [
         "null",
         "string"
        ]
       },
       "lookup": {
        "type": "object",
        "properties": {
         "id": {
          "type": [
           "null",
           "string"
          ]
         },
         "by": {
          "type": [
           "null",
           "string"
          ]
         },
         "how": {
          "type": [
           "null",
           "string"
          ]
         }
        }
       }
      },
      "required": [
       "automation",
       "checks",
       "market",
       "market_id",
       "probed_at",
       "register",
       "result",
       "robots",
       "url"
      ]
     }
    },
    "projects": {
     "type": "object",
     "additionalProperties": {
      "type": "object",
      "properties": {
       "market": {
        "type": [
         "null",
         "string"
        ]
       },
       "register": {
        "type": [
         "null",
         "string"
        ]
       },
       "item": {
        "type": [
         "null",
         "string"
        ]
       },
       "status": {
        "type": [
         "null",
         "string"
        ]
       },
       "checked": {
        "type": [
         "null",
         "string"
        ]
       },
       "archived": {
        "type": [
         "boolean",
         "null"
        ]
       },
       "note": {
        "type": [
         "null",
         "string"
        ]
       },
       "companies": {
        "type": "array",
        "items": {
         "type": "object",
         "properties": {
          "role": {
           "type": [
            "null",
            "string"
           ]
          },
          "status": {
           "type": [
            "null",
            "string"
           ]
          },
          "incorporated_year": {
           "type": [
            "null",
            "string"
           ]
          },
          "type": {
           "type": [
            "null",
            "string"
           ]
          }
         }
        }
       }
      },
      "required": [
       "archived",
       "checked",
       "item",
       "market",
       "note",
       "register",
       "status"
      ]
     },
     "propertyNames": {
      "pattern": "^[A-Z]{2,6}-\\d{2,4}$"
     }
    },
    "lookup_archive": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "register": {
        "type": [
         "null",
         "string"
        ]
       },
       "fetched_at": {
        "type": [
         "null",
         "string"
        ]
       },
       "http": {
        "type": [
         "null",
         "number"
        ]
       },
       "bytes": {
        "type": [
         "null",
         "number"
        ]
       },
       "sha256": {
        "type": [
         "null",
         "string"
        ]
       }
      },
      "required": [
       "bytes",
       "fetched_at",
       "http",
       "register",
       "sha256"
      ]
     }
    }
   },
   "required": [
    "archive_lines",
    "archive_root",
    "lookup_archive",
    "method",
    "projects",
    "registers",
    "summary",
    "updated",
    "version"
   ]
  },
  "render-reuse": {
   "title": "Reused renders across projects",
   "description": "Contract of https://kolaboro.com/data/render-reuse.json. Pairs of images that appear on the pages of two different tracked projects on different domains (CLIP image embeddings, cosine 0.85 or more, confirmed by feature matching), with what was excluded and why.",
   "type": "object",
   "properties": {
    "generated": {
     "type": "string"
    },
    "model": {
     "type": "string"
    },
    "threshold": {
     "type": "number"
    },
    "min_orb_inliers": {
     "type": "number"
    },
    "images_checked": {
     "type": "number"
    },
    "projects_checked": {
     "type": "number"
    },
    "projects_tracked": {
     "type": "number"
    },
    "limits": {
     "type": "object",
     "properties": {
      "images_per_project": {
       "type": "number"
      },
      "min_side_px": {
       "type": "number"
      },
      "download_time_budget_s": {
       "type": "number"
      },
      "download_budget_hit": {
       "type": "boolean"
      },
      "embedding_deadline_s": {
       "type": "number"
      },
      "embedding_budget_hit": {
       "type": "boolean"
      },
      "max_pairs": {
       "type": "number"
      }
     }
    },
    "site_chrome_images_dropped": {
     "type": "number"
    },
    "candidates_over_threshold": {
     "type": "number"
    },
    "excluded": {
     "type": "object",
     "properties": {
      "map_or_plan": {
       "type": "number"
      },
      "same_domain": {
       "type": "number"
      },
      "same_developer": {
       "type": "number"
      },
      "same_project_name": {
       "type": "number"
      },
      "page_names_other_project": {
       "type": "number"
      },
      "portal_image_not_attributable": {
       "type": "number"
      },
      "hub_image": {
       "type": "number"
      },
      "geometry_failed": {
       "type": "number"
      }
     }
    },
    "hub_images": {
     "type": "number"
    },
    "same_picture_but_excluded": {
     "type": "object",
     "properties": {
      "same_developer": {
       "type": "number"
      },
      "portal_image_not_attributable": {
       "type": "number"
      },
      "page_names_other_project": {
       "type": "number"
      },
      "map_or_plan": {
       "type": "number"
      }
     }
    },
    "listing_portals": {
     "type": "number"
    },
    "pair_count": {
     "type": "number"
    },
    "pairs": {
     "type": "array"
    },
    "method": {
     "type": "string"
    }
   },
   "required": [
    "candidates_over_threshold",
    "excluded",
    "generated",
    "hub_images",
    "images_checked",
    "limits",
    "listing_portals",
    "method",
    "min_orb_inliers",
    "model",
    "pair_count",
    "pairs",
    "projects_checked",
    "projects_tracked",
    "same_picture_but_excluded",
    "site_chrome_images_dropped",
    "threshold"
   ]
  },
  "restore": {
   "title": "Backup restore drill",
   "description": "Contract of https://kolaboro.com/data/restore.json. Weekly drill: the latest database backup is restored into a clean PostgreSQL and checked table by table, and evidence files are re-hashed.",
   "type": "object",
   "properties": {
    "date": {
     "type": "string"
    },
    "drill_at": {
     "type": "string"
    },
    "backup_file": {
     "type": "string"
    },
    "backup_sha256": {
     "type": "string"
    },
    "backup_age_days": {
     "type": "number"
    },
    "postgres": {
     "type": "string"
    },
    "tables": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "name": {
        "type": [
         "null",
         "string"
        ]
       },
       "rows": {
        "type": [
         "null",
         "number"
        ]
       },
       "ok": {
        "type": [
         "boolean",
         "null"
        ]
       }
      },
      "required": [
       "name",
       "ok",
       "rows"
      ]
     }
    },
    "rows_total": {
     "type": "number"
    },
    "evidence_files_checked": {
     "type": "number"
    },
    "evidence_missing": {
     "type": "number"
    },
    "evidence_bad_hash": {
     "type": "number"
    },
    "evidence_ok": {
     "type": "boolean"
    },
    "ok": {
     "type": "boolean"
    },
    "duration_s": {
     "type": "number"
    }
   },
   "required": [
    "backup_age_days",
    "backup_file",
    "backup_sha256",
    "date",
    "drill_at",
    "duration_s",
    "evidence_bad_hash",
    "evidence_files_checked",
    "evidence_missing",
    "evidence_ok",
    "ok",
    "postgres",
    "rows_total",
    "tables"
   ]
  },
  "risk": {
   "title": "Risk patterns",
   "description": "Contract of https://kolaboro.com/data/risk.json. Which tracked projects look unusual on public warning signs compared with all others, and why, with a model card. It ranks; it does not predict. No project has a confirmed outcome to train on.",
   "type": "object",
   "properties": {
    "version": {
     "type": "string"
    },
    "updated": {
     "type": "string"
    },
    "model_card": {
     "type": "object",
     "properties": {
      "name": {
       "type": "string"
      },
      "version": {
       "type": "string"
      },
      "purpose": {
       "type": "string"
      },
      "not_for": {
       "type": "string"
      },
      "data": {
       "type": "object",
       "properties": {
        "file": {
         "type": [
          "null",
          "string"
         ]
        },
        "sha256": {
         "type": [
          "null",
          "string"
         ]
        },
        "dataset_date": {
         "type": [
          "null",
          "string"
         ]
        },
        "projects": {
         "type": [
          "null",
          "number"
         ]
        },
        "markets": {
         "type": [
          "null",
          "number"
         ]
        }
       }
      },
      "features": {
       "type": "array",
       "items": {
        "type": "object",
        "properties": {
         "feature": {
          "type": [
           "null",
           "string"
          ]
         },
         "label": {
          "type": [
           "null",
           "string"
          ]
         },
         "kind": {
          "type": [
           "null",
           "string"
          ]
         },
         "prevalence_pct": {
          "type": [
           "null",
           "number"
          ]
         },
         "z_when_present": {
          "type": [
           "null",
           "number"
          ]
         },
         "present_pct": {
          "type": [
           "null",
           "number"
          ]
         },
         "median_when_present": {
          "type": [
           "null",
           "number"
          ]
         },
         "scale_when_present": {
          "type": [
           "null",
           "number"
          ]
         },
         "size_z_cap": {
          "type": [
           "null",
           "number"
          ]
         },
         "z_cap": {
          "type": [
           "null",
           "number"
          ]
         },
         "median": {
          "type": [
           "null",
           "number"
          ]
         },
         "scale": {
          "type": [
           "null",
           "number"
          ]
         },
         "scale_basis": {
          "type": [
           "null",
           "string"
          ]
         },
         "known_projects": {
          "type": [
           "null",
           "number"
          ]
         }
        }
       }
      },
      "features_not_available": {
       "type": "array",
       "items": {
        "type": "object",
        "properties": {
         "feature": {
          "type": [
           "null",
           "string"
          ]
         },
         "why": {
          "type": [
           "null",
           "string"
          ]
         }
        }
       }
      },
      "method": {
       "type": "array",
       "items": {
        "type": [
         "null",
         "string"
        ]
       }
      },
      "agreement": {
       "type": "object",
       "properties": {
        "spearman_rank_correlation": {
         "type": [
          "null",
          "number"
         ]
        },
        "top5_both_methods": {
         "type": [
          "null",
          "number"
         ]
        },
        "top5_size": {
         "type": [
          "null",
          "number"
         ]
        }
       }
      },
      "thresholds": {
       "type": "object",
       "properties": {
        "unusual_score_from": {
         "type": [
          "null",
          "number"
         ]
        },
        "somewhat_unusual_from": {
         "type": [
          "null",
          "number"
         ]
        }
       }
      },
      "limits": {
       "type": "array",
       "items": {
        "type": [
         "null",
         "string"
        ]
       }
      }
     }
    },
    "summary": {
     "type": "object",
     "properties": {
      "unusual": {
       "type": "number"
      },
      "somewhat_unusual": {
       "type": "number"
      },
      "typical": {
       "type": "number"
      }
     }
    },
    "keys": {
     "type": "object",
     "properties": {
      "m": {
       "type": "string"
      },
      "s": {
       "type": "string"
      },
      "r": {
       "type": "string"
      },
      "if": {
       "type": "string"
      },
      "lvl": {
       "type": "string"
      },
      "c": {
       "type": "string"
      }
     }
    },
    "top": {
     "type": "array",
     "items": {
      "type": "string"
     }
    },
    "markets": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "market": {
        "type": [
         "null",
         "string"
        ]
       },
       "projects": {
        "type": [
         "null",
         "number"
        ]
       },
       "unusual": {
        "type": [
         "null",
         "number"
        ]
       },
       "median_score": {
        "type": [
         "null",
         "number"
        ]
       }
      },
      "required": [
       "market",
       "median_score",
       "projects",
       "unusual"
      ]
     }
    },
    "projects": {
     "type": "object",
     "additionalProperties": {
      "type": "object",
      "properties": {
       "m": {
        "type": [
         "null",
         "string"
        ]
       },
       "s": {
        "type": [
         "null",
         "number"
        ]
       },
       "r": {
        "type": [
         "null",
         "number"
        ]
       },
       "if": {
        "type": [
         "null",
         "number"
        ]
       },
       "lvl": {
        "type": [
         "null",
         "string"
        ]
       },
       "c": {
        "type": "array",
        "items": {
         "type": "array",
         "items": {
          "type": [
           "null",
           "number",
           "string"
          ]
         }
        }
       }
      },
      "required": [
       "c",
       "if",
       "lvl",
       "m",
       "r",
       "s"
      ]
     }
    }
   },
   "required": [
    "keys",
    "markets",
    "model_card",
    "projects",
    "summary",
    "top",
    "updated",
    "version"
   ]
  },
  "roadmap": {
   "title": "Product roadmap",
   "description": "Contract of https://kolaboro.com/data/roadmap.json. The public product roadmap: each item with its number, theme, title, short description and status.",
   "type": "object",
   "properties": {
    "updated": {
     "type": "string"
    },
    "items": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "n": {
        "type": [
         "null",
         "number"
        ]
       },
       "theme": {
        "type": [
         "null",
         "string"
        ]
       },
       "title": {
        "type": [
         "null",
         "string"
        ]
       },
       "desc": {
        "type": [
         "null",
         "string"
        ]
       },
       "status": {
        "type": [
         "null",
         "string"
        ]
       }
      },
      "required": [
       "desc",
       "n",
       "status",
       "theme",
       "title"
      ]
     }
    }
   },
   "required": [
    "items",
    "updated"
   ]
  },
  "roadmap-sync": {
   "title": "Roadmap items verified live",
   "description": "Contract of https://kolaboro.com/data/roadmap-sync.json. Roadmap items that link to the live page delivering them. An item counts as shipped only when the page answers HTTP 200, its canonical link is that page and its HTML contains the marker text.",
   "type": "object",
   "properties": {
    "about": {
     "type": "string"
    },
    "marker_rule": {
     "type": "string"
    },
    "generated_at": {
     "type": "string"
    },
    "items": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "n": {
        "type": [
         "null",
         "number"
        ]
       },
       "title": {
        "type": [
         "null",
         "string"
        ]
       },
       "status_on_page": {
        "type": [
         "null",
         "string"
        ]
       },
       "page": {
        "type": [
         "null",
         "string"
        ]
       },
       "marker": {
        "type": [
         "null",
         "string"
        ]
       },
       "http": {
        "type": [
         "null",
         "number"
        ]
       },
       "marker_found": {
        "type": [
         "boolean",
         "null"
        ]
       },
       "canonical_matches": {
        "type": [
         "boolean",
         "null"
        ]
       },
       "shipped": {
        "type": [
         "boolean",
         "null"
        ]
       },
       "checked_at": {
        "type": [
         "null",
         "string"
        ]
       }
      },
      "required": [
       "canonical_matches",
       "checked_at",
       "http",
       "marker",
       "marker_found",
       "n",
       "page",
       "shipped",
       "status_on_page",
       "title"
      ]
     }
    },
    "linked": {
     "type": "number"
    },
    "verified_live": {
     "type": "number"
    }
   },
   "required": [
    "about",
    "generated_at",
    "items",
    "linked",
    "marker_rule",
    "verified_live"
   ]
  },
  "satellite": {
   "title": "Satellite watch (Sentinel-2 and Sentinel-1)",
   "description": "Contract of https://kolaboro.com/data/satellite.json. Sentinel-2 vegetation and clearing per season and Sentinel-1 radar backscatter change for every watched site and area (boxes of about 1 km). Contains modified Copernicus Sentinel data.",
   "type": "object",
   "properties": {
    "updated": {
     "type": "string"
    },
    "source": {
     "type": "string"
    },
    "processing_units": {
     "type": "number"
    },
    "sites": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "id": {
        "type": [
         "null",
         "string"
        ]
       },
       "kind": {
        "type": [
         "null",
         "string"
        ]
       },
       "label": {
        "type": [
         "null",
         "string"
        ]
       },
       "lat": {
        "type": [
         "null",
         "number"
        ]
       },
       "lng": {
        "type": [
         "null",
         "number"
        ]
       },
       "box_km": {
        "type": [
         "null",
         "number"
        ]
       },
       "periods": {
        "type": "array",
        "items": {
         "type": "object",
         "properties": {
          "label": {
           "type": [
            "null",
            "string"
           ]
          },
          "key": {
           "type": [
            "null",
            "string"
           ]
          },
          "from": {
           "type": [
            "null",
            "string"
           ]
          },
          "to": {
           "type": [
            "null",
            "string"
           ]
          },
          "vegetation_pct": {
           "type": [
            "null",
            "number"
           ]
          },
          "clear_pct": {
           "type": [
            "null",
            "number"
           ]
          },
          "cleared_since_first_pct": {
           "type": [
            "null",
            "number"
           ]
          },
          "changed_since_previous_pct": {
           "type": [
            "null",
            "number"
           ]
          }
         }
        }
       },
       "activity": {
        "type": [
         "null",
         "string"
        ]
       },
       "radar": {
        "type": "object",
        "properties": {
         "source": {
          "type": [
           "null",
           "string"
          ]
         },
         "periods": {
          "type": "array",
          "items": {
           "type": "object",
           "properties": {
            "key": {
             "type": [
              "null",
              "string"
             ]
            },
            "label": {
             "type": [
              "null",
              "string"
             ]
            },
            "from": {
             "type": [
              "null",
              "string"
             ]
            },
            "to": {
             "type": [
              "null",
              "string"
             ]
            },
            "acquisitions": {
             "type": [
              "null",
              "number"
             ]
            },
            "vv_db": {
             "type": [
              "null",
              "number"
             ]
            },
            "vh_db": {
             "type": [
              "null",
              "number"
             ]
            },
            "covered_pct": {
             "type": [
              "null",
              "number"
             ]
            },
            "image": {
             "type": [
              "boolean",
              "null"
             ]
            }
           }
          }
         },
         "radar_change_db": {
          "type": [
           "null",
           "number"
          ]
         },
         "change_from": {
          "type": [
           "null",
           "string"
          ]
         },
         "change_to": {
          "type": [
           "null",
           "string"
          ]
         },
         "dry_season_change_db": {
          "type": [
           "null",
           "number"
          ]
         }
        }
       }
      },
      "required": [
       "activity",
       "box_km",
       "id",
       "kind",
       "label",
       "lat",
       "lng",
       "periods",
       "radar"
      ]
     }
    },
    "processing_units_optical": {
     "type": "number"
    },
    "processing_units_radar": {
     "type": "number"
    },
    "radar_method": {
     "type": "string"
    }
   },
   "required": [
    "processing_units",
    "processing_units_optical",
    "processing_units_radar",
    "radar_method",
    "sites",
    "source",
    "updated"
   ]
  },
  "satellite-optical": {
   "title": "Monthly optical progress series",
   "description": "Contract of https://kolaboro.com/data/satellite-optical.json. Per watched site and month from January 2023: cloud-masked Sentinel-2 median, built_pct (built-up or bare ground, which look alike at 10 m) and new built-up since the baseline month. Contains modified Copernicus Sentinel data.",
   "type": "object",
   "properties": {
    "updated": {
     "type": "string"
    },
    "source": {
     "type": "string"
    },
    "resolution_m": {
     "type": "number"
    },
    "method": {
     "type": "string"
    },
    "from": {
     "type": "string"
    },
    "to": {
     "type": "string"
    },
    "seconds": {
     "type": "number"
    },
    "sites": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "id": {
        "type": [
         "null",
         "string"
        ]
       },
       "label": {
        "type": [
         "null",
         "string"
        ]
       },
       "area": {
        "type": [
         "null",
         "string"
        ]
       },
       "baseline_month": {
        "type": [
         "null",
         "string"
        ]
       },
       "baseline_crs": {
        "type": [
         "null",
         "string"
        ]
       },
       "timelapse": {
        "type": [
         "boolean",
         "null"
        ]
       },
       "summary": {
        "type": "object",
        "properties": {
         "months": {
          "type": [
           "null",
           "number"
          ]
         },
         "months_clear": {
          "type": [
           "null",
           "number"
          ]
         },
         "frames": {
          "type": [
           "null",
           "number"
          ]
         },
         "scenes_read": {
          "type": [
           "null",
           "number"
          ]
         },
         "seconds": {
          "type": [
           "null",
           "number"
          ]
         },
         "first_year": {
          "type": [
           "null",
           "string"
          ]
         },
         "last_year": {
          "type": [
           "null",
           "string"
          ]
         },
         "first_year_clear_months": {
          "type": [
           "null",
           "number"
          ]
         },
         "last_year_clear_months": {
          "type": [
           "null",
           "number"
          ]
         },
         "built_first_year_median": {
          "type": [
           "null",
           "number"
          ]
         },
         "built_last_year_median": {
          "type": [
           "null",
           "number"
          ]
         },
         "brightness_first_year_median": {
          "type": [
           "null",
           "number"
          ]
         },
         "brightness_last_year_median": {
          "type": [
           "null",
           "number"
          ]
         },
         "built_change_pts": {
          "type": [
           "null",
           "number"
          ]
         },
         "new_built_since_baseline_last_year_median": {
          "type": [
           "null",
           "number"
          ]
         }
        }
       },
       "months": {
        "type": "array",
        "items": {
         "type": "object",
         "properties": {
          "month": {
           "type": [
            "null",
            "string"
           ]
          },
          "scenes_listed": {
           "type": [
            "null",
            "number"
           ]
          },
          "scenes_used": {
           "type": [
            "null",
            "number"
           ]
          },
          "dates": {
           "type": "array",
           "items": {
            "type": [
             "null",
             "string"
            ]
           }
          },
          "clear_pct": {
           "type": [
            "null",
            "number"
           ]
          },
          "status": {
           "type": [
            "null",
            "string"
           ]
          },
          "brightness": {
           "type": [
            "null",
            "number"
           ]
          },
          "ndvi": {
           "type": [
            "null",
            "number"
           ]
          },
          "built_pct": {
           "type": [
            "null",
            "number"
           ]
          },
          "frame": {
           "type": [
            "boolean",
            "null"
           ]
          },
          "new_built_since_baseline_pct": {
           "type": [
            "null",
            "number"
           ]
          }
         }
        }
       }
      },
      "required": [
       "area",
       "baseline_crs",
       "baseline_month",
       "id",
       "label",
       "months",
       "summary",
       "timelapse"
      ]
     }
    }
   },
   "required": [
    "from",
    "method",
    "resolution_m",
    "seconds",
    "sites",
    "source",
    "to",
    "updated"
   ]
  },
  "security-scan": {
   "title": "Security scan",
   "description": "Contract of https://kolaboro.com/data/security-scan.json. OWASP ZAP baseline passive scan of kolaboro.com: alerts by risk.",
   "type": "object",
   "properties": {
    "date": {
     "type": "string"
    },
    "tool": {
     "type": "string"
    },
    "target": {
     "type": "string"
    },
    "zap_version": {
     "type": "string"
    },
    "by_risk": {
     "type": "object",
     "properties": {
      "high": {
       "type": "number"
      },
      "medium": {
       "type": "number"
      },
      "low": {
       "type": "number"
      },
      "informational": {
       "type": "number"
      }
     }
    },
    "ok": {
     "type": "boolean"
    },
    "alerts": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "risk": {
        "type": [
         "null",
         "string"
        ]
       },
       "name": {
        "type": [
         "null",
         "string"
        ]
       },
       "instances": {
        "type": [
         "null",
         "number"
        ]
       },
       "cwe": {
        "type": [
         "null",
         "string"
        ]
       },
       "rule": {
        "type": [
         "null",
         "string"
        ]
       }
      },
      "required": [
       "cwe",
       "instances",
       "name",
       "risk",
       "rule"
      ]
     }
    }
   },
   "required": [
    "alerts",
    "by_risk",
    "date",
    "ok",
    "target",
    "tool",
    "zap_version"
   ]
  },
  "shipping": {
   "title": "Shipping log",
   "description": "Contract of https://kolaboro.com/data/shipping.json. Ships (commits by people, or by Claude working for one) and data updates per UTC day from the git history of the live branch, streaks, engineering metrics and day summaries written by an AI model and checked in code.",
   "type": "object",
   "properties": {
    "about": {
     "type": "string"
    },
    "generated_at": {
     "type": "string"
    },
    "timezone": {
     "type": "string"
    },
    "today": {
     "type": "string"
    },
    "first_day": {
     "type": "string"
    },
    "totals": {
     "type": "object",
     "properties": {
      "ships": {
       "type": "number"
      },
      "data_updates": {
       "type": "number"
      },
      "rollback_commits": {
       "type": "number"
      },
      "calendar_days": {
       "type": "number"
      },
      "days_with_ships": {
       "type": "number"
      },
      "ships_today": {
       "type": "number"
      },
      "ships_last_7_days": {
       "type": "number"
      }
     }
    },
    "streak": {
     "type": "object",
     "properties": {
      "current": {
       "type": "number"
      },
      "current_from": {
       "type": "string"
      },
      "counts_today": {
       "type": "boolean"
      },
      "longest": {
       "type": "number"
      },
      "longest_from": {
       "type": "string"
      },
      "longest_to": {
       "type": "string"
      },
      "rule": {
       "type": "string"
      }
     }
    },
    "definitions": {
     "type": "object",
     "properties": {
      "ship": {
       "type": "string"
      },
      "data_update": {
       "type": "string"
      },
      "rollback": {
       "type": "string"
      },
      "summary_methods": {
       "type": "object",
       "properties": {
        "ai-checked": {
         "type": [
          "null",
          "string"
         ]
        },
        "deterministic": {
         "type": [
          "null",
          "string"
         ]
        },
        "so-far": {
         "type": [
          "null",
          "string"
         ]
        }
       }
      }
     }
    },
    "privacy_filter": {
     "type": "string"
    },
    "metrics": {
     "type": "object",
     "properties": {
      "deploys": {
       "type": "object",
       "properties": {
        "per_day": {
         "type": "object",
         "additionalProperties": {
          "type": "object",
          "properties": {
           "checked_live": {
            "type": [
             "null",
             "number"
            ]
           },
           "pass": {
            "type": [
             "null",
             "number"
            ]
           },
           "failed": {
            "type": [
             "null",
             "number"
            ]
           },
           "rolled_back": {
            "type": [
             "null",
             "number"
            ]
           },
           "rollback_failed": {
            "type": [
             "null",
             "number"
            ]
           },
           "not_deployed": {
            "type": [
             "null",
             "number"
            ]
           },
           "smoke_checks_run": {
            "type": [
             "null",
             "number"
            ]
           }
          }
         },
         "propertyNames": {
          "pattern": "^\\d{4}-\\d{2}(-\\d{2})?$"
         }
        },
        "source": {
         "type": [
          "null",
          "string"
         ]
        },
        "method": {
         "type": [
          "null",
          "string"
         ]
        },
        "records": {
         "type": [
          "null",
          "number"
         ]
        },
        "record_since": {
         "type": [
          "null",
          "string"
         ]
        }
       }
      },
      "commit_to_live": {
       "type": "object",
       "properties": {
        "median_s": {
         "type": [
          "null",
          "number"
         ]
        },
        "p90_s": {
         "type": [
          "null",
          "number"
         ]
        },
        "samples": {
         "type": [
          "null",
          "number"
         ]
        },
        "last_7_days_median_s": {
         "type": [
          "null",
          "number"
         ]
        },
        "source": {
         "type": [
          "null",
          "string"
         ]
        },
        "method": {
         "type": [
          "null",
          "string"
         ]
        }
       }
      },
      "rollbacks": {
       "type": "object",
       "properties": {
        "automatic_rollbacks": {
         "type": [
          "null",
          "number"
         ]
        },
        "rollbacks_that_failed": {
         "type": [
          "null",
          "number"
         ]
        },
        "rollback_commits_in_git": {
         "type": [
          "null",
          "number"
         ]
        },
        "drills": {
         "type": [
          "null",
          "number"
         ]
        },
        "source": {
         "type": [
          "null",
          "string"
         ]
        },
        "method": {
         "type": [
          "null",
          "string"
         ]
        }
       }
      },
      "workflow_runs": {
       "type": "object",
       "properties": {
        "per_day": {
         "type": "object",
         "additionalProperties": {
          "type": "object",
          "properties": {
           "runs": {
            "type": [
             "null",
             "number"
            ]
           },
           "success": {
            "type": [
             "null",
             "number"
            ]
           },
           "failure": {
            "type": [
             "null",
             "number"
            ]
           },
           "cancelled": {
            "type": [
             "null",
             "number"
            ]
           },
           "other": {
            "type": [
             "null",
             "number"
            ]
           },
           "by_event": {
            "type": "object",
            "properties": {
             "push": {
              "type": [
               "null",
               "number"
              ]
             },
             "workflow_dispatch": {
              "type": [
               "null",
               "number"
              ]
             },
             "schedule": {
              "type": [
               "null",
               "number"
              ]
             },
             "workflow_run": {
              "type": [
               "null",
               "number"
              ]
             }
            }
           }
          }
         },
         "propertyNames": {
          "pattern": "^\\d{4}-\\d{2}(-\\d{2})?$"
         }
        },
        "source": {
         "type": [
          "null",
          "string"
         ]
        },
        "method": {
         "type": [
          "null",
          "string"
         ]
        },
        "available": {
         "type": [
          "boolean",
          "null"
         ]
        }
       }
      },
      "jobs": {
       "type": "object",
       "properties": {
        "items": {
         "type": "array",
         "items": {
          "type": "object",
          "properties": {
           "name": {
            "type": [
             "null",
             "string"
            ]
           },
           "file": {
            "type": [
             "null",
             "string"
            ]
           },
           "schedule_utc": {
            "type": "array",
            "items": {
             "type": [
              "null",
              "string"
             ]
            }
           },
           "on_push": {
            "type": [
             "boolean",
             "null"
            ]
           },
           "last_run_at": {
            "type": [
             "null",
             "string"
            ]
           },
           "last_event": {
            "type": [
             "null",
             "string"
            ]
           },
           "last_status": {
            "type": [
             "null",
             "string"
            ]
           },
           "last_result": {
            "type": [
             "null",
             "string"
            ]
           }
          }
         }
        },
        "source": {
         "type": [
          "null",
          "string"
         ]
        },
        "method": {
         "type": [
          "null",
          "string"
         ]
        }
       }
      },
      "uptime_snapshot": {
       "type": "object",
       "properties": {
        "at": {
         "type": [
          "null",
          "string"
         ]
        },
        "data": {
         "type": "object",
         "properties": {
          "uptime_7d": {
           "type": [
            "null",
            "number"
           ]
          },
          "uptime_30d": {
           "type": [
            "null",
            "number"
           ]
          },
          "probes_30d": {
           "type": [
            "null",
            "number"
           ]
          },
          "median_ms_7d": {
           "type": [
            "null",
            "number"
           ]
          },
          "p95_ms_7d": {
           "type": [
            "null",
            "number"
           ]
          }
         }
        },
        "source": {
         "type": [
          "null",
          "string"
         ]
        },
        "method": {
         "type": [
          "null",
          "string"
         ]
        }
       }
      }
     }
    },
    "roadmap": {
     "type": "object",
     "properties": {
      "linked": {
       "type": "number"
      },
      "verified_live": {
       "type": "number"
      },
      "file": {
       "type": "string"
      }
     }
    },
    "ai": {
     "type": "object",
     "properties": {
      "calls_total": {
       "type": "number"
      },
      "input_tokens_total": {
       "type": "number"
      },
      "output_tokens_total": {
       "type": "number"
      },
      "usd_estimate_total": {
       "type": "number"
      },
      "last_run": {
       "type": "object",
       "properties": {
        "at": {
         "type": [
          "null",
          "string"
         ]
        },
        "calls": {
         "type": [
          "null",
          "number"
         ]
        },
        "input_tokens": {
         "type": [
          "null",
          "number"
         ]
        },
        "output_tokens": {
         "type": [
          "null",
          "number"
         ]
        },
        "usd_estimate": {
         "type": [
          "null",
          "number"
         ]
        }
       }
      },
      "model": {
       "type": "string"
      },
      "price_used": {
       "type": "string"
      }
     }
    },
    "days": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "date": {
        "type": [
         "null",
         "string"
        ]
       },
       "ships": {
        "type": [
         "null",
         "number"
        ]
       },
       "data_updates": {
        "type": [
         "null",
         "number"
        ]
       },
       "rollbacks": {
        "type": [
         "null",
         "number"
        ]
       },
       "data_kinds": {
        "type": "object",
        "properties": {
         "research agent data": {
          "type": [
           "null",
           "number"
          ]
         },
         "satellite watch": {
          "type": [
           "null",
           "number"
          ]
         },
         "render index": {
          "type": [
           "null",
           "number"
          ]
         },
         "daily QA result": {
          "type": [
           "null",
           "number"
          ]
         },
         "restore drill": {
          "type": [
           "null",
           "number"
          ]
         },
         "verifiers": {
          "type": [
           "null",
           "number"
          ]
         },
         "render reuse": {
          "type": [
           "null",
           "number"
          ]
         },
         "security scan": {
          "type": [
           "null",
           "number"
          ]
         },
         "Parquet export": {
          "type": [
           "null",
           "number"
          ]
         },
         "deploy guard record": {
          "type": [
           "null",
           "number"
          ]
         },
         "user journey": {
          "type": [
           "null",
           "number"
          ]
         },
         "satellite optical progress": {
          "type": [
           "null",
           "number"
          ]
         },
         "chaos drill": {
          "type": [
           "null",
           "number"
          ]
         },
         "accessibility audit": {
          "type": [
           "null",
           "number"
          ]
         },
         "developer intelligence": {
          "type": [
           "null",
           "number"
          ]
         },
         "price index": {
          "type": [
           "null",
           "number"
          ]
         },
         "company graph": {
          "type": [
           "null",
           "number"
          ]
         },
         "site manifest and build record": {
          "type": [
           "null",
           "number"
          ]
         },
         "Lighthouse": {
          "type": [
           "null",
           "number"
          ]
         },
         "AI benchmark haiku": {
          "type": [
           "null",
           "number"
          ]
         },
         "visual diff": {
          "type": [
           "null",
           "number"
          ]
         },
         "AI benchmark sonnet": {
          "type": [
           "null",
           "number"
          ]
         },
         "natural hazards": {
          "type": [
           "null",
           "number"
          ]
         },
         "market truth": {
          "type": [
           "null",
           "number"
          ]
         },
         "promise tracker": {
          "type": [
           "null",
           "number"
          ]
         },
         "delay index and on-time odds": {
          "type": [
           "null",
           "number"
          ]
         },
         "night lights": {
          "type": [
           "null",
           "number"
          ]
         },
         "stalled-site check": {
          "type": [
           "null",
           "number"
          ]
         },
         "global company graph (GLEIF)": {
          "type": [
           "null",
           "number"
          ]
         },
         "insolvency watch": {
          "type": [
           "null",
           "number"
          ]
         },
         "extension lookup table": {
          "type": [
           "null",
           "number"
          ]
         },
         "discovery data (market points, similar projects)": {
          "type": [
           "null",
           "number"
          ]
         },
         "weekly digest and change heatmap": {
          "type": [
           "null",
           "number"
          ]
         },
         "shipping log": {
          "type": [
           "null",
           "number"
          ]
         },
         "quality run": {
          "type": [
           "null",
           "number"
          ]
         },
         "data catalog": {
          "type": [
           "null",
           "number"
          ]
         }
        }
       },
       "page": {
        "type": [
         "null",
         "string"
        ]
       },
       "page_by": {
        "type": [
         "null",
         "string"
        ]
       },
       "digest": {
        "type": [
         "null",
         "string"
        ]
       },
       "last_commit": {
        "type": [
         "null",
         "string"
        ]
       },
       "redactions": {
        "type": [
         "null",
         "number"
        ]
       },
       "summary": {
        "type": "object",
        "properties": {
         "lines": {
          "type": "array",
          "items": {
           "type": "object",
           "properties": {
            "text": {
             "type": [
              "null",
              "string"
             ]
            },
            "commits": {
             "type": "array",
             "items": {
              "type": [
               "null",
               "string"
              ]
             }
            }
           }
          }
         },
         "method": {
          "type": [
           "null",
           "string"
          ]
         },
         "model": {
          "type": [
           "null",
           "string"
          ]
         },
         "checks": {
          "type": "array",
          "items": {
           "type": [
            "null",
            "string"
           ]
          }
         },
         "written_at": {
          "type": [
           "null",
           "string"
          ]
         },
         "fallback_reason": {
          "type": [
           "null",
           "string"
          ]
         },
         "v": {
          "type": [
           "null",
           "number"
          ]
         },
         "rejected_ai": {
          "type": "array",
          "items": {
           "type": "object",
           "properties": {
            "text": {
             "type": [
              "null",
              "string"
             ]
            },
            "commits": {
             "type": "array",
             "items": {
              "type": [
               "null",
               "string"
              ]
             }
            }
           }
          }
         }
        }
       },
       "commits": {
        "type": "array",
        "items": {
         "type": "object",
         "properties": {
          "id": {
           "type": [
            "null",
            "string"
           ]
          },
          "time": {
           "type": [
            "null",
            "string"
           ]
          },
          "s": {
           "type": [
            "null",
            "string"
           ]
          }
         }
        }
       }
      },
      "required": [
       "commits",
       "data_kinds",
       "data_updates",
       "date",
       "digest",
       "last_commit",
       "page",
       "page_by",
       "redactions",
       "rollbacks",
       "ships",
       "summary"
      ]
     }
    },
    "feeds": {
     "type": "object",
     "properties": {
      "atom": {
       "type": "string"
      },
      "json": {
       "type": "string"
      },
      "badge": {
       "type": "string"
      }
     }
    }
   },
   "required": [
    "about",
    "ai",
    "days",
    "definitions",
    "feeds",
    "first_day",
    "generated_at",
    "metrics",
    "privacy_filter",
    "roadmap",
    "streak",
    "timezone",
    "today",
    "totals"
   ]
  },
  "similar": {
   "title": "Similar projects",
   "description": "Contract of https://kolaboro.com/data/similar.json. For every public project, the 5 most similar other public projects: ids and rounded scores only (text similarity from an open sentence-embedding model run on the GitHub runner, plus structured similarity). Input is only the public bali-cases.json.",
   "type": "object",
   "properties": {
    "version": {
     "type": "string"
    },
    "generated": {
     "type": "string"
    },
    "dataset_updated": {
     "type": "string"
    },
    "what": {
     "type": "string"
    },
    "row": {
     "type": "array",
     "items": {
      "type": "string"
     }
    },
    "model": {
     "type": "object",
     "properties": {
      "name": {
       "type": "string"
      },
      "revision": {
       "type": "string"
      },
      "licence": {
       "type": "string"
      },
      "url": {
       "type": "string"
      },
      "run": {
       "type": "string"
      }
     }
    },
    "text_fields": {
     "type": "string"
    },
    "weights": {
     "type": "object",
     "properties": {
      "text": {
       "type": "number"
      },
      "structured": {
       "type": "number"
      },
      "structured_parts": {
       "type": "object",
       "properties": {
        "market": {
         "type": [
          "null",
          "number"
         ]
        },
        "country": {
         "type": [
          "null",
          "number"
         ]
        },
        "stage": {
         "type": [
          "null",
          "number"
         ]
        },
        "band": {
         "type": [
          "null",
          "number"
         ]
        },
        "checks": {
         "type": [
          "null",
          "number"
         ]
        }
       }
      },
      "band_rule": {
       "type": "string"
      },
      "checks_rule": {
       "type": "string"
      }
     }
    },
    "k": {
     "type": "number"
    },
    "projects_n": {
     "type": "number"
    },
    "seconds": {
     "type": "number"
    },
    "input": {
     "type": "object",
     "properties": {
      "file": {
       "type": "string"
      },
      "sha256": {
       "type": "string"
      }
     }
    },
    "projects": {
     "type": "object",
     "additionalProperties": {
      "type": "array",
      "items": {
       "type": "array",
       "items": {
        "type": [
         "null",
         "number",
         "string"
        ]
       }
      }
     }
    }
   },
   "required": [
    "dataset_updated",
    "generated",
    "input",
    "k",
    "model",
    "projects",
    "projects_n",
    "row",
    "seconds",
    "text_fields",
    "version",
    "weights",
    "what"
   ]
  },
  "site-manifest": {
   "title": "Site manifest",
   "description": "Contract of https://kolaboro.com/data/site-manifest.json. SHA-256 of every file published on kolaboro.com outside /data/, computed from the git commit the live site was serving.",
   "type": "object",
   "properties": {
    "version": {
     "type": "string"
    },
    "about": {
     "type": "string"
    },
    "commit": {
     "type": "string"
    },
    "commit_time": {
     "type": "string"
    },
    "commit_from": {
     "type": "string"
    },
    "generated_at": {
     "type": "string"
    },
    "run_id": {
     "type": "string"
    },
    "root": {
     "type": "string"
    },
    "url_rule": {
     "type": "string"
    },
    "excluded": {
     "type": "array",
     "items": {
      "type": "string"
     }
    },
    "html_normalization": {
     "type": "array",
     "items": {
      "type": "string"
     }
    },
    "count": {
     "type": "number"
    },
    "bytes": {
     "type": "number"
    },
    "list_sha256": {
     "type": "string"
    },
    "list_format": {
     "type": "string"
    },
    "files": {
     "type": "object",
     "additionalProperties": {
      "type": "string"
     }
    }
   },
   "required": [
    "about",
    "bytes",
    "commit",
    "commit_from",
    "commit_time",
    "count",
    "excluded",
    "files",
    "generated_at",
    "html_normalization",
    "list_format",
    "list_sha256",
    "root",
    "run_id",
    "url_rule",
    "version"
   ]
  },
  "stalled-sites": {
   "title": "Stalled construction sites",
   "description": "Contract of https://kolaboro.com/data/stalled-sites.json. Sentinel-2 change between clear quarters in a 150 m window around every project with coordinates, and which sites show almost no change.",
   "type": "object",
   "properties": {
    "updated": {
     "type": "string"
    },
    "seconds": {
     "type": "number"
    },
    "quarters": {
     "type": "array",
     "items": {
      "type": "string"
     }
    },
    "projects_with_coordinates": {
     "type": "number"
    },
    "status_counts": {
     "type": "object",
     "properties": {
      "ok": {
       "type": "number"
      },
      "not enough clear quarters": {
       "type": "number"
      }
     }
    },
    "threshold_pct": {
     "type": "number"
    },
    "radius_m": {
     "type": "number"
    },
    "source": {
     "type": "object",
     "properties": {
      "name": {
       "type": "string"
      },
      "url": {
       "type": "string"
      },
      "license": {
       "type": "string"
      },
      "query": {
       "type": "string"
      }
     }
    },
    "method": {
     "type": "string"
    },
    "limits": {
     "type": "string"
    },
    "projects": {
     "type": "object",
     "additionalProperties": {
      "type": "object",
      "properties": {
       "quarters_checked": {
        "type": [
         "null",
         "number"
        ]
       },
       "scenes_checked": {
        "type": [
         "null",
         "number"
        ]
       },
       "clear_quarters": {
        "type": "array",
        "items": {
         "type": [
          "null",
          "string"
         ]
        }
       },
       "pairs": {
        "type": "array",
        "items": {
         "type": "object",
         "properties": {
          "from": {
           "type": [
            "null",
            "string"
           ]
          },
          "to": {
           "type": [
            "null",
            "string"
           ]
          },
          "change_pct": {
           "type": [
            "null",
            "number"
           ]
          }
         }
        }
       },
       "last_pair": {
        "type": "array",
        "items": {
         "type": [
          "null",
          "string"
         ]
        }
       },
       "change_pct_last": {
        "type": [
         "null",
         "number"
        ]
       },
       "no_visible_change_months": {
        "type": [
         "null",
         "number"
        ]
       },
       "status": {
        "type": [
         "null",
         "string"
        ]
       },
       "newest_clear_dates": {
        "type": "array",
        "items": {
         "type": [
          "null",
          "string"
         ]
        }
       },
       "seconds": {
        "type": [
         "null",
         "number"
        ]
       }
      },
      "required": [
       "clear_quarters",
       "quarters_checked",
       "scenes_checked",
       "seconds",
       "status"
      ]
     },
     "propertyNames": {
      "pattern": "^[A-Z]{2,6}-\\d{2,4}$"
     }
    }
   },
   "required": [
    "limits",
    "method",
    "projects",
    "projects_with_coordinates",
    "quarters",
    "radius_m",
    "seconds",
    "source",
    "status_counts",
    "threshold_pct",
    "updated"
   ]
  },
  "verifiers": {
   "title": "Independent verifier run",
   "description": "Contract of https://kolaboro.com/data/verifiers.json. Three independent implementations (JavaScript, Python, Go) check the test vectors and the live log, checkpoint, proofs and signatures.",
   "type": "object",
   "properties": {
    "date": {
     "type": "string"
    },
    "ok": {
     "type": "boolean"
    },
    "all_checks_pass": {
     "type": "boolean"
    },
    "three_languages_agree": {
     "type": "boolean"
    },
    "about": {
     "type": "string"
    },
    "files_sha256": {
     "type": "object",
     "properties": {
      "kolaboro-verify.js": {
       "type": "string"
      },
      "kolaboro_verify.py": {
       "type": "string"
      },
      "go/main.go": {
       "type": "string"
      },
      "test-vectors.json": {
       "type": "string"
      }
     }
    },
    "results": {
     "type": "object",
     "properties": {
      "js": {
       "type": "object",
       "properties": {
        "test_vectors": {
         "type": "object",
         "properties": {
          "proof": {
           "type": [
            "boolean",
            "null"
           ]
          },
          "log": {
           "type": [
            "boolean",
            "null"
           ]
          },
          "signature": {
           "type": [
            "boolean",
            "null"
           ]
          },
          "tamper_rejected": {
           "type": [
            "boolean",
            "null"
           ]
          },
          "checkpoint": {
           "type": [
            "boolean",
            "null"
           ]
          },
          "inclusion": {
           "type": [
            "boolean",
            "null"
           ]
          },
          "consistency": {
           "type": [
            "boolean",
            "null"
           ]
          }
         }
        },
        "live": {
         "type": "object",
         "properties": {
          "summary_signed": {
           "type": [
            "boolean",
            "null"
           ]
          },
          "log_signed": {
           "type": [
            "boolean",
            "null"
           ]
          },
          "log_chain": {
           "type": [
            "boolean",
            "null"
           ]
          },
          "checkpoint_signed": {
           "type": [
            "boolean",
            "null"
           ]
          },
          "checkpoint_size_matches_log": {
           "type": [
            "boolean",
            "null"
           ]
          },
          "every_day_included": {
           "type": [
            "boolean",
            "null"
           ]
          },
          "append_only": {
           "type": [
            "boolean",
            "null"
           ]
          }
         }
        }
       }
      },
      "py": {
       "type": "object",
       "properties": {
        "test_vectors": {
         "type": "object",
         "properties": {
          "proof": {
           "type": [
            "boolean",
            "null"
           ]
          },
          "log": {
           "type": [
            "boolean",
            "null"
           ]
          },
          "signature": {
           "type": [
            "boolean",
            "null"
           ]
          },
          "checkpoint": {
           "type": [
            "boolean",
            "null"
           ]
          },
          "inclusion": {
           "type": [
            "boolean",
            "null"
           ]
          },
          "consistency": {
           "type": [
            "boolean",
            "null"
           ]
          },
          "tamper_rejected": {
           "type": [
            "boolean",
            "null"
           ]
          }
         }
        },
        "live": {
         "type": "object",
         "properties": {
          "summary_signed": {
           "type": [
            "boolean",
            "null"
           ]
          },
          "log_signed": {
           "type": [
            "boolean",
            "null"
           ]
          },
          "log_chain": {
           "type": [
            "boolean",
            "null"
           ]
          },
          "checkpoint_signed": {
           "type": [
            "boolean",
            "null"
           ]
          },
          "checkpoint_size_matches_log": {
           "type": [
            "boolean",
            "null"
           ]
          },
          "every_day_included": {
           "type": [
            "boolean",
            "null"
           ]
          },
          "append_only": {
           "type": [
            "boolean",
            "null"
           ]
          }
         }
        }
       }
      },
      "go": {
       "type": "object",
       "properties": {
        "test_vectors": {
         "type": "object",
         "properties": {
          "checkpoint": {
           "type": [
            "boolean",
            "null"
           ]
          },
          "consistency": {
           "type": [
            "boolean",
            "null"
           ]
          },
          "inclusion": {
           "type": [
            "boolean",
            "null"
           ]
          },
          "log": {
           "type": [
            "boolean",
            "null"
           ]
          },
          "proof": {
           "type": [
            "boolean",
            "null"
           ]
          },
          "signature": {
           "type": [
            "boolean",
            "null"
           ]
          },
          "tamper_rejected": {
           "type": [
            "boolean",
            "null"
           ]
          }
         }
        },
        "live": {
         "type": "object",
         "properties": {
          "append_only": {
           "type": [
            "boolean",
            "null"
           ]
          },
          "checkpoint_signed": {
           "type": [
            "boolean",
            "null"
           ]
          },
          "checkpoint_size_matches_log": {
           "type": [
            "boolean",
            "null"
           ]
          },
          "every_day_included": {
           "type": [
            "boolean",
            "null"
           ]
          },
          "log_chain": {
           "type": [
            "boolean",
            "null"
           ]
          },
          "log_signed": {
           "type": [
            "boolean",
            "null"
           ]
          },
          "summary_signed": {
           "type": [
            "boolean",
            "null"
           ]
          }
         }
        }
       }
      }
     }
    }
   },
   "required": [
    "about",
    "all_checks_pass",
    "date",
    "files_sha256",
    "ok",
    "results",
    "three_languages_agree"
   ]
  },
  "visual-diff": {
   "title": "Visual changes on developer pages",
   "description": "Contract of https://kolaboro.com/data/visual-diff.json. Where the pages of tracked developer websites visibly changed, as page geometry only. No screenshots are published because they would identify anonymous projects.",
   "type": "object",
   "properties": {
    "version": {
     "type": "string"
    },
    "generated": {
     "type": "string"
    },
    "what": {
     "type": "string"
    },
    "trigger": {
     "type": "string"
    },
    "method": {
     "type": "array",
     "items": {
      "type": "string"
     }
    },
    "limits": {
     "type": "object",
     "properties": {
      "own_site_only": {
       "type": "boolean"
      },
      "listing_portals_skipped": {
       "type": "number"
      },
      "max_page_height_px": {
       "type": "number"
      },
      "time_budget_s": {
       "type": "number"
      },
      "baseline_cap_mb": {
       "type": "number"
      },
      "artifact_cap_mb": {
       "type": "number"
      },
      "artifact_retention_days": {
       "type": "number"
      }
     }
    },
    "caveats": {
     "type": "array",
     "items": {
      "type": "string"
     }
    },
    "run": {
     "type": "object",
     "properties": {
      "captured": {
       "type": "number"
      },
      "baselines_new": {
       "type": "number"
      },
      "changes_visible": {
       "type": "number"
      },
      "changes_invisible": {
       "type": "number"
      },
      "failed": {
       "type": "number"
      },
      "skipped_budget": {
       "type": "number"
      },
      "art_cap_hit": {
       "type": "boolean"
      },
      "base_cap_hit": {
       "type": "boolean"
      },
      "eligible": {
       "type": "number"
      },
      "queued": {
       "type": "number"
      },
      "changed_text": {
       "type": "number"
      },
      "without_baseline": {
       "type": "number"
      }
     }
    },
    "totals": {
     "type": "object",
     "properties": {
      "projects_with_baseline": {
       "type": "number"
      },
      "projects_with_visible_change": {
       "type": "number"
      },
      "changes_listed": {
       "type": "number"
      }
     }
    },
    "projects": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "id": {
        "type": [
         "null",
         "string"
        ]
       },
       "market": {
        "type": [
         "null",
         "string"
        ]
       },
       "baseline": {
        "type": [
         "null",
         "string"
        ]
       },
       "last_capture": {
        "type": [
         "null",
         "string"
        ]
       },
       "changes": {
        "type": "array",
        "items": {
         "type": "object",
         "properties": {
          "date": {
           "type": [
            "null",
            "string"
           ]
          },
          "before_date": {
           "type": [
            "null",
            "string"
           ]
          },
          "area_pct": {
           "type": [
            "null",
            "number"
           ]
          },
          "removed_px": {
           "type": [
            "null",
            "number"
           ]
          },
          "regions": {
           "type": "array",
           "items": {
            "type": "array",
            "items": {
             "type": [
              "null",
              "number"
             ]
            }
           }
          },
          "page_h": {
           "type": [
            "null",
            "number"
           ]
          },
          "masked_pct": {
           "type": [
            "null",
            "number"
           ]
          }
         }
        }
       }
      },
      "required": [
       "baseline",
       "changes",
       "id",
       "last_capture",
       "market"
      ]
     }
    }
   },
   "required": [
    "caveats",
    "generated",
    "limits",
    "method",
    "projects",
    "run",
    "totals",
    "trigger",
    "version",
    "what"
   ]
  },
  "visual-tests": {
   "title": "Visual regression tests",
   "description": "Contract of https://kolaboro.com/data/visual-tests.json. Key pages captured in Chromium at 390 and 1440 px and compared pixel by pixel with the previous run, with the share of changed pixels per page.",
   "type": "object",
   "properties": {
    "updated": {
     "type": "string"
    },
    "base": {
     "type": "string"
    },
    "seconds": {
     "type": "number"
    },
    "method": {
     "type": "string"
    },
    "changed_threshold_pct": {
     "type": "number"
    },
    "summary": {
     "type": "object",
     "properties": {
      "checks": {
       "type": "number"
      },
      "pass": {
       "type": "number"
      },
      "changed": {
       "type": "number"
      },
      "new_baseline": {
       "type": "number"
      },
      "errors": {
       "type": "number"
      },
      "images_published": {
       "type": "number"
      }
     }
    },
    "results": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "page": {
        "type": [
         "null",
         "string"
        ]
       },
       "view": {
        "type": [
         "null",
         "string"
        ]
       },
       "width": {
        "type": [
         "null",
         "number"
        ]
       },
       "status": {
        "type": [
         "null",
         "string"
        ]
       },
       "diff_pct": {
        "type": [
         "null",
         "number"
        ]
       },
       "diff_pixels": {
        "type": [
         "null",
         "number"
        ]
       },
       "height": {
        "type": [
         "null",
         "number"
        ]
       },
       "prev_height": {
        "type": [
         "null",
         "number"
        ]
       },
       "image": {
        "type": [
         "null",
         "string"
        ]
       },
       "error": {
        "type": "null"
       }
      },
      "required": [
       "diff_pct",
       "diff_pixels",
       "error",
       "height",
       "image",
       "page",
       "prev_height",
       "status",
       "view",
       "width"
      ]
     }
    }
   },
   "required": [
    "base",
    "changed_threshold_pct",
    "method",
    "results",
    "seconds",
    "summary",
    "updated"
   ]
  },
  "world-claims": {
   "title": "What developers advertise, by market",
   "description": "Contract of https://kolaboro.com/data/world-claims.json. Per market: how many tracked projects, title and lease terms advertised, guaranteed-return language, permit claims, permit numbers and plans published, and advertised USD prices. Aggregates only.",
   "type": "object",
   "properties": {
    "updated": {
     "type": "string"
    },
    "projects": {
     "type": "number"
    },
    "markets": {
     "type": "object",
     "additionalProperties": {
      "type": "object",
      "properties": {
       "updated": {
        "type": [
         "null",
         "string"
        ]
       },
       "market": {
        "type": [
         "null",
         "string"
        ]
       },
       "source": {
        "type": [
         "null",
         "string"
        ]
       },
       "projects": {
        "type": [
         "null",
         "number"
        ]
       },
       "title": {
        "type": "object",
        "properties": {
         "leasehold": {
          "type": [
           "null",
           "number"
          ]
         },
         "known": {
          "type": [
           "null",
           "number"
          ]
         }
        }
       },
       "lease": {
        "type": "object",
        "properties": {
         "known": {
          "type": [
           "null",
           "number"
          ]
         },
         "median": {
          "type": [
           "null",
           "number"
          ]
         },
         "min": {
          "type": [
           "null",
           "number"
          ]
         },
         "max": {
          "type": [
           "null",
           "number"
          ]
         },
         "hist": {
          "type": "object",
          "properties": {
           "under 30": {
            "type": [
             "null",
             "number"
            ]
           },
           "30 to 34": {
            "type": [
             "null",
             "number"
            ]
           },
           "35 to 39": {
            "type": [
             "null",
             "number"
            ]
           },
           "40 or more": {
            "type": [
             "null",
             "number"
            ]
           }
          }
         }
        }
       },
       "extension_promised": {
        "type": "object",
        "properties": {
         "yes": {
          "type": [
           "null",
           "number"
          ]
         },
         "known": {
          "type": [
           "null",
           "number"
          ]
         }
        }
       },
       "guaranteed_language": {
        "type": [
         "null",
         "number"
        ]
       },
       "permit_claims": {
        "type": [
         "null",
         "number"
        ]
       },
       "permit_numbers_published": {
        "type": [
         "null",
         "number"
        ]
       },
       "plans_published": {
        "type": [
         "null",
         "number"
        ]
       },
       "price_usd": {
        "type": "object",
        "properties": {
         "known": {
          "type": [
           "null",
           "number"
          ]
         },
         "median": {
          "type": [
           "null",
           "number"
          ]
         },
         "min": {
          "type": [
           "null",
           "number"
          ]
         },
         "max": {
          "type": [
           "null",
           "number"
          ]
         }
        }
       },
       "yield": {
        "type": "object",
        "properties": {
         "known": {
          "type": [
           "null",
           "number"
          ]
         },
         "median": {
          "type": [
           "null",
           "number"
          ]
         },
         "max": {
          "type": [
           "null",
           "number"
          ]
         }
        }
       },
       "completion": {
        "anyOf": [
         {
          "type": "object",
          "properties": {
           "2027": {
            "type": [
             "null",
             "number"
            ]
           },
           "2028": {
            "type": [
             "null",
             "number"
            ]
           },
           "2029": {
            "type": [
             "null",
             "number"
            ]
           },
           "2030": {
            "type": [
             "null",
             "number"
            ]
           },
           "unknown": {
            "type": [
             "null",
             "number"
            ]
           },
           "2026": {
            "type": [
             "null",
             "number"
            ]
           }
          }
         },
         {
          "type": "object",
          "additionalProperties": {
           "type": [
            "null",
            "number"
           ]
          }
         },
         {
          "type": "object",
          "properties": {}
         },
         {
          "type": "object",
          "properties": {
           "2027": {
            "type": [
             "null",
             "number"
            ]
           },
           "2028": {
            "type": [
             "null",
             "number"
            ]
           },
           "2029": {
            "type": [
             "null",
             "number"
            ]
           },
           "unknown": {
            "type": [
             "null",
             "number"
            ]
           }
          }
         },
         {
          "type": "object",
          "properties": {
           "2024": {
            "type": [
             "null",
             "number"
            ]
           },
           "2026": {
            "type": [
             "null",
             "number"
            ]
           },
           "2027": {
            "type": [
             "null",
             "number"
            ]
           },
           "2028": {
            "type": [
             "null",
             "number"
            ]
           },
           "2029": {
            "type": [
             "null",
             "number"
            ]
           },
           "unknown": {
            "type": [
             "null",
             "number"
            ]
           }
          }
         },
         {
          "type": "object",
          "properties": {
           "2027": {
            "type": [
             "null",
             "number"
            ]
           },
           "unknown": {
            "type": [
             "null",
             "number"
            ]
           }
          }
         },
         {
          "type": "object",
          "properties": {
           "2023": {
            "type": [
             "null",
             "number"
            ]
           },
           "unknown": {
            "type": [
             "null",
             "number"
            ]
           }
          }
         },
         {
          "type": "object",
          "properties": {
           "2028": {
            "type": [
             "null",
             "number"
            ]
           },
           "unknown": {
            "type": [
             "null",
             "number"
            ]
           }
          }
         },
         {
          "type": "object",
          "properties": {
           "2027": {
            "type": [
             "null",
             "number"
            ]
           },
           "2028": {
            "type": [
             "null",
             "number"
            ]
           }
          }
         },
         {
          "type": "object",
          "properties": {
           "2026": {
            "type": [
             "null",
             "number"
            ]
           },
           "2027": {
            "type": [
             "null",
             "number"
            ]
           },
           "2028": {
            "type": [
             "null",
             "number"
            ]
           },
           "unknown": {
            "type": [
             "null",
             "number"
            ]
           }
          }
         },
         {
          "type": "object",
          "properties": {
           "2026": {
            "type": [
             "null",
             "number"
            ]
           },
           "2028": {
            "type": [
             "null",
             "number"
            ]
           },
           "2029": {
            "type": [
             "null",
             "number"
            ]
           },
           "unknown": {
            "type": [
             "null",
             "number"
            ]
           }
          }
         },
         {
          "type": "object",
          "properties": {
           "unknown": {
            "type": [
             "null",
             "number"
            ]
           }
          }
         },
         {
          "type": "object",
          "properties": {
           "2026": {
            "type": [
             "null",
             "number"
            ]
           },
           "2028": {
            "type": [
             "null",
             "number"
            ]
           }
          }
         },
         {
          "type": "object",
          "properties": {
           "2028": {
            "type": [
             "null",
             "number"
            ]
           }
          }
         },
         {
          "type": "object",
          "properties": {
           "2027": {
            "type": [
             "null",
             "number"
            ]
           },
           "2028": {
            "type": [
             "null",
             "number"
            ]
           },
           "unknown": {
            "type": [
             "null",
             "number"
            ]
           }
          }
         },
         {
          "type": "object",
          "properties": {
           "2026": {
            "type": [
             "null",
             "number"
            ]
           },
           "2029": {
            "type": [
             "null",
             "number"
            ]
           },
           "unknown": {
            "type": [
             "null",
             "number"
            ]
           }
          }
         },
         {
          "type": "object",
          "properties": {
           "2026": {
            "type": [
             "null",
             "number"
            ]
           },
           "2027": {
            "type": [
             "null",
             "number"
            ]
           },
           "unknown": {
            "type": [
             "null",
             "number"
            ]
           }
          }
         },
         {
          "type": "object",
          "properties": {
           "2025": {
            "type": [
             "null",
             "number"
            ]
           },
           "2026": {
            "type": [
             "null",
             "number"
            ]
           },
           "2027": {
            "type": [
             "null",
             "number"
            ]
           },
           "unknown": {
            "type": [
             "null",
             "number"
            ]
           }
          }
         },
         {
          "type": "object",
          "properties": {
           "2027": {
            "type": [
             "null",
             "number"
            ]
           }
          }
         },
         {
          "type": "object",
          "properties": {
           "2026": {
            "type": [
             "null",
             "number"
            ]
           }
          }
         },
         {
          "type": "object",
          "properties": {
           "2026": {
            "type": [
             "null",
             "number"
            ]
           },
           "2027": {
            "type": [
             "null",
             "number"
            ]
           },
           "2028": {
            "type": [
             "null",
             "number"
            ]
           },
           "2029": {
            "type": [
             "null",
             "number"
            ]
           },
           "2030": {
            "type": [
             "null",
             "number"
            ]
           },
           "unknown": {
            "type": [
             "null",
             "number"
            ]
           }
          }
         },
         {
          "type": "object",
          "properties": {
           "2029": {
            "type": [
             "null",
             "number"
            ]
           }
          }
         },
         {
          "type": "object",
          "properties": {
           "2027": {
            "type": [
             "null",
             "number"
            ]
           },
           "2028": {
            "type": [
             "null",
             "number"
            ]
           },
           "2029": {
            "type": [
             "null",
             "number"
            ]
           },
           "2030": {
            "type": [
             "null",
             "number"
            ]
           },
           "unknown": {
            "type": [
             "null",
             "number"
            ]
           }
          }
         },
         {
          "type": "object",
          "properties": {
           "2028": {
            "type": [
             "null",
             "number"
            ]
           },
           "2029": {
            "type": [
             "null",
             "number"
            ]
           }
          }
         },
         {
          "type": "object",
          "properties": {
           "2027": {
            "type": [
             "null",
             "number"
            ]
           },
           "2030": {
            "type": [
             "null",
             "number"
            ]
           }
          }
         },
         {
          "type": "object",
          "properties": {
           "2026": {
            "type": [
             "null",
             "number"
            ]
           },
           "2027": {
            "type": [
             "null",
             "number"
            ]
           },
           "2028": {
            "type": [
             "null",
             "number"
            ]
           },
           "2029": {
            "type": [
             "null",
             "number"
            ]
           },
           "unknown": {
            "type": [
             "null",
             "number"
            ]
           }
          }
         },
         {
          "type": "object",
          "properties": {
           "2026": {
            "type": [
             "null",
             "number"
            ]
           },
           "2027": {
            "type": [
             "null",
             "number"
            ]
           }
          }
         },
         {
          "type": "object",
          "properties": {
           "2025": {
            "type": [
             "null",
             "number"
            ]
           },
           "2027": {
            "type": [
             "null",
             "number"
            ]
           },
           "2028": {
            "type": [
             "null",
             "number"
            ]
           },
           "2029": {
            "type": [
             "null",
             "number"
            ]
           },
           "unknown": {
            "type": [
             "null",
             "number"
            ]
           }
          }
         },
         {
          "type": "object",
          "properties": {
           "2026": {
            "type": [
             "null",
             "number"
            ]
           },
           "2028": {
            "type": [
             "null",
             "number"
            ]
           },
           "unknown": {
            "type": [
             "null",
             "number"
            ]
           }
          }
         },
         {
          "type": "object",
          "properties": {
           "2029": {
            "type": [
             "null",
             "number"
            ]
           },
           "unknown": {
            "type": [
             "null",
             "number"
            ]
           }
          }
         },
         {
          "type": "object",
          "properties": {
           "2027": {
            "type": [
             "null",
             "number"
            ]
           },
           "2028": {
            "type": [
             "null",
             "number"
            ]
           },
           "2029": {
            "type": [
             "null",
             "number"
            ]
           },
           "2030": {
            "type": [
             "null",
             "number"
            ]
           },
           "2032": {
            "type": [
             "null",
             "number"
            ]
           },
           "unknown": {
            "type": [
             "null",
             "number"
            ]
           }
          }
         },
         {
          "type": "object",
          "properties": {
           "2023": {
            "type": [
             "null",
             "number"
            ]
           },
           "2028": {
            "type": [
             "null",
             "number"
            ]
           },
           "unknown": {
            "type": [
             "null",
             "number"
            ]
           }
          }
         },
         {
          "type": "object",
          "properties": {
           "2028": {
            "type": [
             "null",
             "number"
            ]
           },
           "2029": {
            "type": [
             "null",
             "number"
            ]
           },
           "unknown": {
            "type": [
             "null",
             "number"
            ]
           }
          }
         },
         {
          "type": "object",
          "properties": {
           "2029": {
            "type": [
             "null",
             "number"
            ]
           },
           "2030": {
            "type": [
             "null",
             "number"
            ]
           },
           "unknown": {
            "type": [
             "null",
             "number"
            ]
           }
          }
         },
         {
          "type": "object",
          "properties": {
           "2027": {
            "type": [
             "null",
             "number"
            ]
           },
           "2028": {
            "type": [
             "null",
             "number"
            ]
           },
           "2030": {
            "type": [
             "null",
             "number"
            ]
           },
           "2032": {
            "type": [
             "null",
             "number"
            ]
           },
           "unknown": {
            "type": [
             "null",
             "number"
            ]
           }
          }
         },
         {
          "type": "object",
          "properties": {
           "2027": {
            "type": [
             "null",
             "number"
            ]
           },
           "2029": {
            "type": [
             "null",
             "number"
            ]
           },
           "2030": {
            "type": [
             "null",
             "number"
            ]
           },
           "unknown": {
            "type": [
             "null",
             "number"
            ]
           }
          }
         },
         {
          "type": "object",
          "properties": {
           "2025": {
            "type": [
             "null",
             "number"
            ]
           },
           "2028": {
            "type": [
             "null",
             "number"
            ]
           },
           "unknown": {
            "type": [
             "null",
             "number"
            ]
           }
          }
         },
         {
          "type": "object",
          "properties": {
           "2027": {
            "type": [
             "null",
             "number"
            ]
           },
           "2028": {
            "type": [
             "null",
             "number"
            ]
           },
           "2030": {
            "type": [
             "null",
             "number"
            ]
           },
           "unknown": {
            "type": [
             "null",
             "number"
            ]
           }
          }
         },
         {
          "type": "object",
          "properties": {
           "2026": {
            "type": [
             "null",
             "number"
            ]
           },
           "2027": {
            "type": [
             "null",
             "number"
            ]
           },
           "2030": {
            "type": [
             "null",
             "number"
            ]
           },
           "unknown": {
            "type": [
             "null",
             "number"
            ]
           }
          }
         },
         {
          "type": "object",
          "properties": {
           "2030": {
            "type": [
             "null",
             "number"
            ]
           },
           "unknown": {
            "type": [
             "null",
             "number"
            ]
           }
          }
         },
         {
          "type": "object",
          "properties": {
           "2027": {
            "type": [
             "null",
             "number"
            ]
           },
           "2029": {
            "type": [
             "null",
             "number"
            ]
           },
           "2031": {
            "type": [
             "null",
             "number"
            ]
           },
           "unknown": {
            "type": [
             "null",
             "number"
            ]
           }
          }
         },
         {
          "type": "object",
          "properties": {
           "2027": {
            "type": [
             "null",
             "number"
            ]
           },
           "2029": {
            "type": [
             "null",
             "number"
            ]
           },
           "unknown": {
            "type": [
             "null",
             "number"
            ]
           }
          }
         },
         {
          "type": "object",
          "properties": {
           "2027": {
            "type": [
             "null",
             "number"
            ]
           },
           "2029": {
            "type": [
             "null",
             "number"
            ]
           }
          }
         },
         {
          "type": "object",
          "properties": {
           "2020": {
            "type": [
             "null",
             "number"
            ]
           },
           "unknown": {
            "type": [
             "null",
             "number"
            ]
           }
          }
         }
        ]
       },
       "runs": {
        "type": "array",
        "items": {
         "type": "object",
         "properties": {
          "date": {
           "type": [
            "null",
            "string"
           ]
          },
          "mode": {
           "type": [
            "null",
            "string"
           ]
          },
          "pages_ok": {
           "type": [
            "null",
            "number"
           ]
          },
          "pages_failed": {
           "type": [
            "null",
            "number"
           ]
          },
          "changes": {
           "type": [
            "null",
            "number"
           ]
          }
         }
        }
       }
      },
      "required": [
       "completion",
       "extension_promised",
       "guaranteed_language",
       "lease",
       "market",
       "permit_claims",
       "permit_numbers_published",
       "plans_published",
       "price_usd",
       "projects",
       "runs",
       "source",
       "title",
       "updated",
       "yield"
      ]
     }
    }
   },
   "required": [
    "markets",
    "projects",
    "updated"
   ]
  }
 }
}
