{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "id": "https://github.com/route4me/json-schemas/blob/master/Direction.dtd",
    "description": "the course or path on which something is moving or pointing",
    "title": "Direction",
    "type": "object",
    "properties": {
        "location": {
            "type": "object",
            "properties": {
                "time": {
                    "type": "integer",
                    "title": "Time",
                    "description": ""
                },
                "segment_distance": {
                    "type": "number",
                    "title": "Segment distance",
                    "description": "Current segment length"
                },
                "name": {
                    "type": "string",
                    "title": "Name",
                    "description": "Direction name"
                },
                "start_location": {
                    "type": "string",
                    "title": "Start location",
                    "description": "Start location name"
                },
                "end_location": {
                    "type": "string",
                    "title": "End location",
                    "description": "End location name"
                },
                "directions_error": {
                    "type": "string",
                    "title": "Directions error",
                    "description": "Directions error message"
                },
                "error_code": {
                    "type": "integer",
                    "title": "Error code",
                    "description": "Error code"
                }
            }
        },
        "steps": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "directions": {
                        "type": "string",
                        "enum": [
                            "Head",
                            "Go Straight",
                            "Turn Left",
                            "Turn Right",
                            "Turn Slight Left",
                            "Turn Slight Right",
                            "Turn Sharp Left",
                            "Turn Sharp Right",
                            "Roundabout Left",
                            "Roundabout Right",
                            "Uturn Left",
                            "Uturn Right",
                            "Ramp Left",
                            "Ramp Right",
                            "Fork Left",
                            "Fork Right",
                            "Keep Left",
                            "Keep Right",
                            "Ferry",
                            "Ferry Train",
                            "Merge",
                            "Reached Your Destination"
                        ],
                        "title": "Directions",
                        "description": "Directions of movement"
                    },
                    "direction": {
                        "type": "string",
                        "title": "Direction",
                        "description": "Text for current direction"
                    },
                    "distance": {
                        "type": "number",
                        "title": "Distance",
                        "description": "Step distance"
                    },
                    "distance_unit": {
                        "type": "string",
                        "enum": [
                            "mi",
                            "km"
                        ],
                        "title": "Distance unit",
                        "description": "Distance unit - 'mi' or 'km'"
                    },
                    "maneuverType": {
                        "type": "string",
                        "enum": [
                            "HEAD",
                            "GO_STRAIGHT",
                            "TURN_LEFT",
                            "TURN_RIGHT",
                            "TURN_SLIGHT_LEFT",
                            "TURN_SLIGHT_RIGHT",
                            "TURN_SHARP_LEFT",
                            "TURN_SHARP_RIGHT",
                            "ROUNDABOUT_LEFT",
                            "ROUNDABOUT_RIGHT",
                            "UTURN_LEFT",
                            "UTURN_RIGHT",
                            "RAMP_LEFT",
                            "RAMP_RIGHT",
                            "FORK_LEFT",
                            "FORK_RIGHT",
                            "KEEP_LEFT",
                            "KEEP_RIGHT",
                            "FERRY",
                            "FERRY_TRAIN",
                            "MERGE",
                            "REACHED_YOUR_DESTINATION"
                        ],
                        "title": "Maneuver type",
                        "description": "Maneuver type"
                    },
                    "compass_direction": {
                        "type": "string",
                        "enum": [
                            "N",
                            "S",
                            "W",
                            "E",
                            "NW",
                            "NE",
                            "SW",
                            "SE"
                        ],
                        "title": "Compass direction",
                        "description": "Compass direction"
                    },
                    "maneuverPoint": {
                        "type": "object",
                        "title": "Maneuver point",
                        "items": {
                            "properties": {
                                "lat": {
                                    "type": "number",
                                    "minimum": -90,
                                    "maximum": 90,
                                    "title": "Latitude",
                                    "description": "Point latitude"
                                },
                                "lng": {
                                    "type": "number",
                                    "minimum": -180,
                                    "maximum": 180,
                                    "title": "Longitude",
                                    "description": "Point longitude"
                                }
                            }
                        }
                    },
                    "duration_sec": {
                        "type": "integer",
                        "title": "Duration (sec)",
                        "description": "Step duration (sec)"
                    }
                }
            }
        }
    }
}