{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://naturefunding.org/data.schema.json",
  "title": "naturefunding.org data.json",
  "description": "Grants and funding for nature restoration and conservation, with evidence for every stated fact. Field guide: https://naturefunding.org/data/",
  "type": "object",
  "required": [
    "name",
    "url",
    "license",
    "generated_on",
    "programmes"
  ],
  "properties": {
    "$schema": {
      "type": "string",
      "format": "uri",
      "description": "This schema’s URL."
    },
    "name": {
      "type": "string",
      "description": "Title of the dataset."
    },
    "url": {
      "type": "string",
      "format": "uri",
      "description": "The site."
    },
    "license": {
      "type": "string",
      "description": "SPDX licence of the data. Quotes are the funders’ words and are not covered."
    },
    "attribution": {
      "type": "string",
      "description": "How to credit the data."
    },
    "source": {
      "type": "string",
      "format": "uri",
      "description": "The repository the data is built from."
    },
    "generated_on": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "The day this file was built (YYYY-MM-DD). Statuses are as of the evidence dates, not this day."
    },
    "note": {
      "type": "string",
      "description": "How to read the evidence."
    },
    "programmes": {
      "type": "array",
      "description": "Every programme, including ones hidden from the finder after 90 days without a check.",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "maxLength": 80,
            "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$",
            "description": "Stable identifier and URL slug: the listing is /p/{id}/. Facts change; the id does not."
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200,
            "description": "The programme’s name, as the funder writes it."
          },
          "funder": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200,
                "description": "The organisation’s name."
              },
              "url": {
                "type": "string",
                "maxLength": 500,
                "format": "uri",
                "description": "The organisation’s website."
              }
            },
            "required": [
              "name",
              "url"
            ],
            "additionalProperties": false,
            "description": "The organisation that provides the money."
          },
          "administered_by": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 200,
                    "description": "The organisation’s name."
                  },
                  "url": {
                    "type": "string",
                    "maxLength": 500,
                    "format": "uri",
                    "description": "The organisation’s website."
                  }
                },
                "required": [
                  "name",
                  "url"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ],
            "description": "The organisation that runs the call for the funder (for example a UNDP country office), or null."
          },
          "parent": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 80,
                "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$"
              },
              {
                "type": "null"
              }
            ],
            "description": "The id of the umbrella programme this one belongs to (a country programme’s global programme), or null."
          },
          "url": {
            "type": "string",
            "maxLength": 500,
            "format": "uri",
            "description": "The funder’s main page for the programme."
          },
          "summary": {
            "type": "string",
            "minLength": 20,
            "maxLength": 400,
            "description": "One or two sentences in naturefunding.org’s own words. Not a quote."
          },
          "kind": {
            "type": "string",
            "enum": [
              "grant",
              "partnership"
            ],
            "description": "“partnership” for paid work under contract (planting partners), which is not a grant. Missing means grant."
          },
          "approaches": {
            "minItems": 1,
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "reforestation",
                "agroforestry",
                "natural_regeneration",
                "mangroves",
                "wetlands",
                "grasslands",
                "peatlands",
                "coastal_marine",
                "freshwater",
                "species_conservation",
                "protected_areas",
                "community_conservation",
                "sustainable_land_use",
                "urban_nature",
                "research"
              ]
            },
            "description": "naturefunding.org’s classification of the work it supports, from the funder’s description."
          },
          "applicant_types": {
            "anyOf": [
              {
                "minItems": 1,
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "ngo",
                    "community_group",
                    "indigenous_organization",
                    "research_institution",
                    "individual",
                    "government",
                    "social_enterprise",
                    "company"
                  ]
                }
              },
              {
                "type": "null"
              }
            ],
            "description": "Who can apply, in our categories from the funder’s words (the quote is in evidence), or null when the pages we read don’t say."
          },
          "geography": {
            "anyOf": [
              {
                "oneOf": [
                  {
                    "type": "object",
                    "properties": {
                      "scope": {
                        "type": "string",
                        "const": "global",
                        "description": "global (anywhere), countries (a list) or regions (a group the funder names, such as “ODA-eligible countries”)."
                      }
                    },
                    "required": [
                      "scope"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "scope": {
                        "type": "string",
                        "const": "countries",
                        "description": "global (anywhere), countries (a list) or regions (a group the funder names, such as “ODA-eligible countries”)."
                      },
                      "countries": {
                        "minItems": 1,
                        "maxItems": 250,
                        "type": "array",
                        "items": {
                          "type": "string",
                          "pattern": "^[A-Z]{2}$"
                        },
                        "description": "ISO 3166-1 alpha-2 country codes."
                      },
                      "label": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 200,
                        "description": "The funder’s own name for the area or group."
                      }
                    },
                    "required": [
                      "scope",
                      "countries"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "scope": {
                        "type": "string",
                        "const": "regions",
                        "description": "global (anywhere), countries (a list) or regions (a group the funder names, such as “ODA-eligible countries”)."
                      },
                      "regions": {
                        "minItems": 1,
                        "type": "array",
                        "items": {
                          "type": "string",
                          "enum": [
                            "africa",
                            "asia",
                            "europe",
                            "latin_america_caribbean",
                            "middle_east",
                            "north_america",
                            "oceania"
                          ]
                        },
                        "description": "Broad regions the group covers."
                      },
                      "label": {
                        "type": "string",
                        "minLength": 3,
                        "maxLength": 200,
                        "description": "The funder’s own name for the area or group."
                      }
                    },
                    "required": [
                      "scope",
                      "regions",
                      "label"
                    ],
                    "additionalProperties": false
                  }
                ]
              },
              {
                "type": "null"
              }
            ],
            "description": "Where projects can be, in our categories from the funder’s words (the quote is in evidence), or null when the pages we read don’t say."
          },
          "access": {
            "type": "string",
            "enum": [
              "direct",
              "intermediary",
              "invitation_only",
              "unspecified"
            ],
            "description": "How an applicant reaches the money: direct (apply to an open call), intermediary (apply to a partner, not the funder), invitation_only (no unsolicited proposals), unspecified."
          },
          "window": {
            "type": "string",
            "enum": [
              "fixed",
              "rolling",
              "unspecified"
            ],
            "description": "fixed (rounds with deadlines), rolling (apply any time) or unspecified."
          },
          "amount": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "currency": {
                    "type": "string",
                    "pattern": "^[A-Z]{3}$",
                    "description": "ISO 4217 currency code."
                  },
                  "min": {
                    "type": "number",
                    "exclusiveMinimum": 0,
                    "description": "The smallest grant, when stated."
                  },
                  "max": {
                    "type": "number",
                    "exclusiveMinimum": 0,
                    "description": "The largest grant, when stated."
                  },
                  "typical": {
                    "type": "boolean",
                    "const": true,
                    "description": "true when the funder gives a usual range (“typically”), not hard limits."
                  },
                  "max_exclusive": {
                    "type": "boolean",
                    "const": true,
                    "description": "true when the funder says “less than” the max, not “up to”."
                  },
                  "per": {
                    "type": "string",
                    "enum": [
                      "year"
                    ],
                    "description": "“year” when the amount is per year, not per grant."
                  },
                  "note": {
                    "type": "string",
                    "minLength": 3,
                    "maxLength": 200,
                    "description": "A qualifier from the same quote, in our words."
                  }
                },
                "required": [
                  "currency"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ],
            "description": "Grant size in the funder’s currency, or null when not stated."
          },
          "co_finance_required": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "true or false when the funder says whether co-funding is required; null when it doesn’t."
          },
          "reporting": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 10,
                "maxLength": 600
              },
              {
                "type": "null"
              }
            ],
            "description": "What the funder asks grantees to report, in our words, or null."
          },
          "calls": {
            "maxItems": 20,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "maxLength": 80,
                  "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$",
                  "description": "Identifier of the call, unique within its programme."
                },
                "label": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 200,
                  "description": "The call’s name, as the funder writes it."
                },
                "url": {
                  "type": "string",
                  "maxLength": 500,
                  "format": "uri",
                  "description": "The funder’s page for this call."
                },
                "status": {
                  "type": "string",
                  "enum": [
                    "upcoming",
                    "open",
                    "closed",
                    "suspended",
                    "unknown"
                  ],
                  "description": "upcoming, open, closed, suspended or unknown, as of evidence.status.checked_at. A call closed because its stated deadline passed carries its deadline evidence there instead."
                },
                "opens": {
                  "anyOf": [
                    {
                      "type": "string",
                      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "description": "The date the call opens (YYYY-MM-DD), only when the funder states a firm date with its year; else null."
                },
                "deadline": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "date": {
                          "type": "string",
                          "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                          "description": "The deadline day (YYYY-MM-DD)."
                        },
                        "time": {
                          "type": "string",
                          "pattern": "^\\d{2}:\\d{2}$",
                          "description": "The cutoff time (HH:MM), when the funder states one."
                        },
                        "timezone": {
                          "type": "string",
                          "maxLength": 64,
                          "description": "The time zone of the cutoff time, when the funder states one: an IANA name where we could map it, otherwise the funder’s abbreviation or offset (“CEST”, “EDT (UTC-4)”)."
                        },
                        "text": {
                          "type": "string",
                          "minLength": 3,
                          "maxLength": 200,
                          "description": "The deadline as the funder wrote it."
                        }
                      },
                      "required": [
                        "date",
                        "text"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "description": "The deadline, only when the funder states it with its year; else null. Never inferred."
                },
                "evidence": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "object",
                      "properties": {
                        "source_url": {
                          "type": "string",
                          "maxLength": 500,
                          "format": "uri",
                          "description": "The page the fact was read from: the funder’s, or the organisation running the programme."
                        },
                        "quote": {
                          "type": "string",
                          "maxLength": 400,
                          "description": "The exact words on that page that state the fact. The funder’s words, not covered by our licence."
                        },
                        "checked_at": {
                          "type": "string",
                          "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                          "description": "The last day we read that page and found these words (YYYY-MM-DD)."
                        },
                        "method": {
                          "type": "string",
                          "enum": [
                            "page",
                            "api",
                            "human"
                          ],
                          "description": "How it was read: page (read from the web page), api (a funder’s API) or human (a person re-read the page by hand)."
                        }
                      },
                      "required": [
                        "source_url",
                        "quote",
                        "checked_at",
                        "method"
                      ],
                      "additionalProperties": false,
                      "description": "Where status was read, when it is stated."
                    },
                    "opens": {
                      "type": "object",
                      "properties": {
                        "source_url": {
                          "type": "string",
                          "maxLength": 500,
                          "format": "uri",
                          "description": "The page the fact was read from: the funder’s, or the organisation running the programme."
                        },
                        "quote": {
                          "type": "string",
                          "maxLength": 400,
                          "description": "The exact words on that page that state the fact. The funder’s words, not covered by our licence."
                        },
                        "checked_at": {
                          "type": "string",
                          "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                          "description": "The last day we read that page and found these words (YYYY-MM-DD)."
                        },
                        "method": {
                          "type": "string",
                          "enum": [
                            "page",
                            "api",
                            "human"
                          ],
                          "description": "How it was read: page (read from the web page), api (a funder’s API) or human (a person re-read the page by hand)."
                        }
                      },
                      "required": [
                        "source_url",
                        "quote",
                        "checked_at",
                        "method"
                      ],
                      "additionalProperties": false,
                      "description": "Where opens was read, when it is stated."
                    },
                    "deadline": {
                      "type": "object",
                      "properties": {
                        "source_url": {
                          "type": "string",
                          "maxLength": 500,
                          "format": "uri",
                          "description": "The page the fact was read from: the funder’s, or the organisation running the programme."
                        },
                        "quote": {
                          "type": "string",
                          "maxLength": 400,
                          "description": "The exact words on that page that state the fact. The funder’s words, not covered by our licence."
                        },
                        "checked_at": {
                          "type": "string",
                          "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                          "description": "The last day we read that page and found these words (YYYY-MM-DD)."
                        },
                        "method": {
                          "type": "string",
                          "enum": [
                            "page",
                            "api",
                            "human"
                          ],
                          "description": "How it was read: page (read from the web page), api (a funder’s API) or human (a person re-read the page by hand)."
                        }
                      },
                      "required": [
                        "source_url",
                        "quote",
                        "checked_at",
                        "method"
                      ],
                      "additionalProperties": false,
                      "description": "Where deadline was read, when it is stated."
                    },
                    "recurring": {
                      "type": "object",
                      "properties": {
                        "source_url": {
                          "type": "string",
                          "maxLength": 500,
                          "format": "uri",
                          "description": "The page the fact was read from: the funder’s, or the organisation running the programme."
                        },
                        "quote": {
                          "type": "string",
                          "maxLength": 400,
                          "description": "The exact words on that page that state the fact. The funder’s words, not covered by our licence."
                        },
                        "checked_at": {
                          "type": "string",
                          "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                          "description": "The last day we read that page and found these words (YYYY-MM-DD)."
                        },
                        "method": {
                          "type": "string",
                          "enum": [
                            "page",
                            "api",
                            "human"
                          ],
                          "description": "How it was read: page (read from the web page), api (a funder’s API) or human (a person re-read the page by hand)."
                        }
                      },
                      "required": [
                        "source_url",
                        "quote",
                        "checked_at",
                        "method"
                      ],
                      "additionalProperties": false,
                      "description": "Where recurring was read, when it is stated."
                    }
                  },
                  "required": [
                    "status"
                  ],
                  "additionalProperties": false,
                  "description": "Where status, opens, deadline and recurring were read."
                },
                "expected": {
                  "type": "string",
                  "minLength": 4,
                  "maxLength": 60,
                  "description": "When the funder expects an upcoming call to open, in its own words (“June 2027”). Firm dates go in opens."
                },
                "recurring": {
                  "type": "string",
                  "minLength": 5,
                  "maxLength": 200,
                  "description": "Dates the funder gives without a year, repeating each year, in our words."
                },
                "note": {
                  "type": "string",
                  "minLength": 3,
                  "maxLength": 200,
                  "description": "A condition the funder puts on the call, in our words (“Subject to funding approval”)."
                }
              },
              "required": [
                "id",
                "label",
                "url",
                "status",
                "opens",
                "deadline",
                "evidence"
              ],
              "additionalProperties": false
            },
            "description": "The rounds of applications we found. Intermediary and invitation-only programmes list none."
          },
          "evidence": {
            "type": "object",
            "properties": {
              "administered_by": {
                "type": "object",
                "properties": {
                  "source_url": {
                    "type": "string",
                    "maxLength": 500,
                    "format": "uri",
                    "description": "The page the fact was read from: the funder’s, or the organisation running the programme."
                  },
                  "quote": {
                    "type": "string",
                    "maxLength": 400,
                    "description": "The exact words on that page that state the fact. The funder’s words, not covered by our licence."
                  },
                  "checked_at": {
                    "type": "string",
                    "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                    "description": "The last day we read that page and found these words (YYYY-MM-DD)."
                  },
                  "method": {
                    "type": "string",
                    "enum": [
                      "page",
                      "api",
                      "human"
                    ],
                    "description": "How it was read: page (read from the web page), api (a funder’s API) or human (a person re-read the page by hand)."
                  }
                },
                "required": [
                  "source_url",
                  "quote",
                  "checked_at",
                  "method"
                ],
                "additionalProperties": false,
                "description": "Where administered_by was read, when it is stated."
              },
              "applicant_types": {
                "type": "object",
                "properties": {
                  "source_url": {
                    "type": "string",
                    "maxLength": 500,
                    "format": "uri",
                    "description": "The page the fact was read from: the funder’s, or the organisation running the programme."
                  },
                  "quote": {
                    "type": "string",
                    "maxLength": 400,
                    "description": "The exact words on that page that state the fact. The funder’s words, not covered by our licence."
                  },
                  "checked_at": {
                    "type": "string",
                    "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                    "description": "The last day we read that page and found these words (YYYY-MM-DD)."
                  },
                  "method": {
                    "type": "string",
                    "enum": [
                      "page",
                      "api",
                      "human"
                    ],
                    "description": "How it was read: page (read from the web page), api (a funder’s API) or human (a person re-read the page by hand)."
                  }
                },
                "required": [
                  "source_url",
                  "quote",
                  "checked_at",
                  "method"
                ],
                "additionalProperties": false,
                "description": "Where applicant_types was read, when it is stated."
              },
              "geography": {
                "type": "object",
                "properties": {
                  "source_url": {
                    "type": "string",
                    "maxLength": 500,
                    "format": "uri",
                    "description": "The page the fact was read from: the funder’s, or the organisation running the programme."
                  },
                  "quote": {
                    "type": "string",
                    "maxLength": 400,
                    "description": "The exact words on that page that state the fact. The funder’s words, not covered by our licence."
                  },
                  "checked_at": {
                    "type": "string",
                    "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                    "description": "The last day we read that page and found these words (YYYY-MM-DD)."
                  },
                  "method": {
                    "type": "string",
                    "enum": [
                      "page",
                      "api",
                      "human"
                    ],
                    "description": "How it was read: page (read from the web page), api (a funder’s API) or human (a person re-read the page by hand)."
                  }
                },
                "required": [
                  "source_url",
                  "quote",
                  "checked_at",
                  "method"
                ],
                "additionalProperties": false,
                "description": "Where geography was read, when it is stated."
              },
              "access": {
                "type": "object",
                "properties": {
                  "source_url": {
                    "type": "string",
                    "maxLength": 500,
                    "format": "uri",
                    "description": "The page the fact was read from: the funder’s, or the organisation running the programme."
                  },
                  "quote": {
                    "type": "string",
                    "maxLength": 400,
                    "description": "The exact words on that page that state the fact. The funder’s words, not covered by our licence."
                  },
                  "checked_at": {
                    "type": "string",
                    "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                    "description": "The last day we read that page and found these words (YYYY-MM-DD)."
                  },
                  "method": {
                    "type": "string",
                    "enum": [
                      "page",
                      "api",
                      "human"
                    ],
                    "description": "How it was read: page (read from the web page), api (a funder’s API) or human (a person re-read the page by hand)."
                  }
                },
                "required": [
                  "source_url",
                  "quote",
                  "checked_at",
                  "method"
                ],
                "additionalProperties": false,
                "description": "Where access was read, when it is stated."
              },
              "window": {
                "type": "object",
                "properties": {
                  "source_url": {
                    "type": "string",
                    "maxLength": 500,
                    "format": "uri",
                    "description": "The page the fact was read from: the funder’s, or the organisation running the programme."
                  },
                  "quote": {
                    "type": "string",
                    "maxLength": 400,
                    "description": "The exact words on that page that state the fact. The funder’s words, not covered by our licence."
                  },
                  "checked_at": {
                    "type": "string",
                    "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                    "description": "The last day we read that page and found these words (YYYY-MM-DD)."
                  },
                  "method": {
                    "type": "string",
                    "enum": [
                      "page",
                      "api",
                      "human"
                    ],
                    "description": "How it was read: page (read from the web page), api (a funder’s API) or human (a person re-read the page by hand)."
                  }
                },
                "required": [
                  "source_url",
                  "quote",
                  "checked_at",
                  "method"
                ],
                "additionalProperties": false,
                "description": "Where window was read, when it is stated."
              },
              "amount": {
                "type": "object",
                "properties": {
                  "source_url": {
                    "type": "string",
                    "maxLength": 500,
                    "format": "uri",
                    "description": "The page the fact was read from: the funder’s, or the organisation running the programme."
                  },
                  "quote": {
                    "type": "string",
                    "maxLength": 400,
                    "description": "The exact words on that page that state the fact. The funder’s words, not covered by our licence."
                  },
                  "checked_at": {
                    "type": "string",
                    "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                    "description": "The last day we read that page and found these words (YYYY-MM-DD)."
                  },
                  "method": {
                    "type": "string",
                    "enum": [
                      "page",
                      "api",
                      "human"
                    ],
                    "description": "How it was read: page (read from the web page), api (a funder’s API) or human (a person re-read the page by hand)."
                  }
                },
                "required": [
                  "source_url",
                  "quote",
                  "checked_at",
                  "method"
                ],
                "additionalProperties": false,
                "description": "Where amount was read, when it is stated."
              },
              "co_finance_required": {
                "type": "object",
                "properties": {
                  "source_url": {
                    "type": "string",
                    "maxLength": 500,
                    "format": "uri",
                    "description": "The page the fact was read from: the funder’s, or the organisation running the programme."
                  },
                  "quote": {
                    "type": "string",
                    "maxLength": 400,
                    "description": "The exact words on that page that state the fact. The funder’s words, not covered by our licence."
                  },
                  "checked_at": {
                    "type": "string",
                    "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                    "description": "The last day we read that page and found these words (YYYY-MM-DD)."
                  },
                  "method": {
                    "type": "string",
                    "enum": [
                      "page",
                      "api",
                      "human"
                    ],
                    "description": "How it was read: page (read from the web page), api (a funder’s API) or human (a person re-read the page by hand)."
                  }
                },
                "required": [
                  "source_url",
                  "quote",
                  "checked_at",
                  "method"
                ],
                "additionalProperties": false,
                "description": "Where co_finance_required was read, when it is stated."
              },
              "reporting": {
                "type": "object",
                "properties": {
                  "source_url": {
                    "type": "string",
                    "maxLength": 500,
                    "format": "uri",
                    "description": "The page the fact was read from: the funder’s, or the organisation running the programme."
                  },
                  "quote": {
                    "type": "string",
                    "maxLength": 400,
                    "description": "The exact words on that page that state the fact. The funder’s words, not covered by our licence."
                  },
                  "checked_at": {
                    "type": "string",
                    "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                    "description": "The last day we read that page and found these words (YYYY-MM-DD)."
                  },
                  "method": {
                    "type": "string",
                    "enum": [
                      "page",
                      "api",
                      "human"
                    ],
                    "description": "How it was read: page (read from the web page), api (a funder’s API) or human (a person re-read the page by hand)."
                  }
                },
                "required": [
                  "source_url",
                  "quote",
                  "checked_at",
                  "method"
                ],
                "additionalProperties": false,
                "description": "Where reporting was read, when it is stated."
              }
            },
            "additionalProperties": false,
            "description": "For each stated programme-level fact, where it was read: the field name maps to an evidence object."
          },
          "checked_at": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "description": "The oldest evidence date: every fact in this programme was read on or after this day (YYYY-MM-DD)."
          }
        },
        "required": [
          "id",
          "name",
          "funder",
          "administered_by",
          "parent",
          "url",
          "summary",
          "approaches",
          "applicant_types",
          "geography",
          "access",
          "window",
          "amount",
          "co_finance_required",
          "reporting",
          "calls",
          "evidence",
          "checked_at"
        ],
        "additionalProperties": false
      }
    }
  }
}