Véhicules, conducteurs et positions
Les réglages de votre flotte, vos conducteurs et véhicules, et les positions envoyées par les applications de vos livreurs.
Sur cette page
- Obtenir les paramètres de flotte du projet
- Modifier les paramètres de flotte (les champs omis gardent leur valeur)
- Lister les conducteurs
- Ajouter un conducteur
- Obtenir un conducteur
- Modifier un conducteur
- Supprimer un conducteur (les véhicules continuent de rouler sans conducteur)
- Lister les véhicules avec leur dernière position connue
- Ajouter un véhicule
- Obtenir un véhicule et sa dernière position connue
- Modifier un véhicule (driverId "" retire le conducteur)
- Supprimer un véhicule et son historique de trajets
- L’historique de trajets d’un véhicule (du plus ancien au plus récent)
- La chronologie d’un véhicule selon son traceur (contact mis et coupé, alimentation coupée et rétablie), la plus récente d’abord
- Envoyer des positions (par lots)
Envoyez votre clé avec key=VOTRE_CLE_API dans l’adresse, ou dans l’en-tête X-NWays-Api-Key. Clés d’API
Adresse de base : https://nways.ng/maps/v1/fleet
Obtenir les paramètres de flotte du projet
GET https://nways.ng/maps/v1/fleet/settings
curl "https://nways.ng/maps/v1/fleet/settings" \
-H "X-NWays-Api-Key: VOTRE_CLE_API"const res = await fetch('https://nways.ng/maps/v1/fleet/settings', {
headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY },
})
const data = await res.json()import os
import requests
res = requests.get(
"https://nways.ng/maps/v1/fleet/settings",
headers={"X-NWays-Api-Key": os.environ["NWAYS_API_KEY"]},
timeout=10,
)
data = res.json()Réponse
Paramètres
| Champ | Type | Description |
|---|---|---|
shareTraffic | boolean | Obligatoire. Laisser aussi les positions de vos véhicules alimenter le trafic en direct public de N-Ways (de façon anonyme). Désactivé tant que vous ne l’activez pas. Par défaut: false. |
retentionDays | integer | Obligatoire. Durée de conservation de l’historique de trajets et des tâches terminées. Par défaut: 30. ≥ 1, ≤ 90. |
brandName | string | Obligatoire. Le nom affiché sur les pages de suivi (« Votre livraison de … »). 60 caractères au plus. |
offlineAfterS | integer | Obligatoire. Durée de silence au-delà de laquelle un véhicule est hors ligne (vehicle.offline). Par défaut: 600. ≥ 60, ≤ 86400. |
stopAlertS | integer | Obligatoire. Un véhicule en livraison arrêté aussi longtemps déclenche une alerte stopped. Par défaut: 600. ≥ 60, ≤ 7200. |
{
"shareTraffic": false,
"retentionDays": 30,
"brandName": "string",
"offlineAfterS": 600,
"stopAlertS": 600
}Erreurs
defaultErreur
Modifier les paramètres de flotte (les champs omis gardent leur valeur)
PUT https://nways.ng/maps/v1/fleet/settings
Corps de la requête
| Champ | Type | Description |
|---|---|---|
shareTraffic | boolean | |
retentionDays | integer | ≥ 1, ≤ 90. |
brandName | string | 60 caractères au plus. |
offlineAfterS | integer | ≥ 60, ≤ 86400. |
stopAlertS | integer | ≥ 60, ≤ 7200. |
curl -X PUT "https://nways.ng/maps/v1/fleet/settings" \
-H "X-NWays-Api-Key: VOTRE_CLE_API" \
-H "Content-Type: application/json" \
-d '{"brandName":"Chowtime","offlineAfterS":300}'const res = await fetch('https://nways.ng/maps/v1/fleet/settings', {
method: 'PUT',
headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({
"brandName": "Chowtime",
"offlineAfterS": 300
}),
})
const data = await res.json()import os
import requests
res = requests.put(
"https://nways.ng/maps/v1/fleet/settings",
headers={"X-NWays-Api-Key": os.environ["NWAYS_API_KEY"]},
json={"brandName": "Chowtime", "offlineAfterS": 300},
timeout=10,
)
data = res.json()Réponse
Paramètres
| Champ | Type | Description |
|---|---|---|
shareTraffic | boolean | Obligatoire. Laisser aussi les positions de vos véhicules alimenter le trafic en direct public de N-Ways (de façon anonyme). Désactivé tant que vous ne l’activez pas. Par défaut: false. |
retentionDays | integer | Obligatoire. Durée de conservation de l’historique de trajets et des tâches terminées. Par défaut: 30. ≥ 1, ≤ 90. |
brandName | string | Obligatoire. Le nom affiché sur les pages de suivi (« Votre livraison de … »). 60 caractères au plus. |
offlineAfterS | integer | Obligatoire. Durée de silence au-delà de laquelle un véhicule est hors ligne (vehicle.offline). Par défaut: 600. ≥ 60, ≤ 86400. |
stopAlertS | integer | Obligatoire. Un véhicule en livraison arrêté aussi longtemps déclenche une alerte stopped. Par défaut: 600. ≥ 60, ≤ 7200. |
{
"shareTraffic": false,
"retentionDays": 30,
"brandName": "string",
"offlineAfterS": 600,
"stopAlertS": 600
}Erreurs
defaultErreur
Lister les conducteurs
GET https://nways.ng/maps/v1/fleet/drivers
curl "https://nways.ng/maps/v1/fleet/drivers" \
-H "X-NWays-Api-Key: VOTRE_CLE_API"const res = await fetch('https://nways.ng/maps/v1/fleet/drivers', {
headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY },
})
const data = await res.json()import os
import requests
res = requests.get(
"https://nways.ng/maps/v1/fleet/drivers",
headers={"X-NWays-Api-Key": os.environ["NWAYS_API_KEY"]},
timeout=10,
)
data = res.json()Réponse
Conducteurs, par id
| Champ | Type | Description |
|---|---|---|
drivers | Driver[] | Obligatoire. |
drivers[].id | string | Obligatoire. |
drivers[].name | string | Obligatoire. firstName et lastName ensemble. |
drivers[].firstName | string | Obligatoire. |
drivers[].lastName | string | Obligatoire. Vide pour un chauffeur créé avec un nom d’un seul mot. |
drivers[].phone | string | Obligatoire. |
drivers[].createdAt | string (date-time) | Obligatoire. |
drivers[].updatedAt | string (date-time) | Obligatoire. |
drivers[].app | object | Obligatoire. Le livreur dans N-Ways Business. |
drivers[].app.status | string | Obligatoire. Au choix: none, invited, joined. |
drivers[].app.joinedAt | string (date-time) | null | Obligatoire. |
drivers[].app.email | string | Le compte N-Ways du livreur (seulement une fois inscrit). |
drivers[].app.name | string | |
drivers[].app.onDuty | boolean | Obligatoire. Partage sa position en ce moment. |
drivers[].app.consentedAt | string (date-time) | null | Obligatoire. Quand il a accepté de partager sa position (null : pas en ce moment). |
drivers[].app.inviteExpiresAt | string (date-time) | Invité : jusqu’à quand le code marche. |
{
"drivers": [
{
"id": "string",
"name": "string",
"firstName": "string",
"lastName": "string",
"phone": "string",
"createdAt": "2026-10-15T09:00:00+01:00",
"updatedAt": "2026-10-15T09:00:00+01:00",
"app": {
"status": "none",
"joinedAt": "2026-10-15T09:00:00+01:00",
"email": "string",
"name": "string",
"onDuty": true,
"consentedAt": "2026-10-15T09:00:00+01:00",
"inviteExpiresAt": "2026-10-15T09:00:00+01:00"
}
}
]
}Erreurs
defaultErreur
Ajouter un conducteur
POST https://nways.ng/maps/v1/fleet/drivers
Corps de la requête
| Champ | Type | Description |
|---|---|---|
id | string | Obligatoire. |
name | string | L’ancien nom en un seul champ ; ignoré quand firstName et lastName sont envoyés. 100 caractères au plus. |
phone | string | 32 caractères au plus. |
firstName | string | Lettres (toute écriture, accents compris), espaces, traits d’union et apostrophes. À envoyer avec lastName ; name devient alors « firstName lastName ». 50 caractères au plus. |
lastName | string | Obligatoire avec firstName ; mêmes règles. 50 caractères au plus. |
curl -X POST "https://nways.ng/maps/v1/fleet/drivers" \
-H "X-NWays-Api-Key: VOTRE_CLE_API" \
-H "Content-Type: application/json" \
-d '{"id":"string","name":"string","phone":"string","firstName":"string","lastName":"string"}'const res = await fetch('https://nways.ng/maps/v1/fleet/drivers', {
method: 'POST',
headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({
"id": "string",
"name": "string",
"phone": "string",
"firstName": "string",
"lastName": "string"
}),
})
const data = await res.json()import os
import requests
res = requests.post(
"https://nways.ng/maps/v1/fleet/drivers",
headers={"X-NWays-Api-Key": os.environ["NWAYS_API_KEY"]},
json={"id": "string", "name": "string", "phone": "string", "firstName": "string", "lastName": "string"},
timeout=10,
)
data = res.json()Réponse
Créé
| Champ | Type | Description |
|---|---|---|
id | string | Obligatoire. |
name | string | Obligatoire. firstName et lastName ensemble. |
firstName | string | Obligatoire. |
lastName | string | Obligatoire. Vide pour un chauffeur créé avec un nom d’un seul mot. |
phone | string | Obligatoire. |
createdAt | string (date-time) | Obligatoire. |
updatedAt | string (date-time) | Obligatoire. |
app | object | Obligatoire. Le livreur dans N-Ways Business. |
app.status | string | Obligatoire. Au choix: none, invited, joined. |
app.joinedAt | string (date-time) | null | Obligatoire. |
app.email | string | Le compte N-Ways du livreur (seulement une fois inscrit). |
app.name | string | |
app.onDuty | boolean | Obligatoire. Partage sa position en ce moment. |
app.consentedAt | string (date-time) | null | Obligatoire. Quand il a accepté de partager sa position (null : pas en ce moment). |
app.inviteExpiresAt | string (date-time) | Invité : jusqu’à quand le code marche. |
{
"id": "string",
"name": "string",
"firstName": "string",
"lastName": "string",
"phone": "string",
"createdAt": "2026-10-15T09:00:00+01:00",
"updatedAt": "2026-10-15T09:00:00+01:00",
"app": {
"status": "none",
"joinedAt": "2026-10-15T09:00:00+01:00",
"email": "string",
"name": "string",
"onDuty": true,
"consentedAt": "2026-10-15T09:00:00+01:00",
"inviteExpiresAt": "2026-10-15T09:00:00+01:00"
}
}Erreurs
409ErreurdefaultErreur
Obtenir un conducteur
GET https://nways.ng/maps/v1/fleet/drivers/{id}
Paramètres
| Nom | Où | Type | Description |
|---|---|---|---|
id | chemin | string | Obligatoire. |
curl "https://nways.ng/maps/v1/fleet/drivers/string" \
-H "X-NWays-Api-Key: VOTRE_CLE_API"const res = await fetch('https://nways.ng/maps/v1/fleet/drivers/string', {
headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY },
})
const data = await res.json()import os
import requests
res = requests.get(
"https://nways.ng/maps/v1/fleet/drivers/string",
headers={"X-NWays-Api-Key": os.environ["NWAYS_API_KEY"]},
timeout=10,
)
data = res.json()Réponse
Conducteur
| Champ | Type | Description |
|---|---|---|
id | string | Obligatoire. |
name | string | Obligatoire. firstName et lastName ensemble. |
firstName | string | Obligatoire. |
lastName | string | Obligatoire. Vide pour un chauffeur créé avec un nom d’un seul mot. |
phone | string | Obligatoire. |
createdAt | string (date-time) | Obligatoire. |
updatedAt | string (date-time) | Obligatoire. |
app | object | Obligatoire. Le livreur dans N-Ways Business. |
app.status | string | Obligatoire. Au choix: none, invited, joined. |
app.joinedAt | string (date-time) | null | Obligatoire. |
app.email | string | Le compte N-Ways du livreur (seulement une fois inscrit). |
app.name | string | |
app.onDuty | boolean | Obligatoire. Partage sa position en ce moment. |
app.consentedAt | string (date-time) | null | Obligatoire. Quand il a accepté de partager sa position (null : pas en ce moment). |
app.inviteExpiresAt | string (date-time) | Invité : jusqu’à quand le code marche. |
{
"id": "string",
"name": "string",
"firstName": "string",
"lastName": "string",
"phone": "string",
"createdAt": "2026-10-15T09:00:00+01:00",
"updatedAt": "2026-10-15T09:00:00+01:00",
"app": {
"status": "none",
"joinedAt": "2026-10-15T09:00:00+01:00",
"email": "string",
"name": "string",
"onDuty": true,
"consentedAt": "2026-10-15T09:00:00+01:00",
"inviteExpiresAt": "2026-10-15T09:00:00+01:00"
}
}Erreurs
defaultErreur
Modifier un conducteur
PATCH https://nways.ng/maps/v1/fleet/drivers/{id}
Paramètres
| Nom | Où | Type | Description |
|---|---|---|---|
id | chemin | string | Obligatoire. |
Corps de la requête
| Champ | Type | Description |
|---|---|---|
name | string | L’ancien nom en un seul champ ; ignoré quand firstName et lastName sont envoyés. 100 caractères au plus. |
phone | string | 32 caractères au plus. |
firstName | string | Lettres (toute écriture, accents compris), espaces, traits d’union et apostrophes. À envoyer avec lastName ; name devient alors « firstName lastName ». 50 caractères au plus. |
lastName | string | Obligatoire avec firstName ; mêmes règles. 50 caractères au plus. |
curl -X PATCH "https://nways.ng/maps/v1/fleet/drivers/string" \
-H "X-NWays-Api-Key: VOTRE_CLE_API" \
-H "Content-Type: application/json" \
-d '{"name":"string","phone":"string","firstName":"string","lastName":"string"}'const res = await fetch('https://nways.ng/maps/v1/fleet/drivers/string', {
method: 'PATCH',
headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({
"name": "string",
"phone": "string",
"firstName": "string",
"lastName": "string"
}),
})
const data = await res.json()import os
import requests
res = requests.patch(
"https://nways.ng/maps/v1/fleet/drivers/string",
headers={"X-NWays-Api-Key": os.environ["NWAYS_API_KEY"]},
json={"name": "string", "phone": "string", "firstName": "string", "lastName": "string"},
timeout=10,
)
data = res.json()Réponse
Conducteur
| Champ | Type | Description |
|---|---|---|
id | string | Obligatoire. |
name | string | Obligatoire. firstName et lastName ensemble. |
firstName | string | Obligatoire. |
lastName | string | Obligatoire. Vide pour un chauffeur créé avec un nom d’un seul mot. |
phone | string | Obligatoire. |
createdAt | string (date-time) | Obligatoire. |
updatedAt | string (date-time) | Obligatoire. |
app | object | Obligatoire. Le livreur dans N-Ways Business. |
app.status | string | Obligatoire. Au choix: none, invited, joined. |
app.joinedAt | string (date-time) | null | Obligatoire. |
app.email | string | Le compte N-Ways du livreur (seulement une fois inscrit). |
app.name | string | |
app.onDuty | boolean | Obligatoire. Partage sa position en ce moment. |
app.consentedAt | string (date-time) | null | Obligatoire. Quand il a accepté de partager sa position (null : pas en ce moment). |
app.inviteExpiresAt | string (date-time) | Invité : jusqu’à quand le code marche. |
{
"id": "string",
"name": "string",
"firstName": "string",
"lastName": "string",
"phone": "string",
"createdAt": "2026-10-15T09:00:00+01:00",
"updatedAt": "2026-10-15T09:00:00+01:00",
"app": {
"status": "none",
"joinedAt": "2026-10-15T09:00:00+01:00",
"email": "string",
"name": "string",
"onDuty": true,
"consentedAt": "2026-10-15T09:00:00+01:00",
"inviteExpiresAt": "2026-10-15T09:00:00+01:00"
}
}Erreurs
defaultErreur
Supprimer un conducteur (les véhicules continuent de rouler sans conducteur)
DELETE https://nways.ng/maps/v1/fleet/drivers/{id}
Paramètres
| Nom | Où | Type | Description |
|---|---|---|---|
id | chemin | string | Obligatoire. |
curl -X DELETE "https://nways.ng/maps/v1/fleet/drivers/string" \
-H "X-NWays-Api-Key: VOTRE_CLE_API"const res = await fetch('https://nways.ng/maps/v1/fleet/drivers/string', {
method: 'DELETE',
headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY },
})
const data = await res.json()import os
import requests
res = requests.delete(
"https://nways.ng/maps/v1/fleet/drivers/string",
headers={"X-NWays-Api-Key": os.environ["NWAYS_API_KEY"]},
timeout=10,
)
data = res.json()Réponse
Supprimé
Pas de contenu.
Erreurs
defaultErreur
Lister les véhicules avec leur dernière position connue
GET https://nways.ng/maps/v1/fleet/vehicles
Paramètres
| Nom | Où | Type | Description |
|---|---|---|---|
status | requête | string | Seulement les véhicules ayant donné signe de vie dans le délai offlineAfterS (en ligne), ou les autres. Au choix: online, offline. |
curl "https://nways.ng/maps/v1/fleet/vehicles" \
-H "X-NWays-Api-Key: VOTRE_CLE_API"const res = await fetch('https://nways.ng/maps/v1/fleet/vehicles', {
headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY },
})
const data = await res.json()import os
import requests
res = requests.get(
"https://nways.ng/maps/v1/fleet/vehicles",
headers={"X-NWays-Api-Key": os.environ["NWAYS_API_KEY"]},
timeout=10,
)
data = res.json()Réponse
Véhicules, par id
| Champ | Type | Description |
|---|---|---|
vehicles | Vehicle[] | Obligatoire. |
vehicles[].id | string | Obligatoire. |
vehicles[].name | string | Obligatoire. |
vehicles[].mode | string | Obligatoire. Comment les heures d’arrivée sont calculées. motorcycle = une moto de livraison (routes et temps des motos ; les interdictions des okadas commerciaux,
qui visent les okadas de passagers, ne s’appliquent pas) ; okada = une flotte d’okadas de passagers (tenue hors des zones interdites aux okadas) ;
motorbike = une moto privée ; keke = un tricycle (routes des deux-roues, sans interdictions okada) ; car, van, truck = itinéraires voiture ;
bicycle ; walk = un coursier à pied ; boat = sur l’eau (heure d’arrivée en ligne droite à sa vitesse) ; asset = tout autre
objet suivi (une remorque, un groupe électrogène) : jamais d’itinéraire. Au choix: motorcycle, okada, motorbike, keke, car, van, truck, bicycle, walk, boat, asset. Par défaut: motorcycle. |
vehicles[].plate | string | Obligatoire. |
vehicles[].driverId | string | null | Obligatoire. |
vehicles[].group | string | |
vehicles[].batteryPct | number | La batterie du traceur ou du téléphone à son dernier envoi, quand il en envoie une. |
vehicles[].colour | string | La couleur du véhicule sur les cartes de la console et de N-Ways Business. Un nouveau véhicule prend celle que son projet utilise le moins. Au choix: blue, orange, teal, purple, pink, green, brown, navy, magenta, olive, cyan, maroon, sky, lime, plum, sand. |
vehicles[].lastLocation | Position | null | Obligatoire. |
vehicles[].online | boolean | Obligatoire. A donné signe de vie dans le délai offlineAfterS. |
vehicles[].createdAt | string (date-time) | Obligatoire. |
vehicles[].updatedAt | string (date-time) | Obligatoire. |
{
"vehicles": [
{
"id": "string",
"name": "string",
"mode": "motorcycle",
"plate": "string",
"driverId": "string",
"group": "string",
"batteryPct": 0,
"colour": "blue",
"lastLocation": {
"lat": 0,
"lng": 0,
"heading": 0,
"speedMps": 0,
"accuracyM": 0,
"at": "2026-10-15T09:00:00+01:00"
},
"online": true,
"createdAt": "2026-10-15T09:00:00+01:00",
"updatedAt": "2026-10-15T09:00:00+01:00"
}
]
}Erreurs
defaultErreur
Ajouter un véhicule
POST https://nways.ng/maps/v1/fleet/vehicles
Corps de la requête
| Champ | Type | Description |
|---|---|---|
id | string | Obligatoire. |
name | string | 100 caractères au plus. |
mode | string | Comment les heures d’arrivée sont calculées. motorcycle = une moto de livraison (routes et temps des motos ; les interdictions des okadas commerciaux,
qui visent les okadas de passagers, ne s’appliquent pas) ; okada = une flotte d’okadas de passagers (tenue hors des zones interdites aux okadas) ;
motorbike = une moto privée ; keke = un tricycle (routes des deux-roues, sans interdictions okada) ; car, van, truck = itinéraires voiture ;
bicycle ; walk = un coursier à pied ; boat = sur l’eau (heure d’arrivée en ligne droite à sa vitesse) ; asset = tout autre
objet suivi (une remorque, un groupe électrogène) : jamais d’itinéraire. Au choix: motorcycle, okada, motorbike, keke, car, van, truck, bicycle, walk, boat, asset. Par défaut: motorcycle. |
plate | string | 20 caractères au plus. |
driverId | string | L’id d’un conducteur, ou vide pour aucun. |
group | string | Votre propre regroupement (« Motos de Lekki »), pour les règles d’alerte. 60 caractères au plus. |
colour | string | La couleur du véhicule sur les cartes de la console et de N-Ways Business. Un nouveau véhicule prend celle que son projet utilise le moins. Au choix: blue, orange, teal, purple, pink, green, brown, navy, magenta, olive, cyan, maroon, sky, lime, plum, sand. |
curl -X POST "https://nways.ng/maps/v1/fleet/vehicles" \
-H "X-NWays-Api-Key: VOTRE_CLE_API" \
-H "Content-Type: application/json" \
-d '{"id":"bike-17","name":"Bike 17","mode":"motorcycle","plate":"LAG 123 XY","driverId":"d-4","group":"Yaba"}'const res = await fetch('https://nways.ng/maps/v1/fleet/vehicles', {
method: 'POST',
headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({
"id": "bike-17",
"name": "Bike 17",
"mode": "motorcycle",
"plate": "LAG 123 XY",
"driverId": "d-4",
"group": "Yaba"
}),
})
const data = await res.json()import os
import requests
res = requests.post(
"https://nways.ng/maps/v1/fleet/vehicles",
headers={"X-NWays-Api-Key": os.environ["NWAYS_API_KEY"]},
json={"id": "bike-17", "name": "Bike 17", "mode": "motorcycle", "plate": "LAG 123 XY", "driverId": "d-4", "group": "Yaba"},
timeout=10,
)
data = res.json()Réponse
Créé
| Champ | Type | Description |
|---|---|---|
id | string | Obligatoire. |
name | string | Obligatoire. |
mode | string | Obligatoire. Comment les heures d’arrivée sont calculées. motorcycle = une moto de livraison (routes et temps des motos ; les interdictions des okadas commerciaux,
qui visent les okadas de passagers, ne s’appliquent pas) ; okada = une flotte d’okadas de passagers (tenue hors des zones interdites aux okadas) ;
motorbike = une moto privée ; keke = un tricycle (routes des deux-roues, sans interdictions okada) ; car, van, truck = itinéraires voiture ;
bicycle ; walk = un coursier à pied ; boat = sur l’eau (heure d’arrivée en ligne droite à sa vitesse) ; asset = tout autre
objet suivi (une remorque, un groupe électrogène) : jamais d’itinéraire. Au choix: motorcycle, okada, motorbike, keke, car, van, truck, bicycle, walk, boat, asset. Par défaut: motorcycle. |
plate | string | Obligatoire. |
driverId | string | null | Obligatoire. |
group | string | |
batteryPct | number | La batterie du traceur ou du téléphone à son dernier envoi, quand il en envoie une. |
colour | string | La couleur du véhicule sur les cartes de la console et de N-Ways Business. Un nouveau véhicule prend celle que son projet utilise le moins. Au choix: blue, orange, teal, purple, pink, green, brown, navy, magenta, olive, cyan, maroon, sky, lime, plum, sand. |
lastLocation | Position | null | Obligatoire. |
online | boolean | Obligatoire. A donné signe de vie dans le délai offlineAfterS. |
createdAt | string (date-time) | Obligatoire. |
updatedAt | string (date-time) | Obligatoire. |
{
"id": "string",
"name": "string",
"mode": "motorcycle",
"plate": "string",
"driverId": "string",
"group": "string",
"batteryPct": 0,
"colour": "blue",
"lastLocation": {
"lat": 0,
"lng": 0,
"heading": 0,
"speedMps": 0,
"accuracyM": 0,
"at": "2026-10-15T09:00:00+01:00"
},
"online": true,
"createdAt": "2026-10-15T09:00:00+01:00",
"updatedAt": "2026-10-15T09:00:00+01:00"
}Erreurs
defaultErreur
Obtenir un véhicule et sa dernière position connue
GET https://nways.ng/maps/v1/fleet/vehicles/{id}
Paramètres
| Nom | Où | Type | Description |
|---|---|---|---|
id | chemin | string | Obligatoire. |
curl "https://nways.ng/maps/v1/fleet/vehicles/string" \
-H "X-NWays-Api-Key: VOTRE_CLE_API"const res = await fetch('https://nways.ng/maps/v1/fleet/vehicles/string', {
headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY },
})
const data = await res.json()import os
import requests
res = requests.get(
"https://nways.ng/maps/v1/fleet/vehicles/string",
headers={"X-NWays-Api-Key": os.environ["NWAYS_API_KEY"]},
timeout=10,
)
data = res.json()Réponse
Véhicule
| Champ | Type | Description |
|---|---|---|
id | string | Obligatoire. |
name | string | Obligatoire. |
mode | string | Obligatoire. Comment les heures d’arrivée sont calculées. motorcycle = une moto de livraison (routes et temps des motos ; les interdictions des okadas commerciaux,
qui visent les okadas de passagers, ne s’appliquent pas) ; okada = une flotte d’okadas de passagers (tenue hors des zones interdites aux okadas) ;
motorbike = une moto privée ; keke = un tricycle (routes des deux-roues, sans interdictions okada) ; car, van, truck = itinéraires voiture ;
bicycle ; walk = un coursier à pied ; boat = sur l’eau (heure d’arrivée en ligne droite à sa vitesse) ; asset = tout autre
objet suivi (une remorque, un groupe électrogène) : jamais d’itinéraire. Au choix: motorcycle, okada, motorbike, keke, car, van, truck, bicycle, walk, boat, asset. Par défaut: motorcycle. |
plate | string | Obligatoire. |
driverId | string | null | Obligatoire. |
group | string | |
batteryPct | number | La batterie du traceur ou du téléphone à son dernier envoi, quand il en envoie une. |
colour | string | La couleur du véhicule sur les cartes de la console et de N-Ways Business. Un nouveau véhicule prend celle que son projet utilise le moins. Au choix: blue, orange, teal, purple, pink, green, brown, navy, magenta, olive, cyan, maroon, sky, lime, plum, sand. |
lastLocation | Position | null | Obligatoire. |
online | boolean | Obligatoire. A donné signe de vie dans le délai offlineAfterS. |
createdAt | string (date-time) | Obligatoire. |
updatedAt | string (date-time) | Obligatoire. |
{
"id": "string",
"name": "string",
"mode": "motorcycle",
"plate": "string",
"driverId": "string",
"group": "string",
"batteryPct": 0,
"colour": "blue",
"lastLocation": {
"lat": 0,
"lng": 0,
"heading": 0,
"speedMps": 0,
"accuracyM": 0,
"at": "2026-10-15T09:00:00+01:00"
},
"online": true,
"createdAt": "2026-10-15T09:00:00+01:00",
"updatedAt": "2026-10-15T09:00:00+01:00"
}Erreurs
defaultErreur
Modifier un véhicule (driverId "" retire le conducteur)
PATCH https://nways.ng/maps/v1/fleet/vehicles/{id}
Paramètres
| Nom | Où | Type | Description |
|---|---|---|---|
id | chemin | string | Obligatoire. |
Corps de la requête
| Champ | Type | Description |
|---|---|---|
name | string | 100 caractères au plus. |
mode | string | Comment les heures d’arrivée sont calculées. motorcycle = une moto de livraison (routes et temps des motos ; les interdictions des okadas commerciaux,
qui visent les okadas de passagers, ne s’appliquent pas) ; okada = une flotte d’okadas de passagers (tenue hors des zones interdites aux okadas) ;
motorbike = une moto privée ; keke = un tricycle (routes des deux-roues, sans interdictions okada) ; car, van, truck = itinéraires voiture ;
bicycle ; walk = un coursier à pied ; boat = sur l’eau (heure d’arrivée en ligne droite à sa vitesse) ; asset = tout autre
objet suivi (une remorque, un groupe électrogène) : jamais d’itinéraire. Au choix: motorcycle, okada, motorbike, keke, car, van, truck, bicycle, walk, boat, asset. Par défaut: motorcycle. |
plate | string | 20 caractères au plus. |
driverId | string | |
group | string | 60 caractères au plus. |
colour | string | La couleur du véhicule sur les cartes de la console et de N-Ways Business. Un nouveau véhicule prend celle que son projet utilise le moins. Au choix: blue, orange, teal, purple, pink, green, brown, navy, magenta, olive, cyan, maroon, sky, lime, plum, sand. |
curl -X PATCH "https://nways.ng/maps/v1/fleet/vehicles/string" \
-H "X-NWays-Api-Key: VOTRE_CLE_API" \
-H "Content-Type: application/json" \
-d '{"name":"string","mode":"motorcycle","plate":"string","driverId":"string","group":"string","colour":"blue"}'const res = await fetch('https://nways.ng/maps/v1/fleet/vehicles/string', {
method: 'PATCH',
headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({
"name": "string",
"mode": "motorcycle",
"plate": "string",
"driverId": "string",
"group": "string",
"colour": "blue"
}),
})
const data = await res.json()import os
import requests
res = requests.patch(
"https://nways.ng/maps/v1/fleet/vehicles/string",
headers={"X-NWays-Api-Key": os.environ["NWAYS_API_KEY"]},
json={"name": "string", "mode": "motorcycle", "plate": "string", "driverId": "string", "group": "string", "colour": "blue"},
timeout=10,
)
data = res.json()Réponse
Véhicule
| Champ | Type | Description |
|---|---|---|
id | string | Obligatoire. |
name | string | Obligatoire. |
mode | string | Obligatoire. Comment les heures d’arrivée sont calculées. motorcycle = une moto de livraison (routes et temps des motos ; les interdictions des okadas commerciaux,
qui visent les okadas de passagers, ne s’appliquent pas) ; okada = une flotte d’okadas de passagers (tenue hors des zones interdites aux okadas) ;
motorbike = une moto privée ; keke = un tricycle (routes des deux-roues, sans interdictions okada) ; car, van, truck = itinéraires voiture ;
bicycle ; walk = un coursier à pied ; boat = sur l’eau (heure d’arrivée en ligne droite à sa vitesse) ; asset = tout autre
objet suivi (une remorque, un groupe électrogène) : jamais d’itinéraire. Au choix: motorcycle, okada, motorbike, keke, car, van, truck, bicycle, walk, boat, asset. Par défaut: motorcycle. |
plate | string | Obligatoire. |
driverId | string | null | Obligatoire. |
group | string | |
batteryPct | number | La batterie du traceur ou du téléphone à son dernier envoi, quand il en envoie une. |
colour | string | La couleur du véhicule sur les cartes de la console et de N-Ways Business. Un nouveau véhicule prend celle que son projet utilise le moins. Au choix: blue, orange, teal, purple, pink, green, brown, navy, magenta, olive, cyan, maroon, sky, lime, plum, sand. |
lastLocation | Position | null | Obligatoire. |
online | boolean | Obligatoire. A donné signe de vie dans le délai offlineAfterS. |
createdAt | string (date-time) | Obligatoire. |
updatedAt | string (date-time) | Obligatoire. |
{
"id": "string",
"name": "string",
"mode": "motorcycle",
"plate": "string",
"driverId": "string",
"group": "string",
"batteryPct": 0,
"colour": "blue",
"lastLocation": {
"lat": 0,
"lng": 0,
"heading": 0,
"speedMps": 0,
"accuracyM": 0,
"at": "2026-10-15T09:00:00+01:00"
},
"online": true,
"createdAt": "2026-10-15T09:00:00+01:00",
"updatedAt": "2026-10-15T09:00:00+01:00"
}Erreurs
defaultErreur
Supprimer un véhicule et son historique de trajets
DELETE https://nways.ng/maps/v1/fleet/vehicles/{id}
Paramètres
| Nom | Où | Type | Description |
|---|---|---|---|
id | chemin | string | Obligatoire. |
curl -X DELETE "https://nways.ng/maps/v1/fleet/vehicles/string" \
-H "X-NWays-Api-Key: VOTRE_CLE_API"const res = await fetch('https://nways.ng/maps/v1/fleet/vehicles/string', {
method: 'DELETE',
headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY },
})
const data = await res.json()import os
import requests
res = requests.delete(
"https://nways.ng/maps/v1/fleet/vehicles/string",
headers={"X-NWays-Api-Key": os.environ["NWAYS_API_KEY"]},
timeout=10,
)
data = res.json()Réponse
Supprimé
Pas de contenu.
Erreurs
defaultErreur
L’historique de trajets d’un véhicule (du plus ancien au plus récent)
GET https://nways.ng/maps/v1/fleet/vehicles/{id}/history
Par défaut, les dernières 24 heures ; 7 jours et 10 000 positions au plus par appel. L’historique plus ancien que retentionDays est supprimé.
Paramètres
| Nom | Où | Type | Description |
|---|---|---|---|
id | chemin | string | Obligatoire. |
from | requête | string (date-time) | |
to | requête | string (date-time) | |
taskId | requête | string | Seulement les positions envoyées pendant que cette tâche était en cours. |
limit | requête | integer | ≥ 1, ≤ 10000. |
curl "https://nways.ng/maps/v1/fleet/vehicles/string/history" \
-H "X-NWays-Api-Key: VOTRE_CLE_API"const res = await fetch('https://nways.ng/maps/v1/fleet/vehicles/string/history', {
headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY },
})
const data = await res.json()import os
import requests
res = requests.get(
"https://nways.ng/maps/v1/fleet/vehicles/string/history",
headers={"X-NWays-Api-Key": os.environ["NWAYS_API_KEY"]},
timeout=10,
)
data = res.json()Réponse
Positions
| Champ | Type | Description |
|---|---|---|
vehicleId | string | Obligatoire. |
from | string (date-time) | Obligatoire. |
to | string (date-time) | Obligatoire. |
positions | Position[] | Obligatoire. |
positions[].lat | number | Obligatoire. |
positions[].lng | number | Obligatoire. |
positions[].heading | number | ≥ 0, ≤ 360. |
positions[].speedMps | number | |
positions[].accuracyM | number | |
positions[].at | string (date-time) | Obligatoire. |
{
"vehicleId": "string",
"from": "2026-10-15T09:00:00+01:00",
"to": "2026-10-15T09:00:00+01:00",
"positions": [
{
"lat": 0,
"lng": 0,
"heading": 0,
"speedMps": 0,
"accuracyM": 0,
"at": "2026-10-15T09:00:00+01:00"
}
]
}Erreurs
defaultErreur
La chronologie d’un véhicule selon son traceur (contact mis et coupé, alimentation coupée et rétablie), la plus récente d’abord
GET https://nways.ng/maps/v1/fleet/vehicles/{id}/events
Paramètres
| Nom | Où | Type | Description |
|---|---|---|---|
id | chemin | string | Obligatoire. |
from | requête | string (date-time) | Par défaut : il y a 24 heures. |
to | requête | string (date-time) | Au plus 7 jours après from. |
limit | requête | integer | Par défaut: 500. ≤ 500. |
curl "https://nways.ng/maps/v1/fleet/vehicles/string/events" \
-H "X-NWays-Api-Key: VOTRE_CLE_API"const res = await fetch('https://nways.ng/maps/v1/fleet/vehicles/string/events', {
headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY },
})
const data = await res.json()import os
import requests
res = requests.get(
"https://nways.ng/maps/v1/fleet/vehicles/string/events",
headers={"X-NWays-Api-Key": os.environ["NWAYS_API_KEY"]},
timeout=10,
)
data = res.json()Réponse
Entrées
| Champ | Type | Description |
|---|---|---|
vehicleId | string | |
events | object[] | |
events[].at | string (date-time) | |
events[].kind | string | Au choix: ignition_on, ignition_off, power_cut, power_back. |
events[].lat | number | |
events[].lng | number |
{
"vehicleId": "string",
"events": [
{
"at": "2026-10-15T09:00:00+01:00",
"kind": "ignition_on",
"lat": 0,
"lng": 0
}
]
}Erreurs
defaultErreur
Envoyer des positions (par lots)
POST https://nways.ng/maps/v1/fleet/locations
Les applications livreur envoient leurs relevés de position par lots, pour un ou plusieurs véhicules (1 à 1 000 par appel). Les relevés de moins de 24 heures sont gardés dans l’historique (une application qui revient en ligne envoie ce qu’elle a mis en mémoire) ; le plus récent devient la dernière position connue du véhicule. Un relevé frais (10 minutes ou moins) recalcule l’heure d’arrivée de la tâche ouverte du véhicule avec notre calculateur d’itinéraires et le trafic en direct (au plus toutes les 10 s par tâche), et la marque arriving quand le point de livraison est à moins de son arrivingS ou de 250 m. Les relevés inutilisables sont listés dans rejected par index ; les autres sont acceptés. Envoyez-en toutes les 5 à 15 s pendant une tâche.
Corps de la requête
| Champ | Type | Description |
|---|---|---|
updates | LocationUpdate[] | Obligatoire. Au moins 1 éléments, au plus 1000 éléments. |
updates[].vehicleId | string | Obligatoire. |
updates[].lat | number | Obligatoire. ≥ -90, ≤ 90. |
updates[].lng | number | Obligatoire. ≥ -180, ≤ 180. |
updates[].t | string (date-time) | Moment du relevé de position (maintenant par défaut) ; jusqu’à 24 h dans le passé, 2 min dans le futur. |
updates[].speedMps | number | ≥ 0, ≤ 100. |
updates[].heading | number | ≥ 0, ≤ 360. |
updates[].accuracyM | number | ≥ 0, ≤ 10000. |
updates[].batteryPct | number | Niveau de batterie, affiché dans la console. ≥ 0, ≤ 100. |
updates[].ignition | boolean | Le contact d’un traceur (ACC). |
updates[].extVoltageV | number | L’alimentation externe d’un traceur, en volts (0 : coupée). ≥ 0, ≤ 100. |
updates[].odometerM | number | Le compteur kilométrique d’un traceur, en mètres. ≥ 0. |
updates[].sats | integer | Satellites en vue. ≥ 0, ≤ 99. |
updates[].source | string | La source de la position (app par défaut). Les positions d’un traceur n’alimentent jamais le trafic en direct. Au choix: app, tracker. |
curl -X POST "https://nways.ng/maps/v1/fleet/locations" \
-H "X-NWays-Api-Key: VOTRE_CLE_API" \
-H "Content-Type: application/json" \
-d '{"updates":[{"vehicleId":"bike-17","lat":6.512,"lng":3.375,"t":"2026-10-15T09:12:03Z","speedMps":6.2,"heading":210,"accuracyM":8}]}'const res = await fetch('https://nways.ng/maps/v1/fleet/locations', {
method: 'POST',
headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({
"updates": [
{
"vehicleId": "bike-17",
"lat": 6.512,
"lng": 3.375,
"t": "2026-10-15T09:12:03Z",
"speedMps": 6.2,
"heading": 210,
"accuracyM": 8
}
]
}),
})
const data = await res.json()import os
import requests
res = requests.post(
"https://nways.ng/maps/v1/fleet/locations",
headers={"X-NWays-Api-Key": os.environ["NWAYS_API_KEY"]},
json={"updates": [{"vehicleId": "bike-17", "lat": 6.512, "lng": 3.375, "t": "2026-10-15T09:12:03Z", "speedMps": 6.2, "heading": 210, "accuracyM": 8}]},
timeout=10,
)
data = res.json()Réponse
Accepté
| Champ | Type | Description |
|---|---|---|
accepted | integer | Obligatoire. |
rejected | object[] | Obligatoire. |
rejected[].index | integer | Obligatoire. |
rejected[].reason | string | Obligatoire. Au choix: VEHICLE_NOT_FOUND, INVALID_POSITION, INVALID_TIME, TIME_OUT_OF_RANGE, INVALID_VALUE. |
tasks | object[] | Obligatoire. Les tâches ouvertes des véhicules du lot, avec leurs heures recalculées. |
tasks[].id | string | Obligatoire. |
tasks[].status | string | Obligatoire. Au choix: created, assigned, picked_up, arriving, completed, failed, cancelled. |
tasks[].eta | ETA | null | Obligatoire. |
{
"accepted": 0,
"rejected": [
{
"index": 0,
"reason": "VEHICLE_NOT_FOUND"
}
],
"tasks": [
{
"id": "string",
"status": "created",
"eta": {
"at": "2026-10-15T09:00:00+01:00",
"durationS": 0,
"distanceM": 0,
"trafficDelayS": 0,
"pickupAt": "2026-10-15T09:00:00+01:00",
"updatedAt": "2026-10-15T09:00:00+01:00"
}
}
]
}Erreurs
defaultErreur