Data Format

If you use JSON schemas, see https://raw.githubusercontent.com/MRT-Map/gatelogue/dist/schema.json.

If you use Typescript, see https://github.com/MRT-Map/gatelogue/blob/main/gatelogue-client/src/stores/schema.ts for Typescript types.

Specification

  • All links below reference their entries in the full reference page. These classes are here for convenience’s sake.

  • Do not hardcode any IDs in your project! They change with every update. If you need to reference a specific object, find it by its code/name/something unique to the object.

  • Check the version field in the GatelogueData object for the data format version. We will try our best to maintain backwards-compatibility, but we cannot guarantee.

  • The JSON file at data.json is of base type GatelogueData.

  • If you are using data_no_sources.json, all instances of Sourced[T] below are replaced with just the encapsulated type T.

    • If you are using gatelogue-types (Python), each object has a No-Source equivalent. The types for these objects have an NS suffix.

    • If you are using the Typescript types referenced above, the type for the JSON of the no-source version is GatelogueData<false> instead of simply GatelogueData or GatelogueData<true>.

  • tuple and set serialise to a list.

  • None serialises to null.

The current data format version is

v10
class gatelogue_types.GatelogueData(nodes: dict[~gatelogue_types.ID, ~gatelogue_types.Nodes], *, timestamp: str = <factory>, version: int = 10)

Bases: _GatelogueData

class gatelogue_types.Node(*, i: ID = None, source: set[str] = <factory>)

Bases: _Node

class gatelogue_types.LocatedNode(coordinates: Sourced[tuple[float, float]] | None=None, world: Sourced[World] | None = None, proximity: dict[~gatelogue_types.ID, ~gatelogue_types.Sourced[~gatelogue_types.Proximity]]=<factory>, shared_facility: list[Sourced[ID]] = <factory>, *, i: ID = None, source: set[str] = <factory>)

Bases: Node, _LocatedNode

Air Nodes

class gatelogue_types.AirFlight(*, i: ~gatelogue_types.ID = None, source: set[str] = <factory>, codes: set[str], mode: ~gatelogue_types.Sourced[~gatelogue_types.PlaneMode] | None = None, gates: list[~gatelogue_types.Sourced[~gatelogue_types.ID]] = <factory>, airline: ~gatelogue_types.Sourced[~gatelogue_types.ID] = None)

Bases: Node, _AirFlight

class gatelogue_types.AirAirport(coordinates: Sourced[tuple[float, float]] | None=None, world: Sourced[World] | None = None, proximity: dict[~gatelogue_types.ID, ~gatelogue_types.Sourced[~gatelogue_types.Proximity]]=<factory>, shared_facility: list[Sourced[ID]] = <factory>, *, i: ID = None, source: set[str] = <factory>, code: str, names: Sourced[set[str]] | None = None, link: Sourced[str] | None = None, modes: Sourced[set[PlaneMode]] | None = None, gates: list[Sourced[ID]] = <factory>)

Bases: LocatedNode, _AirAirport

class gatelogue_types.AirGate(*, i: ID = None, source: set[str] = <factory>, code: str | None, size: Sourced[str] | None = None, flights: list[Sourced[ID]] = <factory>, airport: Sourced[ID] = None, airline: Sourced[ID] | None = None)

Bases: Node, _AirGate

class gatelogue_types.AirAirline(*, i: ID = None, source: set[str] = <factory>, name: str, link: Sourced[str] | None = None, flights: list[Sourced[ID]] = <factory>, gates: list[Sourced[ID]] = <factory>)

Bases: Node, _AirAirline

Rail Nodes

class gatelogue_types.RailCompany(*, i: ID = None, source: set[str] = <factory>, name: str, lines: list[Sourced[ID]] = <factory>, stations: list[Sourced[ID]] = <factory>, local: bool = False)

Bases: Node, _RailCompany

class gatelogue_types.RailLine(*, i: ID = None, source: set[str] = <factory>, code: str, name: Sourced[str] | None = None, colour: Sourced[str] | None = None, mode: Sourced[RailMode] | None = None, company: Sourced[ID] = None, stations: list[Sourced[ID]] = <factory>)

Bases: Node, _RailLine

class gatelogue_types.RailStation(coordinates: ~gatelogue_types.Sourced[tuple[float, float]] | None = None, world: ~gatelogue_types.Sourced[~gatelogue_types.World] | None = None, proximity: dict[~gatelogue_types.ID, ~gatelogue_types.Sourced[~gatelogue_types.Proximity]] = <factory>, shared_facility: list[~gatelogue_types.Sourced[~gatelogue_types.ID]] = <factory>, *, i: ~gatelogue_types.ID = None, source: set[str] = <factory>, codes: set[str], name: ~gatelogue_types.Sourced[str] | None = None, company: ~gatelogue_types.Sourced[~gatelogue_types.ID] = None, connections: dict[~gatelogue_types.ID, list[~gatelogue_types.Sourced[~gatelogue_types.Connection]]] = <factory>)

Bases: LocatedNode, _RailStation

Sea Nodes

class gatelogue_types.SeaCompany(*, i: ID = None, source: set[str] = <factory>, name: str, lines: list[Sourced[ID]] = <factory>, stops: list[Sourced[ID]] = <factory>, local: bool = False)

Bases: Node, _SeaCompany

class gatelogue_types.SeaLine(*, i: ID = None, source: set[str] = <factory>, code: str, name: Sourced[str] | None = None, colour: Sourced[str] | None = None, mode: Sourced[SeaMode] | None = None, company: Sourced[ID] = None, stops: list[Sourced[ID]] = <factory>)

Bases: Node, _SeaLine

class gatelogue_types.SeaStop(coordinates: ~gatelogue_types.Sourced[tuple[float, float]] | None = None, world: ~gatelogue_types.Sourced[~gatelogue_types.World] | None = None, proximity: dict[~gatelogue_types.ID, ~gatelogue_types.Sourced[~gatelogue_types.Proximity]] = <factory>, shared_facility: list[~gatelogue_types.Sourced[~gatelogue_types.ID]] = <factory>, *, i: ~gatelogue_types.ID = None, source: set[str] = <factory>, codes: set[str], name: ~gatelogue_types.Sourced[str] | None = None, company: ~gatelogue_types.Sourced[~gatelogue_types.ID] = None, connections: dict[~gatelogue_types.ID, list[~gatelogue_types.Sourced[~gatelogue_types.Connection]]] = <factory>)

Bases: LocatedNode, _SeaStop

Bus Nodes

class gatelogue_types.BusCompany(*, i: ID = None, source: set[str] = <factory>, name: str, lines: list[Sourced[ID]] = <factory>, stops: list[Sourced[ID]] = <factory>, local: bool = False)

Bases: Node, _BusCompany

class gatelogue_types.BusLine(*, i: ID = None, source: set[str] = <factory>, code: str, name: Sourced[str] | None = None, colour: Sourced[str] | None = None, company: Sourced[ID] = None, stops: list[Sourced[ID]] = <factory>)

Bases: Node, _BusLine

class gatelogue_types.BusStop(coordinates: ~gatelogue_types.Sourced[tuple[float, float]] | None = None, world: ~gatelogue_types.Sourced[~gatelogue_types.World] | None = None, proximity: dict[~gatelogue_types.ID, ~gatelogue_types.Sourced[~gatelogue_types.Proximity]] = <factory>, shared_facility: list[~gatelogue_types.Sourced[~gatelogue_types.ID]] = <factory>, *, i: ~gatelogue_types.ID = None, source: set[str] = <factory>, codes: set[str], name: ~gatelogue_types.Sourced[str] | None = None, company: ~gatelogue_types.Sourced[~gatelogue_types.ID] = None, connections: dict[~gatelogue_types.ID, list[~gatelogue_types.Sourced[~gatelogue_types.Connection]]] = <factory>)

Bases: LocatedNode, _BusStop

Town Nodes

class gatelogue_types.Town(coordinates: ~gatelogue_types.Sourced[tuple[float, float]] | None = None, world: ~gatelogue_types.Sourced[~gatelogue_types.World] | None = None, proximity: dict[~gatelogue_types.ID, ~gatelogue_types.Sourced[~gatelogue_types.Proximity]] = <factory>, shared_facility: list[~gatelogue_types.Sourced[~gatelogue_types.ID]] = <factory>, *, i: ~gatelogue_types.ID = None, source: set[str] = <factory>, name: str, rank: ~gatelogue_types.Sourced[~gatelogue_types.Rank], mayor: ~gatelogue_types.Sourced[str], deputy_mayor: ~gatelogue_types.Sourced[str | None])

Bases: LocatedNode, _Town

Miscellaneous

class gatelogue_types.Sourced(v: T, s: set[str] = <factory>)

Bases: Struct, Generic[T]

s: set[str]

List of sources that support the value

v: T

Actual value

class gatelogue_types.Connection(line: ID, *, direction: Direction | None = None)

Bases: _Connection

class gatelogue_types.Direction(direction: ID, forward_label: str | None, backward_label: str | None, *, one_way: bool | Sourced[bool] = False)

Bases: _Direction

class gatelogue_types.Proximity(distance: float, explicit: bool = False)

Bases: Struct

distance: float

Distance between the two objects in blocks

explicit: bool

Whether this relation is explicitly recognised by the company/ies of the stations. Used mostly for local services