{
  "$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-mutable-stop-schema.json",
  "title": "models/mutable-stop",
  "description": "The fields of a Stop that can be changed in the Agency API.",
  "x-generated": "2026-10-09",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/open-mobility-foundation-mds-agency-openapi.yml#/components/schemas/mutable-stop",
  "type": "object",
  "x-stoplight": {
    "id": "xs6ehwfn5b629"
  },
  "required": [
    "stop_id",
    "last_updated"
  ],
  "properties": {
    "stop_id": {
      "$ref": "#/$defs/data-types_uuid",
      "description": "UUID for the stop."
    },
    "last_updated": {
      "$ref": "#/$defs/data-types_timestamp",
      "description": "Date/Time of the the stop was last updated."
    },
    "status": {
      "type": "object",
      "required": [
        "is_installed",
        "is_renting",
        "is_returning"
      ],
      "properties": {
        "is_installed": {
          "type": "boolean",
          "description": "See GBFS [station_status.json](https://github.com/NABSA/gbfs/blob/master/gbfs.md#station_statusjson)"
        },
        "is_renting": {
          "type": "boolean",
          "description": "See GBFS [station_status.json](https://github.com/NABSA/gbfs/blob/master/gbfs.md#station_statusjson)"
        },
        "is_returning": {
          "type": "boolean",
          "description": "See GBFS [station_status.json](https://github.com/NABSA/gbfs/blob/master/gbfs.md#station_statusjson)"
        }
      },
      "description": "The status of the stop."
    },
    "num_vehicles_available": {
      "$ref": "#/$defs/data-types_vehicle-type-counts",
      "description": "How many vehicles are available per [`vehicle_type`](./data-types/vehicle-type.yaml) at this stop?."
    },
    "num_vehicles_disabled": {
      "$ref": "#/$defs/data-types_vehicle-type-counts",
      "description": "How many vehicles are unavailable/reserved per [`vehicle_type`](./data-types/vehicle-type.yaml) at this stop?."
    },
    "rental_methods": {
      "type": "array",
      "uniqueItems": true,
      "items": {
        "enum": [
          "key",
          "creditcard",
          "paypass",
          "applepay",
          "androidpay",
          "transitcard",
          "accountnumber",
          "phone"
        ]
      },
      "description": "List of payment methods accepted at stop, see [GBFS Rental Methods](https://github.com/NABSA/gbfs/blob/master/gbfs.md#station_informationjson)."
    },
    "num_places_available": {
      "$ref": "#/$defs/data-types_vehicle-type-counts",
      "description": "How many places are free to be populated with vehicles per [`vehicle_type`](./data-types/vehicle-type.yaml) at this stop?"
    },
    "num_places_disabled": {
      "$ref": "#/$defs/data-types_vehicle-type-counts",
      "description": "How many places are disabled and unable to accept vehicles per [`vehicle_type`](./data-types/vehicle-type.yaml) at this stop?"
    },
    "devices": {
      "$ref": "#/$defs/data-types_uuid-array",
      "description": "List of `device_id` for [vehicles](./vehicle.yaml) currently at this stop."
    }
  },
  "$defs": {
    "data-types_integer-positive": {
      "title": "data-types/integer-positive",
      "description": "An integer greater than or equal to 0.",
      "minimum": 0,
      "type": "integer",
      "x-stoplight": {
        "id": "nfkphjmpm8yay"
      }
    },
    "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"
      }
    },
    "data-types_vehicle-type": {
      "title": "data-types/vehicle-type",
      "description": "The allowed types of of vehicles in MDS. Based off of `form_factor` in [GBFS vehicle_types](https://github.com/MobilityData/gbfs/blob/master/gbfs.md#vehicle_typesjson), with some additional to support MDS modes.",
      "type": "string",
      "x-stoplight": {
        "id": "gbhhyditnvs5w"
      },
      "enum": [
        "bicycle",
        "bus",
        "cargo_bicycle",
        "car",
        "delivery_robot",
        "moped",
        "motorcycle",
        "scooter_standing",
        "scooter_seated",
        "truck",
        "other"
      ]
    },
    "data-types_vehicle-type-counts": {
      "title": "data-types/vehicle-type-counts",
      "description": "A dictionary of vehicle counts, keyed by [`vehicle_type`](./vehicle-type.yaml).",
      "type": "object",
      "x-stoplight": {
        "id": "isobk3kg3rr8r"
      },
      "additionalProperties": false,
      "propertyNames": {
        "$ref": "#/$defs/data-types_vehicle-type"
      },
      "patternProperties": {
        "": {
          "$ref": "#/$defs/data-types_integer-positive"
        }
      }
    }
  }
}