{
  "openrpc": "1.3.2",
  "info": {
    "title": "BeNav5 RNC API",
    "version": "2026-10-02",
    "description": "BeNav5 RNC API: JSON-RPC 2.0 commands an Android application sends to BeNav, and the notifications BeNav sends back. Every method is sent as a string extra (BND_MESSAGE) of an Android Intent. From the BeNav5 RNC documentation, version 69 of 2026-10-02 · circuit navigation, version 1 of 2026-06-05."
  },
  "x-benav-source": {
    "main": {
      "version": 69,
      "date": "2026-10-02",
      "url": "https://benomad-workspace.atlassian.net/wiki/external/MDc3MThhMGJhZjQxNGYwY2FmNGEzYTY3M2I3OGI5MzI"
    },
    "circuit": {
      "version": 1,
      "date": "2026-06-05",
      "url": "https://benomad-workspace.atlassian.net/wiki/external/MTJhYzkyYzU3Mjk5NGY4NGE0MTRhZGYxNGJiNDkyNWU"
    }
  },
  "externalDocs": {
    "url": "https://docs.benomad.com/benav-rnc/"
  },
  "x-benav-transport": {
    "action": "ACTION_RNC_BROADCAST",
    "package": "com.benomad.benav",
    "activity": "com.benomad.benav.MainActivity",
    "receiver": "com.benomad.move.rnc_domain.RNCBroadcastReceiver",
    "extra": "BND_MESSAGE",
    "responseAction": "com.benomad.ACTION_RNC"
  },
  "methods": [
    {
      "name": "showApp",
      "summary": "Starts the application in the foreground",
      "description": "Brings BeNav to the front. A client application that has sent BeNav a route, a message or a set of POIs uses this when the driver needs to actually look at the map, so the hand-off from one application to the other happens without asking the driver to find and tap an icon.",
      "x-benav-kind": "command",
      "paramStructure": "by-name",
      "params": [],
      "result": {
        "name": "result",
        "schema": {
          "type": "object",
          "properties": {}
        }
      },
      "externalDocs": {
        "url": "https://docs.benomad.com/benav-rnc/commands/show-app/"
      },
      "examples": [
        {
          "name": "showApp example",
          "params": [],
          "result": {
            "name": "result",
            "value": {}
          }
        }
      ]
    },
    {
      "name": "getAppInfo",
      "summary": "Retrieves version and licence information",
      "description": "Reports what this BeNav installation actually is: application and SDK versions, the map release and the countries it covers, the licence identifiers, and which optional services the licence enables, traffic, hybrid routing, address autocomplete, EV points of interest.",
      "x-benav-kind": "command",
      "paramStructure": "by-name",
      "params": [],
      "result": {
        "name": "result",
        "schema": {
          "type": "object",
          "properties": {
            "purchaseUuid": {
              "type": "string"
            },
            "licenseKey": {
              "type": "string"
            },
            "deviceId": {
              "type": "string"
            },
            "expirationDate": {
              "type": "string"
            },
            "applicationVersion": {
              "type": "string"
            },
            "msdkVersion": {
              "type": "string"
            },
            "mapsVersion": {
              "type": "string"
            },
            "mapsCoverage": {
              "type": "string"
            },
            "hybrid": {
              "type": "boolean"
            },
            "traffic": {
              "type": "boolean"
            },
            "autocomplete": {
              "type": "string"
            },
            "evPois": {
              "type": "string"
            }
          }
        }
      },
      "externalDocs": {
        "url": "https://docs.benomad.com/benav-rnc/commands/get-app-info/"
      },
      "examples": [
        {
          "name": "getAppInfo example",
          "params": [],
          "result": {
            "name": "result",
            "value": {
              "purchaseUuid": "502780ac-7d22-427c-9da2-7c4b129130a7",
              "licenseKey": "def6e074-2c94-4c09-936f-59430d7e4aa2",
              "deviceId": "f9c45d75eb7d2704",
              "expirationDate": "Wed Dec 31 12:00:00 GMT+01:00 2025",
              "applicationVersion": "1.3.0",
              "msdkVersion": "2.2.0",
              "mapsVersion": "TomTom 2024.03",
              "mapsCoverage": "FRA|MCO",
              "hybrid": true,
              "traffic": true,
              "autocomplete": "herehlp",
              "evPois": "michelin"
            }
          }
        }
      ]
    },
    {
      "name": "startAppHidden",
      "summary": "Starts the application in the background",
      "description": "Puts a running BeNav in the background, or keeps it there. Useful when the client application wants navigation prepared and running (route computed, guidance active, notifications flowing) while the driver keeps looking at the client application's own screen.",
      "x-benav-kind": "command",
      "paramStructure": "by-name",
      "params": [],
      "result": {
        "name": "result",
        "schema": {
          "type": "object",
          "properties": {}
        }
      },
      "externalDocs": {
        "url": "https://docs.benomad.com/benav-rnc/commands/start-app-hidden/"
      },
      "examples": [
        {
          "name": "startAppHidden example",
          "params": [],
          "result": {
            "name": "result",
            "value": {}
          }
        }
      ]
    },
    {
      "name": "stopApp",
      "summary": "Stops the application and service",
      "description": "Shuts BeNav down completely: any guidance in progress is stopped, the RNC service is stopped and the process exits. Intended for the end of a shift, or for a managed device where the client application controls what runs.",
      "x-benav-kind": "command",
      "paramStructure": "by-name",
      "params": [],
      "result": {
        "name": "result",
        "schema": {
          "type": "object",
          "properties": {}
        }
      },
      "externalDocs": {
        "url": "https://docs.benomad.com/benav-rnc/commands/stop-app/"
      },
      "examples": [
        {
          "name": "stopApp example",
          "params": [],
          "result": {
            "name": "result",
            "value": {}
          }
        }
      ]
    },
    {
      "name": "hideApp",
      "summary": "Puts the application in the background",
      "description": "Sends BeNav to the background, handing the screen back to whichever application was there before. The counterpart of `showApp`: together they let a client application decide which of the two is in front at any moment.",
      "x-benav-kind": "command",
      "paramStructure": "by-name",
      "params": [],
      "result": {
        "name": "result",
        "schema": {
          "type": "object",
          "properties": {}
        }
      },
      "externalDocs": {
        "url": "https://docs.benomad.com/benav-rnc/commands/hide-app/"
      },
      "examples": [
        {
          "name": "hideApp example",
          "params": [],
          "result": {
            "name": "result",
            "value": {}
          }
        }
      ]
    },
    {
      "name": "startGuidance",
      "summary": "Starts navigation with specified points",
      "description": "Hands a complete navigation job to BeNav. A client application that already knows where its driver has to go can delegate routing, guidance, map display and voice instructions rather than building any of it, and follow what happens through the RNC notifications.",
      "x-benav-kind": "command",
      "paramStructure": "by-name",
      "params": [
        {
          "name": "departure",
          "description": "is optional: the current position is used when it is omitted.\n`destination` is required unless `waypoints` are supplied.",
          "schema": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "lon": {
                "type": "number"
              },
              "lat": {
                "type": "number"
              },
              "angle": {
                "type": "number"
              },
              "radius": {
                "type": "number"
              },
              "alertRadius": {
                "type": "number"
              },
              "avoidUTurn": {
                "type": "boolean"
              },
              "useStartAngle": {
                "type": "boolean"
              },
              "useStopRoadSide": {
                "type": "boolean"
              },
              "ignoreTrafficDirections": {
                "type": "boolean"
              },
              "ignoreRoadBlocks": {
                "type": "boolean"
              },
              "ignoreRestrictions": {
                "type": "boolean"
              },
              "ignorePoint": {
                "type": "boolean"
              }
            }
          }
        },
        {
          "name": "waypoints",
          "description": "**Optional** array of waypoints (see below for definition).",
          "schema": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string"
                },
                "lon": {
                  "type": "number"
                },
                "lat": {
                  "type": "number"
                },
                "angle": {
                  "type": "number"
                },
                "radius": {
                  "type": "number"
                },
                "alertRadius": {
                  "type": "number"
                },
                "avoidUTurn": {
                  "type": "boolean"
                },
                "useStartAngle": {
                  "type": "boolean"
                },
                "useStopRoadSide": {
                  "type": "boolean"
                },
                "ignoreTrafficDirections": {
                  "type": "boolean"
                },
                "ignoreRoadBlocks": {
                  "type": "boolean"
                },
                "ignoreRestrictions": {
                  "type": "boolean"
                },
                "ignorePoint": {
                  "type": "boolean"
                }
              }
            }
          }
        },
        {
          "name": "destination",
          "description": "Destination point. **Mandatory unless** `waypoints` is non-empty - omitting it with waypoints present selects the `TO_UNDEF_STOP_TRIP` optimisation mode.",
          "schema": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "lon": {
                "type": "number"
              },
              "lat": {
                "type": "number"
              },
              "angle": {
                "type": "number"
              },
              "radius": {
                "type": "number"
              },
              "alertRadius": {
                "type": "number"
              },
              "avoidUTurn": {
                "type": "boolean"
              },
              "useStartAngle": {
                "type": "boolean"
              },
              "useStopRoadSide": {
                "type": "boolean"
              },
              "ignoreTrafficDirections": {
                "type": "boolean"
              },
              "ignoreRestrictions": {
                "type": "boolean"
              },
              "ignorePoint": {
                "type": "boolean"
              }
            }
          }
        },
        {
          "name": "enableRoutePreview",
          "description": "if `true` the route preview window will always be displayed even if no alternative is found.  [`true`|`false`] Default is `false`.",
          "schema": {
            "type": "boolean"
          }
        },
        {
          "name": "avoidUTurns",
          "description": "If `true`, the routing algorithm will try to avoid U-turns on each waypoint if possible. Default is `false`",
          "schema": {
            "type": "boolean"
          }
        },
        {
          "name": "startUTurnThreshold",
          "description": "Determines, at start point or any via point for which an avoid U-turn restriction is set, the threshold (in seconds in FASTEST mode or meters in SHORTEST mode) of the difference of ETA between avoiding a U-turn or not, above which U-turn is allowed (default=3000).",
          "schema": {
            "type": "number"
          }
        },
        {
          "name": "continueIfMapMatchFailed",
          "description": "If `true` (default), map-match failures are **not reported** and the guidance proceeds with whatever matched. Set it to `false` to have every unmatched point - **including the departure and the destination** - returned in the `MAP_MATCHING_FAILED` payload below.",
          "schema": {
            "type": "boolean"
          }
        },
        {
          "name": "alternativeRoutes",
          "description": "If enabled, search for alternative routes (up to 2 alternatives may be found).  \nPossible values [`true`|`false`], default is `false`.",
          "schema": {
            "type": "boolean"
          }
        },
        {
          "name": "optimizeRoute",
          "description": "Optimizes the `waypoints` to have a faster/shorter route.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "result": {
        "name": "result",
        "schema": {
          "type": "object",
          "properties": {
            "routes": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "routeId": {
                    "type": "string"
                  },
                  "etas": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "eta": {
                          "type": "number"
                        },
                        "distance": {
                          "type": "number"
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "externalDocs": {
        "url": "https://docs.benomad.com/benav-rnc/commands/start-guidance/"
      },
      "examples": [
        {
          "name": "startGuidance example",
          "params": [
            {
              "name": "departure",
              "value": {
                "id": "1",
                "lon": -2.0495297,
                "lat": 48.138885,
                "angle": 156,
                "radius": 10,
                "alertRadius": 20,
                "avoidUTurn": false,
                "useStartAngle": false,
                "useStopRoadSide": false,
                "ignoreTrafficDirections": false,
                "ignoreRoadBlocks": false,
                "ignoreRestrictions": false,
                "ignorePoint": false
              }
            },
            {
              "name": "waypoints",
              "value": [
                {
                  "id": "2",
                  "lon": -1.94697,
                  "lat": 48.11179513,
                  "angle": 257,
                  "radius": 10,
                  "alertRadius": 20,
                  "avoidUTurn": false,
                  "useStartAngle": true,
                  "useStopRoadSide": true,
                  "ignoreTrafficDirections": false,
                  "ignoreRoadBlocks": false,
                  "ignoreRestrictions": false,
                  "ignorePoint": false
                }
              ]
            },
            {
              "name": "destination",
              "value": {
                "id": "3",
                "lon": -1.686886,
                "lat": 48.1099,
                "angle": 156,
                "radius": 10,
                "alertRadius": 20,
                "avoidUTurn": false,
                "useStartAngle": false,
                "useStopRoadSide": true,
                "ignoreTrafficDirections": false,
                "ignoreRestrictions": false,
                "ignorePoint": false
              }
            },
            {
              "name": "enableRoutePreview",
              "value": true
            },
            {
              "name": "avoidUTurns",
              "value": true
            },
            {
              "name": "startUTurnThreshold",
              "value": 3000
            },
            {
              "name": "continueIfMapMatchFailed",
              "value": true
            },
            {
              "name": "alternativeRoutes",
              "value": true
            },
            {
              "name": "optimizeRoute",
              "value": "FAST"
            }
          ],
          "result": {
            "name": "result",
            "value": {
              "routes": [
                {
                  "routeId": "rnc_id",
                  "etas": [
                    {
                      "id": "1",
                      "eta": 0,
                      "distance": 0
                    },
                    {
                      "id": "3",
                      "eta": 2147,
                      "distance": 38144
                    }
                  ]
                }
              ]
            }
          }
        }
      ]
    },
    {
      "name": "stopGuidance",
      "summary": "Stops the current navigation",
      "description": "Ends the current guidance session. BeNav stops giving instructions and returns to tracking mode, where it keeps showing the vehicle's position on the map without directing it anywhere.",
      "x-benav-kind": "command",
      "paramStructure": "by-name",
      "params": [],
      "result": {
        "name": "result",
        "schema": {
          "type": "object",
          "properties": {}
        }
      },
      "externalDocs": {
        "url": "https://docs.benomad.com/benav-rnc/commands/stop-guidance/"
      },
      "examples": [
        {
          "name": "stopGuidance example",
          "params": [],
          "result": {
            "name": "result",
            "value": {}
          }
        }
      ]
    },
    {
      "name": "getNavigationProgress",
      "summary": "Retrieves navigation progress data",
      "description": "Asks for the state of the current journey at a moment of the client application's choosing, rather than waiting for the next notification. It returns exactly the same payload as `onNavigationProgressChanged`.",
      "x-benav-kind": "command",
      "paramStructure": "by-name",
      "params": [
        {
          "name": "waypointsInfo",
          "description": "If enabled, will return also the remaining `waypoints` guidance progress. Otherwise only return the `destination` data. [`true`|`false`]",
          "schema": {
            "type": "boolean"
          }
        }
      ],
      "result": {
        "name": "result",
        "schema": {
          "type": "object",
          "properties": {}
        }
      },
      "externalDocs": {
        "url": "https://docs.benomad.com/benav-rnc/commands/get-navigation-progress/"
      }
    },
    {
      "name": "getRouteOptions",
      "summary": "Retrieves current route options",
      "description": "Reads back the routing and display preferences currently in force: how routes are optimised, which road types are allowed, whether traffic is taken into account, the unit system and the map theme.",
      "x-benav-kind": "command",
      "paramStructure": "by-name",
      "params": [],
      "result": {
        "name": "result",
        "schema": {
          "type": "object",
          "properties": {
            "routeMode": {
              "type": "string"
            },
            "crossing": {
              "type": "boolean"
            },
            "ferry": {
              "type": "boolean"
            },
            "motorway": {
              "type": "boolean"
            },
            "sideArrival": {
              "type": "boolean"
            },
            "toll": {
              "type": "boolean"
            },
            "traffic": {
              "type": "boolean"
            },
            "autoReroute": {
              "type": "boolean"
            },
            "unpaved": {
              "type": "boolean"
            },
            "altRoutes": {
              "type": "boolean"
            },
            "units": {
              "type": "string"
            },
            "showVehicleProfileName": {
              "type": "boolean"
            },
            "showRestrictions": {
              "type": "boolean"
            },
            "mapDisplayMode": {
              "type": "string"
            }
          }
        }
      },
      "externalDocs": {
        "url": "https://docs.benomad.com/benav-rnc/commands/get-route-options/"
      },
      "examples": [
        {
          "name": "getRouteOptions example",
          "params": [],
          "result": {
            "name": "result",
            "value": {
              "routeMode": "FASTEST",
              "crossing": true,
              "ferry": true,
              "motorway": true,
              "sideArrival": false,
              "toll": true,
              "traffic": false,
              "autoReroute": true,
              "unpaved": true,
              "altRoutes": true,
              "units": "METRIC",
              "showVehicleProfileName": false,
              "showRestrictions": false,
              "mapDisplayMode": "LIGHT"
            }
          }
        }
      ]
    },
    {
      "name": "setRouteOptions",
      "summary": "Sets new route options",
      "description": "Sets how BeNav computes routes and presents them: fastest or shortest, whether motorways, tolls, ferries, unpaved roads and border crossings are allowed, whether traffic is used and whether the route is recalculated when it changes, plus units and map theme.",
      "x-benav-kind": "command",
      "paramStructure": "by-name",
      "params": [
        {
          "name": "routeMode",
          "description": "Possible values [`FASTEST`|`SHORTEST`].",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "crossing",
          "description": "Allow or disallow border crossing (if possible) [`true`|`false`] (default `true`)",
          "schema": {
            "type": "boolean"
          }
        },
        {
          "name": "ferry",
          "description": "Ferry allowed [`true`|`false`] (default `true`)",
          "schema": {
            "type": "boolean"
          }
        },
        {
          "name": "motorway",
          "description": "Motorway allowed [`true`|`false`] (default `true`)",
          "schema": {
            "type": "boolean"
          }
        },
        {
          "name": "sideArrival",
          "description": "Arrival on defined destination side or not [`true`|`false`] (default `true`)",
          "schema": {
            "type": "boolean"
          }
        },
        {
          "name": "toll",
          "description": "Toll roads allowed [`true`|`false`] (default `true`)",
          "schema": {
            "type": "boolean"
          }
        },
        {
          "name": "traffic",
          "description": "Take into account traffic jams during route calculations (if traffic service available) [`true`|`false`] (default `true`)",
          "schema": {
            "type": "boolean"
          }
        },
        {
          "name": "autoReroute",
          "description": "Auto-reroute when traffic information is updated (if `traffic` is enabled) [`true`|`false`] (default `false`)",
          "schema": {
            "type": "boolean"
          }
        },
        {
          "name": "unpaved",
          "description": "Unpaved roads allowed [`true`|`false`] (default `false`)",
          "schema": {
            "type": "boolean"
          }
        },
        {
          "name": "altRoutes",
          "description": "Alternative routes enabled or disabled [`true`|`false`] (default `true`)",
          "schema": {
            "type": "boolean"
          }
        },
        {
          "name": "units",
          "description": "Possible values [`METRIC`|`IMPERIAL`]. (default `METRIC`)",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "showVehicleProfileName",
          "description": "Show vehicle profile's name on the map (default `false`)",
          "schema": {
            "type": "boolean"
          }
        },
        {
          "name": "showRestrictions",
          "description": "Show vehicle restrictions on map (default `true`)",
          "schema": {
            "type": "boolean"
          }
        },
        {
          "name": "mapDisplayMode",
          "description": "Possible values [`LIGHT`|`DARK`|`AUTO`]. (default `LIGHT`)",
          "schema": {
            "type": "string"
          }
        }
      ],
      "result": {
        "name": "result",
        "schema": {}
      },
      "externalDocs": {
        "url": "https://docs.benomad.com/benav-rnc/commands/set-route-options/"
      }
    },
    {
      "name": "editVehicleProfile",
      "summary": "Creates or modifies a vehicle profile (updated in 2.1.0 to add userPermission)",
      "description": "Creates or updates a vehicle profile. The profile is what makes BeNav route a 40-tonne articulated lorry differently from a van: dimensions, weights, trailers, dangerous-goods class and speed limits all feed the route calculation, so the vehicle is not sent under a low bridge or through a tunnel its load is barred from.",
      "x-benav-kind": "command",
      "paramStructure": "by-name",
      "params": [
        {
          "name": "id",
          "description": "Unique identifier of the profile, used only in the RNC commands",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "name",
          "description": "Visible name of the profile in the application",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "userPermission",
          "description": "defines the Permission tier applied to a vehicle profile as seen by the end user in the vehicle selection/edition UI.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "majorRoads",
          "description": "The navigation will favor main road network over small road when computing a route. It is strongly recommended to enable this option when driving trucks  [`true`|`false`] Default `false`.",
          "schema": {
            "type": "boolean"
          }
        },
        {
          "name": "category",
          "description": "String representing the category of the vehicle. Differs from`transportationMode`to allow custom vehicle types that would not be supported by predefined`transportationMode`",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "profile",
          "schema": {
            "type": "object",
            "properties": {
              "transportationMode": {
                "type": "string"
              },
              "height": {
                "type": "number"
              },
              "length": {
                "type": "number"
              },
              "width": {
                "type": "number"
              },
              "weight": {
                "type": "number"
              },
              "weightPerAxle": {
                "type": "number"
              },
              "nbTrailers": {
                "type": "number"
              },
              "hazmat": {
                "type": "string"
              },
              "adr": {
                "type": "string"
              },
              "maxSpeed": {
                "type": "number"
              },
              "onlyPhysical": {
                "type": "boolean"
              },
              "drivingProfile": {
                "type": "object",
                "properties": {
                  "maxSpeedETA": {
                    "type": "number"
                  },
                  "maxSpeedCAL": {
                    "type": "number"
                  }
                }
              }
            }
          }
        }
      ],
      "result": {
        "name": "result",
        "schema": {
          "type": "object",
          "properties": {}
        }
      },
      "externalDocs": {
        "url": "https://docs.benomad.com/benav-rnc/commands/edit-vehicle-profile/"
      },
      "examples": [
        {
          "name": "editVehicleProfile example",
          "params": [
            {
              "name": "id",
              "value": "custom_profile_1"
            },
            {
              "name": "name",
              "value": "Profile 1"
            },
            {
              "name": "userPermission",
              "value": "LOCKED"
            },
            {
              "name": "majorRoads",
              "value": true
            },
            {
              "name": "category",
              "value": "DELIVERY_TRUCK"
            },
            {
              "name": "profile",
              "value": {
                "transportationMode": "DELIVERY_TRUCK",
                "height": 4,
                "length": 16,
                "width": 2.5,
                "weight": 17,
                "weightPerAxle": 8,
                "nbTrailers": 2,
                "hazmat": "NONE",
                "adr": "NONE",
                "maxSpeed": 90,
                "onlyPhysical": false,
                "drivingProfile": {
                  "maxSpeedETA": 0,
                  "maxSpeedCAL": 0
                }
              }
            }
          ],
          "result": {
            "name": "result",
            "value": {}
          }
        }
      ]
    },
    {
      "name": "deleteVehicleProfile",
      "summary": "Deletes a vehicle profile",
      "description": "Removes a profile the client application created. Used when a vehicle leaves the fleet, or when a device is reassigned and the previous vehicle's definition should not be selectable any more.",
      "x-benav-kind": "command",
      "paramStructure": "by-name",
      "params": [
        {
          "name": "id",
          "schema": {
            "type": "string"
          }
        }
      ],
      "result": {
        "name": "result",
        "schema": {
          "type": "object",
          "properties": {}
        }
      },
      "externalDocs": {
        "url": "https://docs.benomad.com/benav-rnc/commands/delete-vehicle-profile/"
      },
      "examples": [
        {
          "name": "deleteVehicleProfile example",
          "params": [
            {
              "name": "id",
              "value": "custom_profile_1"
            }
          ],
          "result": {
            "name": "result",
            "value": {}
          }
        }
      ]
    },
    {
      "name": "selectVehicleProfile",
      "summary": "Selects a vehicle profile",
      "description": "Makes one of the client application's profiles the active one. Everything BeNav computes afterwards (route, restrictions shown on the map, restriction alerts) uses it.",
      "x-benav-kind": "command",
      "paramStructure": "by-name",
      "params": [
        {
          "name": "id",
          "schema": {
            "type": "string"
          }
        }
      ],
      "result": {
        "name": "result",
        "schema": {
          "type": "object",
          "properties": {}
        }
      },
      "externalDocs": {
        "url": "https://docs.benomad.com/benav-rnc/commands/select-vehicle-profile/"
      },
      "examples": [
        {
          "name": "selectVehicleProfile example",
          "params": [
            {
              "name": "id",
              "value": "custom_profile_1"
            }
          ],
          "result": {
            "name": "result",
            "value": {}
          }
        }
      ]
    },
    {
      "name": "getVehicleProfilesList",
      "summary": "Lists vehicle profiles created via RNC",
      "description": "Lists the ids of the profiles the client application has created on this device, so it can reconcile what is actually provisioned against what it intended, and find profiles left behind by an earlier configuration.",
      "x-benav-kind": "command",
      "paramStructure": "by-name",
      "params": [],
      "result": {
        "name": "result",
        "schema": {
          "type": "object",
          "properties": {
            "vehicleIds": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        }
      },
      "externalDocs": {
        "url": "https://docs.benomad.com/benav-rnc/commands/get-vehicle-profiles-list/"
      },
      "examples": [
        {
          "name": "getVehicleProfilesList example",
          "params": [],
          "result": {
            "name": "result",
            "value": {
              "vehicleIds": [
                "custom_profile_1",
                "custom_profile_2"
              ]
            }
          }
        }
      ]
    },
    {
      "name": "getVehicleProfile",
      "summary": "Retrieves details of a vehicle profile",
      "description": "Reads back a profile in full: dimensions, weights, dangerous-goods class, speed limits, and the permission tier the driver has over it. Sent without an id, it returns whichever profile is currently active.",
      "x-benav-kind": "command",
      "paramStructure": "by-name",
      "params": [
        {
          "name": "id",
          "schema": {
            "type": "string"
          }
        }
      ],
      "result": {
        "name": "result",
        "schema": {
          "type": "object",
          "properties": {
            "id": {
              "type": "string"
            },
            "name": {
              "type": "string"
            },
            "userPermission": {
              "type": "string"
            },
            "userEditionAllowed": {
              "type": "boolean"
            },
            "majorRoads": {
              "type": "boolean"
            },
            "profile": {
              "type": "object",
              "properties": {
                "height": {
                  "type": "number"
                },
                "length": {
                  "type": "number"
                },
                "width": {
                  "type": "number"
                },
                "weight": {
                  "type": "number"
                },
                "weightPerAxle": {
                  "type": "number"
                },
                "nbTrailers": {
                  "type": "number"
                },
                "hazmat": {
                  "type": "string"
                },
                "adr": {
                  "type": "string"
                },
                "maxSpeed": {
                  "type": "number"
                },
                "transportationMode": {
                  "type": "string"
                },
                "drivingProfile": {
                  "type": "object",
                  "properties": {
                    "maxSpeedETA": {
                      "type": "number"
                    },
                    "maxSpeedCAL": {
                      "type": "number"
                    },
                    "averageAcc": {
                      "type": "number"
                    },
                    "averageDec": {
                      "type": "number"
                    }
                  }
                },
                "speedProfile": {
                  "type": "object",
                  "properties": {
                    "mainPond": {
                      "type": "number"
                    },
                    "secondaryPond": {
                      "type": "number"
                    },
                    "thirdPond": {
                      "type": "number"
                    },
                    "fourthPond": {
                      "type": "number"
                    },
                    "mainPondETA": {
                      "type": "number"
                    },
                    "secondaryPondETA": {
                      "type": "number"
                    },
                    "thirdPondETA": {
                      "type": "number"
                    },
                    "fourthPondETA": {
                      "type": "number"
                    }
                  }
                },
                "onlyPhysical": {
                  "type": "boolean"
                }
              }
            },
            "category": {
              "type": "string"
            }
          }
        }
      },
      "externalDocs": {
        "url": "https://docs.benomad.com/benav-rnc/commands/get-vehicle-profile/"
      },
      "examples": [
        {
          "name": "getVehicleProfile example",
          "params": [
            {
              "name": "id",
              "value": "custom_profile_1"
            }
          ],
          "result": {
            "name": "result",
            "value": {
              "id": "custom_profile_1",
              "name": "Profile 1",
              "userPermission": "LOCKED",
              "userEditionAllowed": false,
              "majorRoads": true,
              "profile": {
                "height": 1.6,
                "length": 4.5,
                "width": 1.8,
                "weight": 1.5,
                "weightPerAxle": 0,
                "nbTrailers": -1,
                "hazmat": "NONE",
                "adr": "NONE",
                "maxSpeed": 130,
                "transportationMode": "PASSENGER_CAR",
                "drivingProfile": {
                  "maxSpeedETA": 0,
                  "maxSpeedCAL": 0,
                  "averageAcc": 1.25,
                  "averageDec": -1.25
                },
                "speedProfile": {
                  "mainPond": 1,
                  "secondaryPond": 1,
                  "thirdPond": 1,
                  "fourthPond": 0.75,
                  "mainPondETA": 1,
                  "secondaryPondETA": 1,
                  "thirdPondETA": 1,
                  "fourthPondETA": 0.75
                },
                "onlyPhysical": false
              },
              "category": "PASSENGER_CAR"
            }
          }
        }
      ]
    },
    {
      "name": "lockSettings",
      "summary": "Locks/unlocks application settings",
      "description": "Protects the configuration a client application has pushed to BeNav. Once that application has set a vehicle profile, routing preferences or a map mode over RNC, nothing otherwise stops the driver opening the settings screens and changing them back. `lockSettings` freezes the controls the client application owns, so its configuration survives the shift.",
      "x-benav-kind": "command",
      "paramStructure": "by-name",
      "params": [
        {
          "name": "vehicle",
          "description": "locks controls on the vehicle category / profile selection / profile creation / profile edition screens.",
          "schema": {
            "type": "object",
            "properties": {
              "enabled": {
                "type": "boolean"
              },
              "authorisedCategories": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "category": {
                      "type": "string"
                    }
                  }
                }
              },
              "selectCategory": {
                "type": "boolean"
              },
              "selectProfile": {
                "type": "boolean"
              },
              "addProfile": {
                "type": "boolean"
              },
              "editProfile": {
                "type": "boolean"
              },
              "removeProfile": {
                "type": "boolean"
              }
            }
          }
        },
        {
          "name": "itineraryAndMap",
          "description": "locks individual switches on the routing settings screen.",
          "schema": {
            "type": "object",
            "properties": {
              "enabled": {
                "type": "boolean"
              },
              "motorway": {
                "type": "boolean"
              },
              "toll": {
                "type": "boolean"
              },
              "borderCrossing": {
                "type": "boolean"
              },
              "altRoutes": {
                "type": "boolean"
              },
              "traffic": {
                "type": "boolean"
              },
              "autoRerouting": {
                "type": "boolean"
              },
              "ferry": {
                "type": "boolean"
              },
              "unpaved": {
                "type": "boolean"
              },
              "arrivalSide": {
                "type": "boolean"
              },
              "routeOptim": {
                "type": "boolean"
              },
              "units": {
                "type": "boolean"
              },
              "mapDisplayMode": {
                "type": "boolean"
              },
              "roadRestrictions": {
                "type": "boolean"
              },
              "showProfileName": {
                "type": "boolean"
              }
            }
          }
        }
      ],
      "result": {
        "name": "result",
        "schema": {}
      },
      "externalDocs": {
        "url": "https://docs.benomad.com/benav-rnc/commands/lock-settings/"
      }
    },
    {
      "name": "showPoi",
      "summary": "Creates PoiStyle from given parameters if it does not exist already and display it on MapView",
      "description": "Draws the client application's own points on BeNav's map (its depots, its customers, its charging network, its collection points) with its own icons. The map the driver already uses for navigation becomes the map that also shows the operation's own geography, instead of the driver switching between two applications to see both.",
      "x-benav-kind": "command",
      "paramStructure": "by-name",
      "params": [
        {
          "name": "pois",
          "description": "List of Pois, if empty this command will behave like `hideAllPois`",
          "schema": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string"
                },
                "lat": {
                  "type": "number"
                },
                "lon": {
                  "type": "number"
                },
                "category": {
                  "type": "string"
                },
                "iconURL": {
                  "type": "string"
                },
                "iconWidth": {
                  "type": "number"
                },
                "iconHeight": {
                  "type": "number"
                }
              }
            }
          }
        }
      ],
      "result": {
        "name": "result",
        "schema": {
          "type": "object",
          "properties": {}
        }
      },
      "externalDocs": {
        "url": "https://docs.benomad.com/benav-rnc/commands/show-poi/"
      },
      "examples": [
        {
          "name": "showPoi example",
          "params": [
            {
              "name": "pois",
              "value": [
                {
                  "id": "restaurant_garibaldi",
                  "lat": 43.70313,
                  "lon": 7.26608,
                  "category": "Restaurant",
                  "iconURL": "https://cdn-icons-png.flaticon.com/128/3082/3082031.png",
                  "iconWidth": 40,
                  "iconHeight": 40
                }
              ]
            }
          ],
          "result": {
            "name": "result",
            "value": {}
          }
        }
      ]
    },
    {
      "name": "hidePoi",
      "summary": "Remove specific Poi(s) from MapView, destroy their associated PoiStyle if not in use anymore",
      "description": "Removes specific points from the map by id, leaving the rest in place. Used when part of what is displayed stops being relevant (a collection already made, a site closed for the day) without redrawing everything.",
      "x-benav-kind": "command",
      "paramStructure": "by-name",
      "params": [
        {
          "name": "ids",
          "description": "List of unique Poi identifiers given as `id` in the `showPoi` command",
          "schema": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      ],
      "result": {
        "name": "result",
        "schema": {
          "type": "object",
          "properties": {}
        }
      },
      "externalDocs": {
        "url": "https://docs.benomad.com/benav-rnc/commands/hide-poi/"
      },
      "examples": [
        {
          "name": "hidePoi example",
          "params": [
            {
              "name": "ids",
              "value": [
                "beach_beau_rivage",
                "TEST",
                "castle_hill_complete",
                "restaurant_garibaldi"
              ]
            }
          ],
          "result": {
            "name": "result",
            "value": {}
          }
        }
      ]
    },
    {
      "name": "hideAllPois",
      "summary": "Remove all Pois from MapView and destroy their associated PoiStyle",
      "description": "Clears every point the client application has displayed, in one call. The usual way to reset the map between jobs, rounds or shifts.",
      "x-benav-kind": "command",
      "paramStructure": "by-name",
      "params": [],
      "result": {
        "name": "result",
        "schema": {
          "type": "object",
          "properties": {}
        }
      },
      "externalDocs": {
        "url": "https://docs.benomad.com/benav-rnc/commands/hide-all-pois/"
      },
      "examples": [
        {
          "name": "hideAllPois example",
          "params": [],
          "result": {
            "name": "result",
            "value": {}
          }
        }
      ]
    },
    {
      "name": "showPolygon",
      "summary": "Creates PolygonStyle from received parameters if it does not exist already and display it on MapView",
      "description": "Draws filled, outlined areas on the map: zones rather than points. Where a POI marks a place, a polygon marks a region: a delivery sector, a site boundary, a low-emission zone, an area a vehicle is not meant to enter.",
      "x-benav-kind": "command",
      "paramStructure": "by-name",
      "params": [
        {
          "name": "polygons",
          "description": "present but empty: rejected with `-9 empty.list`. A command with no `params` key at all is rejected with `-32700 parse.error`.",
          "schema": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "borderColor": {
                  "type": "string"
                },
                "borderWidth": {
                  "type": "number"
                },
                "id": {
                  "type": "string"
                },
                "points": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "lat": {
                        "type": "string"
                      },
                      "long": {
                        "type": "string"
                      }
                    }
                  }
                },
                "solidColor": {
                  "type": "string"
                }
              }
            }
          }
        }
      ],
      "result": {
        "name": "result",
        "schema": {}
      },
      "externalDocs": {
        "url": "https://docs.benomad.com/benav-rnc/commands/show-polygon/"
      }
    },
    {
      "name": "hidePolygon",
      "summary": "Remove specific Polygon(s) from MapView, destroy their associated PolygonStyle if not in use anymore",
      "description": "Removes areas from the map by id, leaving the others in place, for a zone that no longer applies, without redrawing the rest.",
      "x-benav-kind": "command",
      "paramStructure": "by-name",
      "params": [
        {
          "name": "polygonIds",
          "description": "List of unique Polygon identifiers given as `id` in the `showPolygon` command",
          "schema": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      ],
      "result": {
        "name": "result",
        "schema": {}
      },
      "externalDocs": {
        "url": "https://docs.benomad.com/benav-rnc/commands/hide-polygon/"
      }
    },
    {
      "name": "showMessage",
      "summary": "Show one message as Notification or Popup If multiple message are sent, they are queued",
      "description": "Puts text from the client application in front of the driver, inside BeNav, while they are navigating. It saves the driver switching applications to read something, and lets the client application say something urgent at the moment it matters.",
      "x-benav-kind": "command",
      "paramStructure": "by-name",
      "params": [
        {
          "name": "dismissible",
          "description": "Should the message be dismissible by user through a close button",
          "schema": {
            "type": "boolean"
          }
        },
        {
          "name": "expiresIn",
          "description": "Duration the message will be displayed for.",
          "schema": {
            "type": "number"
          }
        },
        {
          "name": "soundAlert",
          "description": "Should a notification sound be sent when the message appears",
          "schema": {
            "type": "boolean"
          }
        },
        {
          "name": "text",
          "description": "Text of the message",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "type",
          "description": "[\"notification\" | \"popup\"]",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "backgroundColor",
          "description": "Color of the card the message is displayed in",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "textColor",
          "description": "Color of the message's text",
          "schema": {
            "type": "string"
          }
        }
      ],
      "result": {
        "name": "result",
        "schema": {}
      },
      "externalDocs": {
        "url": "https://docs.benomad.com/benav-rnc/commands/show-message/"
      }
    },
    {
      "name": "hideMessage",
      "summary": "Hide message",
      "description": "Takes down the message currently displayed. Required for a message that was sent with no expiry and no dismiss button, and useful when what a message said has stopped being true.",
      "x-benav-kind": "command",
      "paramStructure": "by-name",
      "params": [
        {
          "name": "clearQueue",
          "schema": {
            "type": "boolean"
          }
        }
      ],
      "result": {
        "name": "result",
        "schema": {}
      },
      "externalDocs": {
        "url": "https://docs.benomad.com/benav-rnc/commands/hide-message/"
      }
    },
    {
      "name": "configureAlerts",
      "summary": "Configure traffic signs and vehicle alerts",
      "description": "Decides which hazards BeNav warns the driver about, and how far ahead. Two families: *vehicle profile alerts*, which fire when the road ahead cannot take this vehicle's height, length, width, weight, axle weight or dangerous-goods class; and *traffic sign alerts* for road features such as stop signs, sharp curves, level crossings, steep gradients or school zones.",
      "x-benav-kind": "command",
      "paramStructure": "by-name",
      "params": [
        {
          "name": "vehicleProfileAlerts",
          "schema": {
            "type": "object",
            "properties": {
              "enabled": {
                "type": "boolean"
              },
              "sound": {
                "type": "boolean"
              },
              "vehicleProfileId": {
                "type": "string"
              },
              "alerts": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string"
                    },
                    "enabled": {
                      "type": "boolean"
                    },
                    "sound": {
                      "type": "boolean"
                    },
                    "distance": {
                      "type": "number"
                    }
                  }
                }
              }
            }
          }
        },
        {
          "name": "trafficSignsAlerts",
          "schema": {
            "type": "object",
            "properties": {
              "enabled": {
                "type": "boolean"
              },
              "sound": {
                "type": "boolean"
              },
              "alerts": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string"
                    },
                    "enabled": {
                      "type": "boolean"
                    },
                    "sound": {
                      "type": "boolean"
                    },
                    "distance": {
                      "type": "number"
                    }
                  }
                }
              }
            }
          }
        }
      ],
      "result": {
        "name": "result",
        "schema": {}
      },
      "externalDocs": {
        "url": "https://docs.benomad.com/benav-rnc/commands/configure-alerts/"
      }
    },
    {
      "name": "zoomTo",
      "summary": "Centres the map on a point at a given zoom level (2D, north-up)",
      "description": "Moves the map to a chosen position and zoom level. The client application decides what the driver is looking at (a delivery point, a depot entrance, the whole of the next sector) rather than leaving them to pan and pinch while driving.",
      "x-benav-kind": "command",
      "paramStructure": "by-name",
      "params": [
        {
          "name": "lat",
          "description": "WGS84 coordinates of the new map centre. Note the key is `long` here, not `lon` as in `startGuidance` waypoints.",
          "schema": {
            "type": "number"
          }
        },
        {
          "name": "long",
          "description": "WGS84 coordinates of the new map centre. Note the key is `long` here, not `lon` as in `startGuidance` waypoints.",
          "schema": {
            "type": "number"
          }
        },
        {
          "name": "zoomLevel",
          "description": "Map zoom level. Accepted from `2.5` upwards and clamped to the range the map supports (maximum `22.5`).",
          "schema": {
            "type": "number"
          }
        }
      ],
      "result": {
        "name": "result",
        "schema": {
          "type": "object",
          "properties": {}
        }
      },
      "externalDocs": {
        "url": "https://docs.benomad.com/benav-rnc/commands/zoom-to/"
      },
      "examples": [
        {
          "name": "zoomTo example",
          "params": [
            {
              "name": "lat",
              "value": 43.6961
            },
            {
              "name": "long",
              "value": 7.2716
            },
            {
              "name": "zoomLevel",
              "value": 15
            }
          ],
          "result": {
            "name": "result",
            "value": {}
          }
        }
      ]
    },
    {
      "name": "displayVehicleProfileOnMap",
      "summary": "Shows or hides the vehicle profile name on the map",
      "description": "Shows or hides the name of the active vehicle profile on the map. A small thing that answers a question drivers ask often, \"which vehicle is this device set up for right now?\", without opening the settings.",
      "x-benav-kind": "command",
      "paramStructure": "by-name",
      "params": [
        {
          "name": "showProfileName",
          "schema": {
            "type": "boolean"
          }
        }
      ],
      "result": {
        "name": "result",
        "schema": {}
      },
      "externalDocs": {
        "url": "https://docs.benomad.com/benav-rnc/commands/display-vehicle-profile-on-map/"
      }
    },
    {
      "name": "updateVehicleStatuses",
      "summary": "Pushes the set of selectable vehicle statuses (id, localised names, icon)",
      "description": "Gives the driver a way to tell the client application what they are doing, without leaving navigation. The client application defines a set of statuses; BeNav shows them on a floating button over the map, and reports every change back as `onVehicleStatusChanged`.",
      "x-benav-kind": "command",
      "paramStructure": "by-name",
      "params": [
        {
          "name": "basicAuth",
          "description": "(Optional) The **already base64-encoded** `user:password`, used verbatim as the `Authorization: Basic` header value when downloading the icons. BeNav does not encode it for you - sending a plain `user:password` produces a malformed header and the download fails with `35 vehicle.status.icon.download.error`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "vehicleStatuses",
          "description": "The complete new set - it **replaces** the previous one. Omit `params` entirely (or send an empty list) to clear the set and disable the feature.",
          "schema": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "number"
                },
                "names": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "lang": {
                        "type": "string"
                      },
                      "val": {
                        "type": "string"
                      }
                    }
                  }
                },
                "icon": {
                  "type": "string"
                }
              }
            }
          }
        }
      ],
      "result": {
        "name": "result",
        "schema": {
          "type": "object",
          "properties": {}
        }
      },
      "externalDocs": {
        "url": "https://docs.benomad.com/benav-rnc/commands/update-vehicle-statuses/"
      },
      "examples": [
        {
          "name": "updateVehicleStatuses example",
          "params": [
            {
              "name": "basicAuth",
              "value": "dXNlcjpwYXNzd29yZA=="
            },
            {
              "name": "vehicleStatuses",
              "value": [
                {
                  "id": 1,
                  "names": [
                    {
                      "lang": "ENG",
                      "val": "Available"
                    },
                    {
                      "lang": "FRE",
                      "val": "Disponible"
                    }
                  ],
                  "icon": "https://example.com/icons/available.png"
                },
                {
                  "id": 2,
                  "names": [
                    {
                      "lang": "ENG",
                      "val": "On break"
                    }
                  ],
                  "icon": "https://example.com/icons/break.png"
                }
              ]
            }
          ],
          "result": {
            "name": "result",
            "value": {}
          }
        }
      ]
    },
    {
      "name": "setVehicleStatus",
      "summary": "Forces the current vehicle status by id",
      "description": "Sets the driver's current status from the client application, rather than waiting for the driver to tap it. The status must be one of those pushed by `updateVehicleStatuses`.",
      "x-benav-kind": "command",
      "paramStructure": "by-name",
      "params": [
        {
          "name": "id",
          "schema": {
            "type": "number"
          }
        }
      ],
      "result": {
        "name": "result",
        "schema": {
          "type": "object",
          "properties": {}
        }
      },
      "externalDocs": {
        "url": "https://docs.benomad.com/benav-rnc/commands/set-vehicle-status/"
      },
      "examples": [
        {
          "name": "setVehicleStatus example",
          "params": [
            {
              "name": "id",
              "value": 2
            }
          ],
          "result": {
            "name": "result",
            "value": {}
          }
        }
      ]
    },
    {
      "name": "setupNotifications",
      "summary": "Configures notifications to be received",
      "description": "Chooses which events BeNav reports back. Notifications are the return channel of RNC: commands go one way, and everything that happens inside BeNav (progress, arrivals, the driver stopping guidance, an alert firing) comes back this way.",
      "x-benav-kind": "command",
      "paramStructure": "by-name",
      "params": [
        {
          "name": "notifications",
          "schema": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string"
                },
                "params": {
                  "type": "object",
                  "properties": {
                    "enabled": {
                      "type": "boolean"
                    },
                    "minPeriod": {
                      "type": "number"
                    },
                    "waypointsInfo": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          }
        }
      ],
      "result": {
        "name": "result",
        "schema": {
          "type": "object",
          "properties": {}
        }
      },
      "externalDocs": {
        "url": "https://docs.benomad.com/benav-rnc/commands/setup-notifications/"
      },
      "examples": [
        {
          "name": "setupNotifications example",
          "params": [
            {
              "name": "notifications",
              "value": [
                {
                  "name": "onNavigationProgressChanged",
                  "params": {
                    "enabled": true,
                    "minPeriod": 60,
                    "waypointsInfo": true
                  }
                },
                {
                  "name": "onViaPointReached",
                  "params": {
                    "enabled": true
                  }
                }
              ]
            }
          ],
          "result": {
            "name": "result",
            "value": {}
          }
        }
      ]
    },
    {
      "name": "onNavigationProgressChanged",
      "summary": "Notification for changes in navigation progress",
      "description": "The main feedback channel during a journey. While BeNav is guiding, it pushes the state of the drive to the client application, where the vehicle is, how far and how long to the destination and to the next waypoint, current speed and speed limit, so the application can follow progress, show an ETA to an end customer, or react to a delay without drawing a map itself.",
      "x-benav-kind": "notification",
      "paramStructure": "by-name",
      "params": [
        {
          "name": "currentMapMatchedHeading",
          "schema": {
            "type": "number"
          }
        },
        {
          "name": "currentMapMatchedPosition",
          "schema": {
            "type": "object",
            "properties": {
              "lat": {
                "type": "number"
              },
              "lon": {
                "type": "number"
              }
            }
          }
        },
        {
          "name": "currentRouteInstructionIndex",
          "schema": {
            "type": "number"
          }
        },
        {
          "name": "currentRouteSectionIndex",
          "schema": {
            "type": "number"
          }
        },
        {
          "name": "currentSpeed",
          "schema": {
            "type": "number"
          }
        },
        {
          "name": "currentSpeedLimit",
          "schema": {
            "type": "number"
          }
        },
        {
          "name": "distanceToDest",
          "schema": {
            "type": "number"
          }
        },
        {
          "name": "distanceToNextInstruction",
          "schema": {
            "type": "number"
          }
        },
        {
          "name": "distanceToNextWaypoint",
          "schema": {
            "type": "number"
          }
        },
        {
          "name": "drivingDurationToDest",
          "schema": {
            "type": "number"
          }
        },
        {
          "name": "durationToNextInstruction",
          "schema": {
            "type": "number"
          }
        },
        {
          "name": "durationToNextWaypoint",
          "schema": {
            "type": "number"
          }
        },
        {
          "name": "nextWaypointIndex",
          "schema": {
            "type": "number"
          }
        },
        {
          "name": "state",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "totalDistance",
          "schema": {
            "type": "number"
          }
        },
        {
          "name": "totalDrivingTime",
          "schema": {
            "type": "number"
          }
        },
        {
          "name": "waypoints",
          "schema": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "drivingDistance": {
                  "type": "number"
                },
                "drivingDuration": {
                  "type": "number"
                }
              }
            }
          }
        }
      ],
      "externalDocs": {
        "url": "https://docs.benomad.com/benav-rnc/notifications/on-navigation-progress-changed/"
      }
    },
    {
      "name": "onViaPointReached",
      "summary": "Notification when a waypoint is reached",
      "description": "Fires as the vehicle reaches an intermediate point of the current route. For a client application driving a multi-stop round, this is how a stop is confirmed as served without asking the driver to confirm anything.",
      "x-benav-kind": "notification",
      "paramStructure": "by-name",
      "params": [
        {
          "name": "id",
          "description": "identifier of the `waypoint`",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "lat",
          "description": "WGS84 coordinates of the waypoint. Note the key is `long` here, not `lon` as in `startGuidance` waypoints.",
          "schema": {
            "type": "number"
          }
        },
        {
          "name": "long",
          "description": "WGS84 coordinates of the waypoint. Note the key is `long` here, not `lon` as in `startGuidance` waypoints.",
          "schema": {
            "type": "number"
          }
        },
        {
          "name": "skipped",
          "description": "(Circuit Navigation) Specifies if the via-point has been reached or skipped.",
          "schema": {
            "type": "boolean"
          }
        }
      ],
      "externalDocs": {
        "url": "https://docs.benomad.com/benav-rnc/notifications/on-via-point-reached/"
      }
    },
    {
      "name": "onDestinationReached",
      "summary": "Notification when the destination is reached",
      "description": "Fires when the vehicle arrives at the final destination of the route. The natural trigger for whatever comes next in the client application: close the job, open a proof-of-delivery screen, start a waiting timer, or send the next journey.",
      "x-benav-kind": "notification",
      "paramStructure": "by-name",
      "params": [],
      "externalDocs": {
        "url": "https://docs.benomad.com/benav-rnc/notifications/on-destination-reached/"
      }
    },
    {
      "name": "onGuidanceStopped",
      "summary": "Notification when navigation is stopped by the user",
      "description": "Fires when the **driver** stops navigation from inside BeNav. It is the counterpart of the client application calling `stopGuidance` itself: this one tells it about a decision it did not make.",
      "x-benav-kind": "notification",
      "paramStructure": "by-name",
      "params": [],
      "externalDocs": {
        "url": "https://docs.benomad.com/benav-rnc/notifications/on-guidance-stopped/"
      }
    },
    {
      "name": "onVehicleProfileAlert",
      "summary": "Notification when a vehicle profile alert is triggered",
      "description": "Fires when the road ahead cannot take the vehicle as configured (too low, too narrow, too heavy, or barred to its dangerous-goods class) reporting which restriction it is and how far ahead.",
      "x-benav-kind": "notification",
      "paramStructure": "by-name",
      "params": [
        {
          "name": "restrictions",
          "schema": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "height": {
                  "type": "string"
                },
                "distance": {
                  "type": "string"
                }
              }
            }
          }
        }
      ],
      "externalDocs": {
        "url": "https://docs.benomad.com/benav-rnc/notifications/on-vehicle-profile-alert/"
      }
    },
    {
      "name": "onVehicleStatusChanged",
      "summary": "Notification when the current vehicle status changes",
      "description": "Reports that the current vehicle status has changed, and to which one. This is the return half of `updateVehicleStatuses`: the client application supplies the statuses, and hears about every change here.",
      "x-benav-kind": "notification",
      "paramStructure": "by-name",
      "params": [
        {
          "name": "id",
          "description": "the id of the status that just became current, as supplied to `updateVehicleStatuses`.",
          "schema": {
            "type": "number"
          }
        }
      ],
      "externalDocs": {
        "url": "https://docs.benomad.com/benav-rnc/notifications/on-vehicle-status-changed/"
      }
    },
    {
      "name": "onAppStatusChanged",
      "summary": "Notification when the application starts, is foregrounded, backgrounded or stopped (enabled by default)",
      "description": "Reports BeNav's own lifecycle: finished starting up, came to the foreground, went to the background, and shut down. It answers a question a client application otherwise has no way to ask: is BeNav running, and is the driver actually looking at it?",
      "x-benav-kind": "notification",
      "paramStructure": "by-name",
      "params": [
        {
          "name": "event",
          "description": "one of `startupComplete`, `appInForeground`, `appInBackground`, `appStopped`. `appStopped` is emitted once as the application terminates - on a swipe-away, the quit dialog, or the `stopApp` command.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "externalDocs": {
        "url": "https://docs.benomad.com/benav-rnc/notifications/on-app-status-changed/"
      }
    },
    {
      "name": "startCircuitGuidance",
      "description": "Options are common for all formats, and if specified will override the option in the BeNav4 format (ex: startPercentage which is already in the command).",
      "x-benav-kind": "command",
      "tags": [
        {
          "name": "Circuit navigation"
        }
      ],
      "paramStructure": "by-name",
      "params": [
        {
          "name": "requestFormat",
          "description": "format name expected for the circuit.  \nThe parser will need the matching root object.   \nAvailable formats:",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "benav4",
          "description": "The original benav4 command for retrocompatibility.  \nPaste only the waypoints array of the original BeNav4 request. The other parameters are now common across all the formats and can be set as decribed below.",
          "schema": {
            "type": "object",
            "properties": {}
          }
        },
        {
          "name": "traceRoute",
          "description": "Only the following object is needed from the traceRoute response:",
          "schema": {
            "type": "object",
            "properties": {
              "version": {
                "type": "string"
              },
              "waypoints": {
                "type": "array"
              }
            }
          }
        },
        {
          "name": "fleex",
          "description": "Only the following object is needed from the traceRoute response:",
          "schema": {
            "type": "object",
            "properties": {}
          }
        },
        {
          "name": "startUTurnThreshold",
          "schema": {
            "type": "number"
          }
        },
        {
          "name": "startPercentage",
          "description": "Start offset in percentage of the total distance of the circuit (must be in range [0.0-100.0[).",
          "schema": {
            "type": "number"
          }
        },
        {
          "name": "stopPercentage",
          "description": "Stop offset in percentage of the total distance of the circuit (must be in range [0.0-100.0[ and > start offset).",
          "schema": {
            "type": "number"
          }
        },
        {
          "name": "blockStartPercentage",
          "description": "Defines roads of a section of the circuit to block. This section is defined by [`blockStartPercentage`, `startPercentage`]. Therefore, if `blockStartPercentage` >= `startPercentage`, it will have no effect. Default value is 100.0 (disabled).",
          "schema": {
            "type": "number"
          }
        },
        {
          "name": "freeDriveAutoResumeDistance",
          "description": "Distance (in meters) over which navigation can be automatically resumed after a Free Drive (default is 500)",
          "schema": {
            "type": "number"
          }
        },
        {
          "name": "hidePassedCircuit",
          "description": "This option determines if circuit display should hide section between start and current vehicle's position (default `true`).",
          "schema": {
            "type": "boolean"
          }
        },
        {
          "name": "circuitPolylineStyle",
          "schema": {
            "type": "number"
          }
        },
        {
          "name": "freeDriveAuto",
          "description": "defines the behavior when there is a rerouting. Possible values:",
          "schema": {
            "type": "boolean"
          }
        },
        {
          "name": "reroutingPopupTimeout",
          "description": "timeout in seconds that'll close the rerouting popup and select the `defaultReroutingBehavior`.  \nIf the value is 0, the `defaultReroutingBehavior` will be automatically selected without showing the popup.",
          "schema": {
            "type": "number"
          }
        }
      ],
      "result": {
        "name": "result",
        "schema": {
          "type": "object",
          "properties": {}
        }
      },
      "externalDocs": {
        "url": "https://docs.benomad.com/benav-rnc/commands/start-circuit-guidance/"
      }
    },
    {
      "name": "joinCircuit",
      "summary": "Used to join manually when the vehicle is back on the circuit but too far from where he left it.",
      "description": "Used to join manually when the vehicle is back on the circuit but too far from where he left it. Can only be called when the notification `onCanJoinCircuit` is received with the percentage.",
      "x-benav-kind": "command",
      "tags": [
        {
          "name": "Circuit navigation"
        }
      ],
      "paramStructure": "by-name",
      "params": [],
      "result": {
        "name": "result",
        "schema": {
          "type": "object",
          "properties": {}
        }
      },
      "externalDocs": {
        "url": "https://docs.benomad.com/benav-rnc/commands/join-circuit/"
      },
      "examples": [
        {
          "name": "joinCircuit example",
          "params": [],
          "result": {
            "name": "result",
            "value": {}
          }
        }
      ]
    },
    {
      "name": "onCircuitLeft",
      "summary": "Called when the driver leaves the circuit path.",
      "description": "Called when the driver leaves the circuit path:",
      "x-benav-kind": "notification",
      "tags": [
        {
          "name": "Circuit navigation"
        }
      ],
      "paramStructure": "by-name",
      "params": [
        {
          "name": "percentage",
          "description": "where on the circuit the driver left.",
          "schema": {
            "type": "number"
          }
        },
        {
          "name": "lat",
          "description": "geographic location where the driver left.",
          "schema": {
            "type": "number"
          }
        },
        {
          "name": "lon",
          "description": "geographic location where the driver left.",
          "schema": {
            "type": "number"
          }
        }
      ],
      "externalDocs": {
        "url": "https://docs.benomad.com/benav-rnc/notifications/on-circuit-left/"
      }
    },
    {
      "name": "onCircuitJoined",
      "summary": "Called when the driver joins the circuit path.",
      "description": "Called when the driver joins the circuit path:",
      "x-benav-kind": "notification",
      "tags": [
        {
          "name": "Circuit navigation"
        }
      ],
      "paramStructure": "by-name",
      "params": [
        {
          "name": "percentage",
          "description": "where on the circuit the driver left.",
          "schema": {
            "type": "number"
          }
        },
        {
          "name": "lat",
          "description": "geographic location where the driver left.",
          "schema": {
            "type": "number"
          }
        },
        {
          "name": "lon",
          "description": "geographic location where the driver left.",
          "schema": {
            "type": "number"
          }
        }
      ],
      "externalDocs": {
        "url": "https://docs.benomad.com/benav-rnc/notifications/on-circuit-joined/"
      }
    },
    {
      "name": "onCanJoinCircuit",
      "summary": "Called periodically (every seconds) during FREE_DRIVE mode when the vehicle is back on the circuit but too far from where he left it.",
      "description": "Called periodically (every seconds) during FREE_DRIVE mode when the vehicle is back on the circuit but too far from where he left it.",
      "x-benav-kind": "notification",
      "tags": [
        {
          "name": "Circuit navigation"
        }
      ],
      "paramStructure": "by-name",
      "params": [
        {
          "name": "percentage",
          "schema": {
            "type": "number"
          }
        }
      ],
      "externalDocs": {
        "url": "https://docs.benomad.com/benav-rnc/notifications/on-can-join-circuit/"
      }
    }
  ],
  "components": {
    "errors": {
      "EMPTY_LIST": {
        "code": -9,
        "message": "empty.list"
      },
      "NULL_PARAMS": {
        "code": -8,
        "message": "null.params"
      },
      "APPLICATION_NOT_STARTED": {
        "code": -7,
        "message": "application.not.started"
      },
      "NOT_AUTHORIZED_IN_LICENCE": {
        "code": -6,
        "message": "not.authorized.in.licence"
      },
      "UNEXPECTED_VARIANT_ERROR": {
        "code": -5,
        "message": "unexpected.variant.error"
      },
      "EXCEPTION_CASTING_PARAMS": {
        "code": -4,
        "message": "exception.casting.params"
      },
      "RNC_NOT_AVAILABLE": {
        "code": -3,
        "message": "rnc.not.available",
        "data": {
          "description": "RNC features are not available in this application"
        }
      },
      "APPLICATION_NOT_READY": {
        "code": -2,
        "message": "application.not.ready",
        "data": {
          "description": "The application is not yet ready to handle RNC commands (Core is not initialized)"
        }
      },
      "BUSY": {
        "code": -1,
        "message": "busy",
        "data": {
          "description": "The application is already handling a RNC command, this command is ignored"
        }
      },
      "CORE_INIT_ERROR": {
        "code": 0,
        "message": "core.init.error",
        "data": {
          "description": "An error occurred during Core initialization, application features are not available"
        }
      },
      "PARSE_ERROR": {
        "code": -32700,
        "message": "parse.error",
        "data": {
          "description": "An error occurred during the json rpc 2.0 parsing"
        }
      },
      "INVALID_REQUEST": {
        "code": -32600,
        "message": "invalid.request",
        "data": {
          "description": "The parsed command is not compliant with json rpc 2.0 standard"
        }
      },
      "UNSUPPORTED_METHOD": {
        "code": -32601,
        "message": "method.not.found",
        "data": {
          "description": "The command's method is not supported"
        }
      },
      "INVALID_PARAMS": {
        "code": -32602,
        "message": "invalid.params",
        "data": {
          "description": "Parameters of parsed command are invalid"
        }
      },
      "INTERNAL_ERROR": {
        "code": -32603,
        "message": "internal.error",
        "data": {
          "description": "Unexpected internal error"
        }
      }
    }
  }
}
