{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/open-mobility-foundation/main/json-schema/open-mobility-foundation-geography-schema.json",
  "title": "models/geography",
  "description": "A Geography object is a description of geographical information, e.g. a multi-polygon, represented via GeoJSON.",
  "x-generated": "2026-10-09",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/open-mobility-foundation-mds-geography-openapi.yml#/components/schemas/geography",
  "type": "object",
  "x-stoplight": {
    "id": "zk1g7bjjxke2l"
  },
  "additionalProperties": false,
  "required": [
    "name",
    "geography_id",
    "geography_json",
    "published_date"
  ],
  "properties": {
    "name": {
      "$ref": "#/$defs/data-types_string",
      "description": "Name of geography"
    },
    "description": {
      "$ref": "#/$defs/data-types_string",
      "description": "Description of geography."
    },
    "geography_type": {
      "type": "string",
      "description": "The type of geography."
    },
    "geography_id": {
      "$ref": "#/$defs/data-types_uuid",
      "description": "Unique ID of geography."
    },
    "geography_json": {
      "$ref": "#/$defs/data-types_geojson-featurecollection",
      "description": "The [GeoJSON `FeatureCollection`](https://geojson.org/) that defines the geographical coordinates."
    },
    "effective_date": {
      "$ref": "#/$defs/data-types_timestamp",
      "description": "The date at which a Geography is considered 'live'. Must be at or after `published_date`."
    },
    "published_date": {
      "$ref": "#/$defs/data-types_timestamp",
      "description": "Timestamp at which the geography was published i.e. made immutable."
    },
    "retire_date": {
      "$ref": "#/$defs/data-types_timestamp",
      "description": "Time that the geography is slated to retire. Once the retire date\nis passed, new policies can no longer reference it and old policies\nreferencing it should be updated. Retired geographies should continue\nto be returned in the geographies list. Must be after effective_date."
    },
    "prev_geographies": {
      "$ref": "#/$defs/data-types_uuid-array",
      "description": "Unique IDs of prior geographies replaced by this one.",
      "uniqueItems": true
    }
  },
  "$defs": {
    "data-types_geojson-featurecollection": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "$id": "https://geojson.org/schema/FeatureCollection.json",
      "title": "data-types/geojson-featurecollection",
      "type": "object",
      "x-stoplight": {
        "id": "r1pr3zusc93mb"
      },
      "required": [
        "type",
        "features"
      ],
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "FeatureCollection"
          ]
        },
        "features": {
          "type": "array",
          "items": {
            "title": "GeoJSON Feature",
            "type": "object",
            "required": [
              "type",
              "properties",
              "geometry"
            ],
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "Feature"
                ]
              },
              "id": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              },
              "properties": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "object"
                  }
                ]
              },
              "geometry": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "title": "GeoJSON Point",
                    "type": "object",
                    "required": [
                      "type",
                      "coordinates"
                    ],
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "Point"
                        ]
                      },
                      "coordinates": {
                        "type": "array",
                        "minItems": 2,
                        "items": {
                          "type": "number"
                        }
                      },
                      "bbox": {
                        "type": "array",
                        "minItems": 4,
                        "items": {
                          "type": "number"
                        }
                      }
                    }
                  },
                  {
                    "title": "GeoJSON LineString",
                    "type": "object",
                    "required": [
                      "type",
                      "coordinates"
                    ],
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "LineString"
                        ]
                      },
                      "coordinates": {
                        "type": "array",
                        "minItems": 2,
                        "items": {
                          "type": "array",
                          "minItems": 2,
                          "items": {
                            "type": "number"
                          }
                        }
                      },
                      "bbox": {
                        "type": "array",
                        "minItems": 4,
                        "items": {
                          "type": "number"
                        }
                      }
                    }
                  },
                  {
                    "title": "GeoJSON Polygon",
                    "type": "object",
                    "required": [
                      "type",
                      "coordinates"
                    ],
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "Polygon"
                        ]
                      },
                      "coordinates": {
                        "type": "array",
                        "items": {
                          "type": "array",
                          "minItems": 4,
                          "items": {
                            "type": "array",
                            "minItems": 2,
                            "items": {
                              "type": "number"
                            }
                          }
                        }
                      },
                      "bbox": {
                        "type": "array",
                        "minItems": 4,
                        "items": {
                          "type": "number"
                        }
                      }
                    }
                  },
                  {
                    "title": "GeoJSON MultiPoint",
                    "type": "object",
                    "required": [
                      "type",
                      "coordinates"
                    ],
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "MultiPoint"
                        ]
                      },
                      "coordinates": {
                        "type": "array",
                        "items": {
                          "type": "array",
                          "minItems": 2,
                          "items": {
                            "type": "number"
                          }
                        }
                      },
                      "bbox": {
                        "type": "array",
                        "minItems": 4,
                        "items": {
                          "type": "number"
                        }
                      }
                    }
                  },
                  {
                    "title": "GeoJSON MultiLineString",
                    "type": "object",
                    "required": [
                      "type",
                      "coordinates"
                    ],
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "MultiLineString"
                        ]
                      },
                      "coordinates": {
                        "type": "array",
                        "items": {
                          "type": "array",
                          "minItems": 2,
                          "items": {
                            "type": "array",
                            "minItems": 2,
                            "items": {
                              "type": "number"
                            }
                          }
                        }
                      },
                      "bbox": {
                        "type": "array",
                        "minItems": 4,
                        "items": {
                          "type": "number"
                        }
                      }
                    }
                  },
                  {
                    "title": "GeoJSON MultiPolygon",
                    "type": "object",
                    "required": [
                      "type",
                      "coordinates"
                    ],
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "MultiPolygon"
                        ]
                      },
                      "coordinates": {
                        "type": "array",
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "array",
                            "minItems": 4,
                            "items": {
                              "type": "array",
                              "minItems": 2,
                              "items": {
                                "type": "number"
                              }
                            }
                          }
                        }
                      },
                      "bbox": {
                        "type": "array",
                        "minItems": 4,
                        "items": {
                          "type": "number"
                        }
                      }
                    }
                  },
                  {
                    "title": "GeoJSON GeometryCollection",
                    "type": "object",
                    "required": [
                      "type",
                      "geometries"
                    ],
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "GeometryCollection"
                        ]
                      },
                      "geometries": {
                        "type": "array",
                        "items": {
                          "oneOf": [
                            {
                              "title": "GeoJSON Point",
                              "type": "object",
                              "required": [
                                "type",
                                "coordinates"
                              ],
                              "properties": {
                                "type": {
                                  "type": "string",
                                  "enum": [
                                    "Point"
                                  ]
                                },
                                "coordinates": {
                                  "type": "array",
                                  "minItems": 2,
                                  "items": {
                                    "type": "number"
                                  }
                                },
                                "bbox": {
                                  "type": "array",
                                  "minItems": 4,
                                  "items": {
                                    "type": "number"
                                  }
                                }
                              }
                            },
                            {
                              "title": "GeoJSON LineString",
                              "type": "object",
                              "required": [
                                "type",
                                "coordinates"
                              ],
                              "properties": {
                                "type": {
                                  "type": "string",
                                  "enum": [
                                    "LineString"
                                  ]
                                },
                                "coordinates": {
                                  "type": "array",
                                  "minItems": 2,
                                  "items": {
                                    "type": "array",
                                    "minItems": 2,
                                    "items": {
                                      "type": "number"
                                    }
                                  }
                                },
                                "bbox": {
                                  "type": "array",
                                  "minItems": 4,
                                  "items": {
                                    "type": "number"
                                  }
                                }
                              }
                            },
                            {
                              "title": "GeoJSON Polygon",
                              "type": "object",
                              "required": [
                                "type",
                                "coordinates"
                              ],
                              "properties": {
                                "type": {
                                  "type": "string",
                                  "enum": [
                                    "Polygon"
                                  ]
                                },
                                "coordinates": {
                                  "type": "array",
                                  "items": {
                                    "type": "array",
                                    "minItems": 4,
                                    "items": {
                                      "type": "array",
                                      "minItems": 2,
                                      "items": {
                                        "type": "number"
                                      }
                                    }
                                  }
                                },
                                "bbox": {
                                  "type": "array",
                                  "minItems": 4,
                                  "items": {
                                    "type": "number"
                                  }
                                }
                              }
                            },
                            {
                              "title": "GeoJSON MultiPoint",
                              "type": "object",
                              "required": [
                                "type",
                                "coordinates"
                              ],
                              "properties": {
                                "type": {
                                  "type": "string",
                                  "enum": [
                                    "MultiPoint"
                                  ]
                                },
                                "coordinates": {
                                  "type": "array",
                                  "items": {
                                    "type": "array",
                                    "minItems": 2,
                                    "items": {
                                      "type": "number"
                                    }
                                  }
                                },
                                "bbox": {
                                  "type": "array",
                                  "minItems": 4,
                                  "items": {
                                    "type": "number"
                                  }
                                }
                              }
                            },
                            {
                              "title": "GeoJSON MultiLineString",
                              "type": "object",
                              "required": [
                                "type",
                                "coordinates"
                              ],
                              "properties": {
                                "type": {
                                  "type": "string",
                                  "enum": [
                                    "MultiLineString"
                                  ]
                                },
                                "coordinates": {
                                  "type": "array",
                                  "items": {
                                    "type": "array",
                                    "minItems": 2,
                                    "items": {
                                      "type": "array",
                                      "minItems": 2,
                                      "items": {
                                        "type": "number"
                                      }
                                    }
                                  }
                                },
                                "bbox": {
                                  "type": "array",
                                  "minItems": 4,
                                  "items": {
                                    "type": "number"
                                  }
                                }
                              }
                            },
                            {
                              "title": "GeoJSON MultiPolygon",
                              "type": "object",
                              "required": [
                                "type",
                                "coordinates"
                              ],
                              "properties": {
                                "type": {
                                  "type": "string",
                                  "enum": [
                                    "MultiPolygon"
                                  ]
                                },
                                "coordinates": {
                                  "type": "array",
                                  "items": {
                                    "type": "array",
                                    "items": {
                                      "type": "array",
                                      "minItems": 4,
                                      "items": {
                                        "type": "array",
                                        "minItems": 2,
                                        "items": {
                                          "type": "number"
                                        }
                                      }
                                    }
                                  }
                                },
                                "bbox": {
                                  "type": "array",
                                  "minItems": 4,
                                  "items": {
                                    "type": "number"
                                  }
                                }
                              }
                            }
                          ]
                        }
                      },
                      "bbox": {
                        "type": "array",
                        "minItems": 4,
                        "items": {
                          "type": "number"
                        }
                      }
                    }
                  }
                ]
              },
              "bbox": {
                "type": "array",
                "minItems": 4,
                "items": {
                  "type": "number"
                }
              }
            }
          }
        },
        "bbox": {
          "type": "array",
          "minItems": 4,
          "items": {
            "type": "number"
          }
        }
      }
    },
    "data-types_string": {
      "title": "data-types/string",
      "description": "A length-limited string type.",
      "maxLength": 255,
      "pattern": "^(.*)$",
      "type": "string",
      "x-stoplight": {
        "id": "2vqv7166161kh"
      }
    },
    "data-types_timestamp": {
      "title": "data-types/timestamp",
      "description": "Integer milliseconds since Unix epoch.",
      "minimum": 1514764800000,
      "multipleOf": 1,
      "type": "number",
      "x-stoplight": {
        "id": "vliol1hqlxw6y"
      }
    },
    "data-types_uuid": {
      "title": "data-types/uuid",
      "description": "A UUID used to uniquely identity an object.",
      "type": "string",
      "x-stoplight": {
        "id": "np9kodwmy2kqa"
      },
      "format": "uuid",
      "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
    },
    "data-types_uuid-array": {
      "title": "data-types/uuid-array",
      "description": "Array of UUID.",
      "type": "array",
      "x-stoplight": {
        "id": "v932clitbqv31"
      },
      "uniqueItems": true,
      "items": {
        "$ref": "#/$defs/data-types_uuid"
      }
    }
  }
}