{
    "$schema": "http://json-schema.org/draft-07/schema",
    "$id": "https://github.com/NABSA/gbfs/blob/v2.2/gbfs.md#gbfsjson",
    "description":
      "Auto-discovery file that links to all of the other files published by the system.",
    "type": "object",
    "properties": {
      "last_updated": {
        "description":
          "Last time the data in the feed was updated in POSIX time.",
        "type": "integer",
        "minimum": 1450155600
      },
      "ttl": {
        "description":
          "Number of seconds before the data in the feed will be updated again (0 if the data should always be refreshed).",
        "type": "integer",
        "minimum": 0
      },
      "version": {
        "description":
          "GBFS version number to which the feed conforms, according to the versioning framework (added in v1.1).",
        "type": "string",
        "const": "2.2"
      },
      "data": {
        "description": "Response data in the form of name:value pairs.",
        "type": "object",
        "patternProperties": {
          "^[a-z]{2,3}(-[A-Z]{2})?$": {
            "type": "object",
            "properties": {
              "feeds": {
                "description":
                  "An array of all of the feeds that are published by the auto-discovery file. Each element in the array is an object with the keys below.",
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "description":
                        "Key identifying the type of feed this is. The key must be the base file name defined in the spec for the corresponding feed type.",
                      "type": "string",
                      "enum": [
                        "gbfs",
                        "gbfs_versions",
                        "system_information",
                        "vehicle_types",
                        "station_information",
                        "station_status",
                        "free_bike_status",
                        "system_hours",
                        "system_alerts",
                        "system_calendar",
                        "system_regions",
                        "system_pricing_plans",
                        "geofencing_zones"
                      ]
                    },
                    "url": {
                      "description": "URL for the feed.",
                      "type": "string",
                      "format": "uri"
                    }
                  },
                  "required": ["name", "url"]
                }
              },
              "required": true
            }
          },
          "required": true
        },
        "additionalProperties": false
      }
    },
    "required": ["last_updated", "ttl", "version", "data"]
  }