N-Ways
Documentation développeursLivraisons et suivi

Livraisons et liens de suivi

Les livraisons (tâches) de la création au dépôt, avec l’heure d’arrivée en direct, la modification, vos lieux de retrait et clients, et les liens de suivi envoyés aux clients.

Sur cette page
Remarque :

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

La preuve de livraison de la tâche (photos, signatures) et la note du livreur

GET https://nways.ng/maps/v1/fleet/tasks/{id}/proofs

Paramètres

NomOùTypeDescription
idcheminstringObligatoire.
cURL
curl "https://nways.ng/maps/v1/fleet/tasks/string/proofs" \
  -H "X-NWays-Api-Key: VOTRE_CLE_API"
JavaScript
const res = await fetch('https://nways.ng/maps/v1/fleet/tasks/string/proofs', {
  headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY },
})
const data = await res.json()
Python
import os
import requests

res = requests.get(
    "https://nways.ng/maps/v1/fleet/tasks/string/proofs",
    headers={"X-NWays-Api-Key": os.environ["NWAYS_API_KEY"]},
    timeout=10,
)
data = res.json()

Réponse

Preuves

ChampTypeDescription
taskIdstringObligatoire.
proofsProof[]Obligatoire.
proofs[].idstringObligatoire.
proofs[].kindstringObligatoire. Au choix: photo, signature.
proofs[].contentTypestringObligatoire. Au choix: image/jpeg, image/png, image/webp.
proofs[].bytesintegerObligatoire.
proofs[].latnumber | nullObligatoire.
proofs[].lngnumber | nullObligatoire.
proofs[].bystringObligatoire. Le nom du livreur.
proofs[].createdAtstring (date-time)Obligatoire.
endNotestringObligatoire. Ce que le livreur a écrit en terminant.
200 OK
{
  "taskId": "string",
  "proofs": [
    {
      "id": "string",
      "kind": "photo",
      "contentType": "image/jpeg",
      "bytes": 0,
      "lat": 0,
      "lng": 0,
      "by": "string",
      "createdAt": "2026-10-15T09:00:00+01:00"
    }
  ],
  "endNote": "string"
}

Erreurs

  • default Erreur

L’image d’une preuve (JPEG, PNG ou WebP), gardée aussi longtemps que sa tâche

GET https://nways.ng/maps/v1/fleet/proofs/{proofId}

Paramètres

NomOùTypeDescription
proofIdcheminstringObligatoire.
cURL
curl "https://nways.ng/maps/v1/fleet/proofs/string" \
  -H "X-NWays-Api-Key: VOTRE_CLE_API"
JavaScript
const res = await fetch('https://nways.ng/maps/v1/fleet/proofs/string', {
  headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY },
})
const data = await res.json()
Python
import os
import requests

res = requests.get(
    "https://nways.ng/maps/v1/fleet/proofs/string",
    headers={"X-NWays-Api-Key": os.environ["NWAYS_API_KEY"]},
    timeout=10,
)
data = res.json()

Réponse

L’image

Erreurs

  • default Erreur

Lister les tâches, les plus récentes d’abord

GET https://nways.ng/maps/v1/fleet/tasks

Paramètres

NomOùTypeDescription
statusrequêtestringactive = assigned, picked_up ou arriving. Au choix: created, assigned, picked_up, arriving, completed, failed, cancelled, active.
vehicleIdrequêtestring
limitrequêteintegerPar défaut: 100. ≥ 1, ≤ 500.
pageTokenrequêtestringnextPageToken de la page précédente.
cURL
curl "https://nways.ng/maps/v1/fleet/tasks" \
  -H "X-NWays-Api-Key: VOTRE_CLE_API"
JavaScript
const res = await fetch('https://nways.ng/maps/v1/fleet/tasks', {
  headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY },
})
const data = await res.json()
Python
import os
import requests

res = requests.get(
    "https://nways.ng/maps/v1/fleet/tasks",
    headers={"X-NWays-Api-Key": os.environ["NWAYS_API_KEY"]},
    timeout=10,
)
data = res.json()

Réponse

Tâches

ChampTypeDescription
tasksTask[]Obligatoire.
tasks[].idstringObligatoire.
tasks[].refstringObligatoire. Le numéro court de la livraison dans le projet, donné par N-Ways (« 1042 », affiché #1042) : pour les personnes, dans les alertes et les listes.
tasks[].statusstringObligatoire. Au choix: created, assigned, picked_up, arriving, completed, failed, cancelled.
tasks[].vehicleIdstring | nullObligatoire.
tasks[].pickupStop | nullObligatoire.
tasks[].dropoffStopObligatoire.
tasks[].dropoff.latnumberObligatoire.
tasks[].dropoff.lngnumberObligatoire.
tasks[].dropoff.namestring120 caractères au plus.
tasks[].dropoff.addressstring300 caractères au plus.
tasks[].recipientNamestringObligatoire.
tasks[].recipientPhonestring
tasks[].notesstringObligatoire.
tasks[].langstringObligatoire. Au choix: en, fr, pt.
tasks[].arrivingSintegerObligatoire.
tasks[].etaETA | nullObligatoire. Null tant qu’aucune position fraîche n’est arrivée, et une fois la tâche terminée.
tasks[].dueAtstring (date-time) | nullObligatoire.
tasks[].latebooleanObligatoire. Ouverte et après dueAt, ou attendue après.
tasks[].trackingUrlstring (uri) | nullObligatoire. Null une fois expiré.
tasks[].trackingExpiresAtstring (date-time) | nullObligatoire.
tasks[].failureReasonstring
tasks[].createdAtstring (date-time)Obligatoire.
tasks[].assignedAtstring (date-time) | nullObligatoire.
tasks[].pickedUpAtstring (date-time) | nullObligatoire.
tasks[].arrivingAtstring (date-time) | nullObligatoire.
tasks[].endedAtstring (date-time) | nullObligatoire.
tasks[].areaArea | nullLa zone propre à la livraison : en sortir lève asset.geofence_exit.
tasks[].proofsProof[]Seulement dans GET /tasks/{id} : les photos et signatures du livreur (N-Ways Business).
tasks[].proofs[].idstringObligatoire.
tasks[].proofs[].kindstringObligatoire. Au choix: photo, signature.
tasks[].proofs[].contentTypestringObligatoire. Au choix: image/jpeg, image/png, image/webp.
tasks[].proofs[].bytesintegerObligatoire.
tasks[].proofs[].latnumber | nullObligatoire.
tasks[].proofs[].lngnumber | nullObligatoire.
tasks[].proofs[].bystringObligatoire. Le nom du livreur.
tasks[].proofs[].createdAtstring (date-time)Obligatoire.
tasks[].endNotestringSeulement dans GET /tasks/{id} : ce que le livreur a écrit en terminant.
tasks[].recipientEmailstring
tasks[].proofRequiredstring[]Celles de la livraison, sinon celles de vos réglages.
tasks[].proofRequiredOverridestring[] | null
tasks[].packageSizestring | nullAu choix: small, medium, large, null.
tasks[].itemDescriptionstring
tasks[].referencestring
tasks[].scheduledAtstring (date-time) | null
tasks[].connectionIdstring | nullLa connexion du livreur N-Ways qui l’a acceptée.
tasks[].acceptedAtstring (date-time) | null
tasks[].startedAtstring (date-time) | null
tasks[].editablestringCe que PATCH /tasks/{id} peut changer maintenant : tout, seulement notes et dueAt (retirée ou commencée), ou rien (terminée). Au choix: all, limited, none.
tasks[].editedAtstring (date-time) | nullLa dernière modification.
tasks[].editedFieldsstring[]Ce que la dernière modification a changé.
tasks[].pinDeliveryPinDeliveryComment le code PIN de livraison parvient au client, quand la livraison en demande un et que les codes partent sur WhatsApp. Jamais le code lui-même.
tasks[].pinDelivery.channelstringObligatoire. Au choix: whatsapp, email, none.
tasks[].pinDelivery.statestringObligatoire. Au choix: sending, sent, delivered, read, failed.
tasks[].pinDelivery.whatsappErrorCodeinteger | nullObligatoire. L’échec de WhatsApp (131026 : pas sur WhatsApp), gardé après l’envoi du code par e-mail.
tasks[].pinDelivery.needsEmailbooleanObligatoire. Le client n’a pas reçu le code : envoyez-le avec POST /tasks/{id}/pin-email.
tasks[].pinDelivery.updatedAtstring (date-time)Obligatoire.
nextPageTokenstring
200 OK
{
  "tasks": [
    {
      "id": "string",
      "ref": "string",
      "status": "created",
      "vehicleId": "string",
      "pickup": {
        "lat": 0,
        "lng": 0,
        "name": "string",
        "address": "string"
      },
      "dropoff": {
        "lat": 0,
        "lng": 0,
        "name": "string",
        "address": "string"
      },
      "recipientName": "string",
      "recipientPhone": "string",
      "notes": "string",
      "lang": "en",
      "arrivingS": 0,
      "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"
      },
      "dueAt": "2026-10-15T09:00:00+01:00",
      "late": true,
      "trackingUrl": "string",
      "trackingExpiresAt": "2026-10-15T09:00:00+01:00",
      "failureReason": "string",
      "createdAt": "2026-10-15T09:00:00+01:00",
      "assignedAt": "2026-10-15T09:00:00+01:00",
      "pickedUpAt": "2026-10-15T09:00:00+01:00",
      "arrivingAt": "2026-10-15T09:00:00+01:00",
      "endedAt": "2026-10-15T09:00:00+01:00",
      "area": {
        "type": "circle",
        "lat": 6.48,
        "lng": 3.43,
        "radiusM": 2500
      },
      "proofs": [
        {
          "id": "string",
          "kind": "photo",
          "contentType": "image/jpeg",
          "bytes": 0,
          "lat": 0,
          "lng": 0,
          "by": "string",
          "createdAt": "2026-10-15T09:00:00+01:00"
        }
      ],
      "endNote": "string",
      "recipientEmail": "string",
      "proofRequired": [
        "photo"
      ],
      "proofRequiredOverride": [
        "string"
      ],
      "packageSize": "small",
      "itemDescription": "string",
      "reference": "string",
      "scheduledAt": "2026-10-15T09:00:00+01:00",
      "connectionId": "string",
      "acceptedAt": "2026-10-15T09:00:00+01:00",
      "startedAt": "2026-10-15T09:00:00+01:00",
      "editable": "all",
      "editedAt": "2026-10-15T09:00:00+01:00",
      "editedFields": [
        "string"
      ],
      "pinDelivery": {
        "channel": "whatsapp",
        "state": "sending",
        "whatsappErrorCode": 0,
        "needsEmail": true,
        "updatedAt": "2026-10-15T09:00:00+01:00"
      }
    }
  ],
  "nextPageToken": "string"
}

Erreurs

  • default Erreur

Créer une livraison

POST https://nways.ng/maps/v1/fleet/tasks

Une tâche a un point d’enlèvement facultatif et un point de livraison. Donnez vehicleId pour l’assigner tout de suite. La réponse contient le trackingUrl du destinataire (valable 72 heures, ou jusqu’à une heure après la fin de la tâche). Événements : task.created (et task.assigned).

Corps de la requête

ChampTypeDescription
idstringVotre identifiant ; N-Ways en crée un (job_…) si vous n’en donnez pas.
pickupStop
pickup.latnumberObligatoire.
pickup.lngnumberObligatoire.
pickup.namestring120 caractères au plus.
pickup.addressstring300 caractères au plus.
pickupPlaceIdstringUn de vos lieux de retrait comme retrait (son nom, son adresse et sa position sont recopiés), au lieu de pickup.
dropoffStopObligatoire.
dropoff.latnumberObligatoire.
dropoff.lngnumberObligatoire.
dropoff.namestring120 caractères au plus.
dropoff.addressstring300 caractères au plus.
recipientNamestringPour vos propres dossiers ; jamais affiché sur la page de suivi. 100 caractères au plus.
recipientPhonestringPour que le livreur puisse appeler le client depuis N-Ways Business ; jamais montré sur la page de suivi. 32 caractères au plus.
notesstring500 caractères au plus.
langstringLa langue de la page de suivi. Au choix: en, fr, pt. Par défaut: en.
arrivingSintegerNombre de secondes avant l’arrivée à partir duquel la tâche passe à arriving. Par défaut: 180. ≥ 30, ≤ 1800.
vehicleIdstring
dueAtstring (date-time)L’échéance : après (ou attendue après), la tâche est late.
areaAreaUn cercle (lat, lng, radiusM 50–100000) ou un polygone (coordinates : 3 à 500 points [lng, lat]).
area.typestringObligatoire. Au choix: circle, polygon.
area.latnumber
area.lngnumber
area.radiusMnumber≥ 50, ≤ 100000.
area.coordinatesnumber[][]
recipientEmailstring (email)N-Ways envoie au client ses nouvelles par e-mail (en route, bientôt là, livrée) avec le lien de suivi.
proofRequiredstring[]Ce que le livreur doit fournir pour livrer ; laissez vide pour le proofRequired de vos réglages.
packageSizestringAu choix: small, medium, large.
itemDescriptionstring200 caractères au plus.
referencestringVotre propre référence (un numéro de facture ou de commande). 64 caractères au plus.
scheduledAtstring (date-time)Un retrait plus tard (jusqu’à 60 jours) : le livreur reçoit un rappel avant.
cURL
curl -X POST "https://nways.ng/maps/v1/fleet/tasks" \
  -H "X-NWays-Api-Key: VOTRE_CLE_API" \
  -H "Content-Type: application/json" \
  -d '{"id":"order-88412","pickup":{"lat":6.5095,"lng":3.3711,"name":"Mama Put","Yaba":null,"address":"12 Herbert Macaulay Way"},"dropoff":{"lat":6.4969,"lng":3.3539,"name":"Home","address":"4 Adeniran Ogunsanya St"},"lang":"en","vehicleId":"bike-17"}'
JavaScript
const res = await fetch('https://nways.ng/maps/v1/fleet/tasks', {
  method: 'POST',
  headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY, 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "id": "order-88412",
    "pickup": {
      "lat": 6.5095,
      "lng": 3.3711,
      "name": "Mama Put",
      "Yaba": null,
      "address": "12 Herbert Macaulay Way"
    },
    "dropoff": {
      "lat": 6.4969,
      "lng": 3.3539,
      "name": "Home",
      "address": "4 Adeniran Ogunsanya St"
    },
    "lang": "en",
    "vehicleId": "bike-17"
  }),
})
const data = await res.json()
Python
import os
import requests

res = requests.post(
    "https://nways.ng/maps/v1/fleet/tasks",
    headers={"X-NWays-Api-Key": os.environ["NWAYS_API_KEY"]},
    json={"id": "order-88412", "pickup": {"lat": 6.5095, "lng": 3.3711, "name": "Mama Put", "Yaba": None, "address": "12 Herbert Macaulay Way"}, "dropoff": {"lat": 6.4969, "lng": 3.3539, "name": "Home", "address": "4 Adeniran Ogunsanya St"}, "lang": "en", "vehicleId": "bike-17"},
    timeout=10,
)
data = res.json()

Réponse

Créé

ChampTypeDescription
idstringObligatoire.
refstringObligatoire. Le numéro court de la livraison dans le projet, donné par N-Ways (« 1042 », affiché #1042) : pour les personnes, dans les alertes et les listes.
statusstringObligatoire. Au choix: created, assigned, picked_up, arriving, completed, failed, cancelled.
vehicleIdstring | nullObligatoire.
pickupStop | nullObligatoire.
dropoffStopObligatoire.
dropoff.latnumberObligatoire.
dropoff.lngnumberObligatoire.
dropoff.namestring120 caractères au plus.
dropoff.addressstring300 caractères au plus.
recipientNamestringObligatoire.
recipientPhonestring
notesstringObligatoire.
langstringObligatoire. Au choix: en, fr, pt.
arrivingSintegerObligatoire.
etaETA | nullObligatoire. Null tant qu’aucune position fraîche n’est arrivée, et une fois la tâche terminée.
dueAtstring (date-time) | nullObligatoire.
latebooleanObligatoire. Ouverte et après dueAt, ou attendue après.
trackingUrlstring (uri) | nullObligatoire. Null une fois expiré.
trackingExpiresAtstring (date-time) | nullObligatoire.
failureReasonstring
createdAtstring (date-time)Obligatoire.
assignedAtstring (date-time) | nullObligatoire.
pickedUpAtstring (date-time) | nullObligatoire.
arrivingAtstring (date-time) | nullObligatoire.
endedAtstring (date-time) | nullObligatoire.
areaArea | nullLa zone propre à la livraison : en sortir lève asset.geofence_exit.
proofsProof[]Seulement dans GET /tasks/{id} : les photos et signatures du livreur (N-Ways Business).
proofs[].idstringObligatoire.
proofs[].kindstringObligatoire. Au choix: photo, signature.
proofs[].contentTypestringObligatoire. Au choix: image/jpeg, image/png, image/webp.
proofs[].bytesintegerObligatoire.
proofs[].latnumber | nullObligatoire.
proofs[].lngnumber | nullObligatoire.
proofs[].bystringObligatoire. Le nom du livreur.
proofs[].createdAtstring (date-time)Obligatoire.
endNotestringSeulement dans GET /tasks/{id} : ce que le livreur a écrit en terminant.
recipientEmailstring
proofRequiredstring[]Celles de la livraison, sinon celles de vos réglages.
proofRequiredOverridestring[] | null
packageSizestring | nullAu choix: small, medium, large, null.
itemDescriptionstring
referencestring
scheduledAtstring (date-time) | null
connectionIdstring | nullLa connexion du livreur N-Ways qui l’a acceptée.
acceptedAtstring (date-time) | null
startedAtstring (date-time) | null
editablestringCe que PATCH /tasks/{id} peut changer maintenant : tout, seulement notes et dueAt (retirée ou commencée), ou rien (terminée). Au choix: all, limited, none.
editedAtstring (date-time) | nullLa dernière modification.
editedFieldsstring[]Ce que la dernière modification a changé.
pinDeliveryPinDeliveryComment le code PIN de livraison parvient au client, quand la livraison en demande un et que les codes partent sur WhatsApp. Jamais le code lui-même.
pinDelivery.channelstringObligatoire. Au choix: whatsapp, email, none.
pinDelivery.statestringObligatoire. Au choix: sending, sent, delivered, read, failed.
pinDelivery.whatsappErrorCodeinteger | nullObligatoire. L’échec de WhatsApp (131026 : pas sur WhatsApp), gardé après l’envoi du code par e-mail.
pinDelivery.needsEmailbooleanObligatoire. Le client n’a pas reçu le code : envoyez-le avec POST /tasks/{id}/pin-email.
pinDelivery.updatedAtstring (date-time)Obligatoire.
201 OK
{
  "id": "string",
  "ref": "string",
  "status": "created",
  "vehicleId": "string",
  "pickup": {
    "lat": 0,
    "lng": 0,
    "name": "string",
    "address": "string"
  },
  "dropoff": {
    "lat": 0,
    "lng": 0,
    "name": "string",
    "address": "string"
  },
  "recipientName": "string",
  "recipientPhone": "string",
  "notes": "string",
  "lang": "en",
  "arrivingS": 0,
  "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"
  },
  "dueAt": "2026-10-15T09:00:00+01:00",
  "late": true,
  "trackingUrl": "string",
  "trackingExpiresAt": "2026-10-15T09:00:00+01:00",
  "failureReason": "string",
  "createdAt": "2026-10-15T09:00:00+01:00",
  "assignedAt": "2026-10-15T09:00:00+01:00",
  "pickedUpAt": "2026-10-15T09:00:00+01:00",
  "arrivingAt": "2026-10-15T09:00:00+01:00",
  "endedAt": "2026-10-15T09:00:00+01:00",
  "area": {
    "type": "circle",
    "lat": 6.48,
    "lng": 3.43,
    "radiusM": 2500
  },
  "proofs": [
    {
      "id": "string",
      "kind": "photo",
      "contentType": "image/jpeg",
      "bytes": 0,
      "lat": 0,
      "lng": 0,
      "by": "string",
      "createdAt": "2026-10-15T09:00:00+01:00"
    }
  ],
  "endNote": "string",
  "recipientEmail": "string",
  "proofRequired": [
    "photo"
  ],
  "proofRequiredOverride": [
    "string"
  ],
  "packageSize": "small",
  "itemDescription": "string",
  "reference": "string",
  "scheduledAt": "2026-10-15T09:00:00+01:00",
  "connectionId": "string",
  "acceptedAt": "2026-10-15T09:00:00+01:00",
  "startedAt": "2026-10-15T09:00:00+01:00",
  "editable": "all",
  "editedAt": "2026-10-15T09:00:00+01:00",
  "editedFields": [
    "string"
  ],
  "pinDelivery": {
    "channel": "whatsapp",
    "state": "sending",
    "whatsappErrorCode": 0,
    "needsEmail": true,
    "updatedAt": "2026-10-15T09:00:00+01:00"
  }
}

Erreurs

  • 403 DELIVERIES_OFF (N-Ways a coupé les nouvelles livraisons de votre organisation) ou ORGANISATION_SUSPENDED ; le message dit pourquoi.
  • default Erreur

Obtenir une tâche avec son heure d’arrivée estimée en direct

GET https://nways.ng/maps/v1/fleet/tasks/{id}

Paramètres

NomOùTypeDescription
idcheminstringObligatoire.
cURL
curl "https://nways.ng/maps/v1/fleet/tasks/string" \
  -H "X-NWays-Api-Key: VOTRE_CLE_API"
JavaScript
const res = await fetch('https://nways.ng/maps/v1/fleet/tasks/string', {
  headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY },
})
const data = await res.json()
Python
import os
import requests

res = requests.get(
    "https://nways.ng/maps/v1/fleet/tasks/string",
    headers={"X-NWays-Api-Key": os.environ["NWAYS_API_KEY"]},
    timeout=10,
)
data = res.json()

Réponse

Tâche

ChampTypeDescription
idstringObligatoire.
refstringObligatoire. Le numéro court de la livraison dans le projet, donné par N-Ways (« 1042 », affiché #1042) : pour les personnes, dans les alertes et les listes.
statusstringObligatoire. Au choix: created, assigned, picked_up, arriving, completed, failed, cancelled.
vehicleIdstring | nullObligatoire.
pickupStop | nullObligatoire.
dropoffStopObligatoire.
dropoff.latnumberObligatoire.
dropoff.lngnumberObligatoire.
dropoff.namestring120 caractères au plus.
dropoff.addressstring300 caractères au plus.
recipientNamestringObligatoire.
recipientPhonestring
notesstringObligatoire.
langstringObligatoire. Au choix: en, fr, pt.
arrivingSintegerObligatoire.
etaETA | nullObligatoire. Null tant qu’aucune position fraîche n’est arrivée, et une fois la tâche terminée.
dueAtstring (date-time) | nullObligatoire.
latebooleanObligatoire. Ouverte et après dueAt, ou attendue après.
trackingUrlstring (uri) | nullObligatoire. Null une fois expiré.
trackingExpiresAtstring (date-time) | nullObligatoire.
failureReasonstring
createdAtstring (date-time)Obligatoire.
assignedAtstring (date-time) | nullObligatoire.
pickedUpAtstring (date-time) | nullObligatoire.
arrivingAtstring (date-time) | nullObligatoire.
endedAtstring (date-time) | nullObligatoire.
areaArea | nullLa zone propre à la livraison : en sortir lève asset.geofence_exit.
proofsProof[]Seulement dans GET /tasks/{id} : les photos et signatures du livreur (N-Ways Business).
proofs[].idstringObligatoire.
proofs[].kindstringObligatoire. Au choix: photo, signature.
proofs[].contentTypestringObligatoire. Au choix: image/jpeg, image/png, image/webp.
proofs[].bytesintegerObligatoire.
proofs[].latnumber | nullObligatoire.
proofs[].lngnumber | nullObligatoire.
proofs[].bystringObligatoire. Le nom du livreur.
proofs[].createdAtstring (date-time)Obligatoire.
endNotestringSeulement dans GET /tasks/{id} : ce que le livreur a écrit en terminant.
recipientEmailstring
proofRequiredstring[]Celles de la livraison, sinon celles de vos réglages.
proofRequiredOverridestring[] | null
packageSizestring | nullAu choix: small, medium, large, null.
itemDescriptionstring
referencestring
scheduledAtstring (date-time) | null
connectionIdstring | nullLa connexion du livreur N-Ways qui l’a acceptée.
acceptedAtstring (date-time) | null
startedAtstring (date-time) | null
editablestringCe que PATCH /tasks/{id} peut changer maintenant : tout, seulement notes et dueAt (retirée ou commencée), ou rien (terminée). Au choix: all, limited, none.
editedAtstring (date-time) | nullLa dernière modification.
editedFieldsstring[]Ce que la dernière modification a changé.
pinDeliveryPinDeliveryComment le code PIN de livraison parvient au client, quand la livraison en demande un et que les codes partent sur WhatsApp. Jamais le code lui-même.
pinDelivery.channelstringObligatoire. Au choix: whatsapp, email, none.
pinDelivery.statestringObligatoire. Au choix: sending, sent, delivered, read, failed.
pinDelivery.whatsappErrorCodeinteger | nullObligatoire. L’échec de WhatsApp (131026 : pas sur WhatsApp), gardé après l’envoi du code par e-mail.
pinDelivery.needsEmailbooleanObligatoire. Le client n’a pas reçu le code : envoyez-le avec POST /tasks/{id}/pin-email.
pinDelivery.updatedAtstring (date-time)Obligatoire.
200 OK
{
  "id": "string",
  "ref": "string",
  "status": "created",
  "vehicleId": "string",
  "pickup": {
    "lat": 0,
    "lng": 0,
    "name": "string",
    "address": "string"
  },
  "dropoff": {
    "lat": 0,
    "lng": 0,
    "name": "string",
    "address": "string"
  },
  "recipientName": "string",
  "recipientPhone": "string",
  "notes": "string",
  "lang": "en",
  "arrivingS": 0,
  "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"
  },
  "dueAt": "2026-10-15T09:00:00+01:00",
  "late": true,
  "trackingUrl": "string",
  "trackingExpiresAt": "2026-10-15T09:00:00+01:00",
  "failureReason": "string",
  "createdAt": "2026-10-15T09:00:00+01:00",
  "assignedAt": "2026-10-15T09:00:00+01:00",
  "pickedUpAt": "2026-10-15T09:00:00+01:00",
  "arrivingAt": "2026-10-15T09:00:00+01:00",
  "endedAt": "2026-10-15T09:00:00+01:00",
  "area": {
    "type": "circle",
    "lat": 6.48,
    "lng": 3.43,
    "radiusM": 2500
  },
  "proofs": [
    {
      "id": "string",
      "kind": "photo",
      "contentType": "image/jpeg",
      "bytes": 0,
      "lat": 0,
      "lng": 0,
      "by": "string",
      "createdAt": "2026-10-15T09:00:00+01:00"
    }
  ],
  "endNote": "string",
  "recipientEmail": "string",
  "proofRequired": [
    "photo"
  ],
  "proofRequiredOverride": [
    "string"
  ],
  "packageSize": "small",
  "itemDescription": "string",
  "reference": "string",
  "scheduledAt": "2026-10-15T09:00:00+01:00",
  "connectionId": "string",
  "acceptedAt": "2026-10-15T09:00:00+01:00",
  "startedAt": "2026-10-15T09:00:00+01:00",
  "editable": "all",
  "editedAt": "2026-10-15T09:00:00+01:00",
  "editedFields": [
    "string"
  ],
  "pinDelivery": {
    "channel": "whatsapp",
    "state": "sending",
    "whatsappErrorCode": 0,
    "needsEmail": true,
    "updatedAt": "2026-10-15T09:00:00+01:00"
  }
}

Erreurs

  • default Erreur

Modifier une livraison

PATCH https://nways.ng/maps/v1/fleet/tasks/{id}

Change n’importe lequel des champs ci-dessous, vérifiés comme à la création d’une tâche ; omettez ce qui ne change pas, envoyez null pour vider un champ facultatif. Renvoie la tâche, avec les champs modifiés dans editedFields et l’en-tête X-NWays-Changed (rien de changé : aucun événement).

Quand. Tout peut changer jusqu’au retrait (editable: all) : la tâche est created, ou assigned sans pickedUpAt (et, pour un livreur N-Ways, avant qu’il la commence : sa demande peut être en attente ou acceptée). Ensuite, seulement notes et dueAt jusqu’à la fin (editable: limited) ; les autres champs répondent 409 TASK_UNDER_WAY, une tâche terminée 409 TASK_ENDED. Le véhicule change avec POST /tasks/{id}/assign ou /dispatch, jamais ici.

Ensuite. L’heure d’arrivée est recalculée et le lien de suivi reste le même. Événement task.updated (data.task, data.changed). Une demande encore en attente d’un livreur N-Ways reste la même demande avec les nouveaux détails (et au moins une minute pour répondre) ; le livreur est prévenu si le retrait, la livraison ou les heures ont changé. Un livreur qui l’a acceptée (N-Ways ou N-Ways Business) apprend ce qui a changé. Un client à qui N-Ways a déjà écrit reçoit un e-mail « modifiée » si le lieu de livraison ou une heure a changé, au plus un toutes les 10 minutes.

Paramètres

NomOùTypeDescription
idcheminstringObligatoire.

Corps de la requête

ChampTypeDescription
pickupStop | nullnull le retire (pas pour une livraison envoyée à un livreur N-Ways).
pickupPlaceIdstringUn de vos lieux de retrait comme nouveau retrait, au lieu de pickup.
dropoffStop
dropoff.latnumberObligatoire.
dropoff.lngnumberObligatoire.
dropoff.namestring120 caractères au plus.
dropoff.addressstring300 caractères au plus.
recipientNamestring100 caractères au plus.
recipientPhonestring32 caractères au plus.
recipientEmailstringUne adresse e-mail, ou "" pour aucune.
notesstring500 caractères au plus.
itemDescriptionstring200 caractères au plus.
packageSizestring | nullAu choix: small, medium, large, null.
referencestring64 caractères au plus.
dueAtstring (date-time) | null
scheduledAtstring (date-time) | nullDe maintenant à 60 jours.
proofRequiredstring[] | nullnull : le proofRequired de vos réglages.
areaArea | null
langstringAu choix: en, fr, pt.
arrivingSinteger≥ 30, ≤ 1800.
cURL
curl -X PATCH "https://nways.ng/maps/v1/fleet/tasks/string" \
  -H "X-NWays-Api-Key: VOTRE_CLE_API" \
  -H "Content-Type: application/json" \
  -d '{"dropoff":{"lat":6.4549,"lng":3.4246,"name":"Office","address":"2 Kingsway Rd","Ikoyi":null},"dueAt":"2026-10-17T15:00:00Z","notes":"Call on arrival"}'
JavaScript
const res = await fetch('https://nways.ng/maps/v1/fleet/tasks/string', {
  method: 'PATCH',
  headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY, 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "dropoff": {
      "lat": 6.4549,
      "lng": 3.4246,
      "name": "Office",
      "address": "2 Kingsway Rd",
      "Ikoyi": null
    },
    "dueAt": "2026-10-17T15:00:00Z",
    "notes": "Call on arrival"
  }),
})
const data = await res.json()
Python
import os
import requests

res = requests.patch(
    "https://nways.ng/maps/v1/fleet/tasks/string",
    headers={"X-NWays-Api-Key": os.environ["NWAYS_API_KEY"]},
    json={"dropoff": {"lat": 6.4549, "lng": 3.4246, "name": "Office", "address": "2 Kingsway Rd", "Ikoyi": None}, "dueAt": "2026-10-17T15:00:00Z", "notes": "Call on arrival"},
    timeout=10,
)
data = res.json()

Réponse

La tâche telle qu’elle est maintenant

ChampTypeDescription
idstringObligatoire.
refstringObligatoire. Le numéro court de la livraison dans le projet, donné par N-Ways (« 1042 », affiché #1042) : pour les personnes, dans les alertes et les listes.
statusstringObligatoire. Au choix: created, assigned, picked_up, arriving, completed, failed, cancelled.
vehicleIdstring | nullObligatoire.
pickupStop | nullObligatoire.
dropoffStopObligatoire.
dropoff.latnumberObligatoire.
dropoff.lngnumberObligatoire.
dropoff.namestring120 caractères au plus.
dropoff.addressstring300 caractères au plus.
recipientNamestringObligatoire.
recipientPhonestring
notesstringObligatoire.
langstringObligatoire. Au choix: en, fr, pt.
arrivingSintegerObligatoire.
etaETA | nullObligatoire. Null tant qu’aucune position fraîche n’est arrivée, et une fois la tâche terminée.
dueAtstring (date-time) | nullObligatoire.
latebooleanObligatoire. Ouverte et après dueAt, ou attendue après.
trackingUrlstring (uri) | nullObligatoire. Null une fois expiré.
trackingExpiresAtstring (date-time) | nullObligatoire.
failureReasonstring
createdAtstring (date-time)Obligatoire.
assignedAtstring (date-time) | nullObligatoire.
pickedUpAtstring (date-time) | nullObligatoire.
arrivingAtstring (date-time) | nullObligatoire.
endedAtstring (date-time) | nullObligatoire.
areaArea | nullLa zone propre à la livraison : en sortir lève asset.geofence_exit.
proofsProof[]Seulement dans GET /tasks/{id} : les photos et signatures du livreur (N-Ways Business).
proofs[].idstringObligatoire.
proofs[].kindstringObligatoire. Au choix: photo, signature.
proofs[].contentTypestringObligatoire. Au choix: image/jpeg, image/png, image/webp.
proofs[].bytesintegerObligatoire.
proofs[].latnumber | nullObligatoire.
proofs[].lngnumber | nullObligatoire.
proofs[].bystringObligatoire. Le nom du livreur.
proofs[].createdAtstring (date-time)Obligatoire.
endNotestringSeulement dans GET /tasks/{id} : ce que le livreur a écrit en terminant.
recipientEmailstring
proofRequiredstring[]Celles de la livraison, sinon celles de vos réglages.
proofRequiredOverridestring[] | null
packageSizestring | nullAu choix: small, medium, large, null.
itemDescriptionstring
referencestring
scheduledAtstring (date-time) | null
connectionIdstring | nullLa connexion du livreur N-Ways qui l’a acceptée.
acceptedAtstring (date-time) | null
startedAtstring (date-time) | null
editablestringCe que PATCH /tasks/{id} peut changer maintenant : tout, seulement notes et dueAt (retirée ou commencée), ou rien (terminée). Au choix: all, limited, none.
editedAtstring (date-time) | nullLa dernière modification.
editedFieldsstring[]Ce que la dernière modification a changé.
pinDeliveryPinDeliveryComment le code PIN de livraison parvient au client, quand la livraison en demande un et que les codes partent sur WhatsApp. Jamais le code lui-même.
pinDelivery.channelstringObligatoire. Au choix: whatsapp, email, none.
pinDelivery.statestringObligatoire. Au choix: sending, sent, delivered, read, failed.
pinDelivery.whatsappErrorCodeinteger | nullObligatoire. L’échec de WhatsApp (131026 : pas sur WhatsApp), gardé après l’envoi du code par e-mail.
pinDelivery.needsEmailbooleanObligatoire. Le client n’a pas reçu le code : envoyez-le avec POST /tasks/{id}/pin-email.
pinDelivery.updatedAtstring (date-time)Obligatoire.
200 OK
{
  "id": "string",
  "ref": "string",
  "status": "created",
  "vehicleId": "string",
  "pickup": {
    "lat": 0,
    "lng": 0,
    "name": "string",
    "address": "string"
  },
  "dropoff": {
    "lat": 0,
    "lng": 0,
    "name": "string",
    "address": "string"
  },
  "recipientName": "string",
  "recipientPhone": "string",
  "notes": "string",
  "lang": "en",
  "arrivingS": 0,
  "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"
  },
  "dueAt": "2026-10-15T09:00:00+01:00",
  "late": true,
  "trackingUrl": "string",
  "trackingExpiresAt": "2026-10-15T09:00:00+01:00",
  "failureReason": "string",
  "createdAt": "2026-10-15T09:00:00+01:00",
  "assignedAt": "2026-10-15T09:00:00+01:00",
  "pickedUpAt": "2026-10-15T09:00:00+01:00",
  "arrivingAt": "2026-10-15T09:00:00+01:00",
  "endedAt": "2026-10-15T09:00:00+01:00",
  "area": {
    "type": "circle",
    "lat": 6.48,
    "lng": 3.43,
    "radiusM": 2500
  },
  "proofs": [
    {
      "id": "string",
      "kind": "photo",
      "contentType": "image/jpeg",
      "bytes": 0,
      "lat": 0,
      "lng": 0,
      "by": "string",
      "createdAt": "2026-10-15T09:00:00+01:00"
    }
  ],
  "endNote": "string",
  "recipientEmail": "string",
  "proofRequired": [
    "photo"
  ],
  "proofRequiredOverride": [
    "string"
  ],
  "packageSize": "small",
  "itemDescription": "string",
  "reference": "string",
  "scheduledAt": "2026-10-15T09:00:00+01:00",
  "connectionId": "string",
  "acceptedAt": "2026-10-15T09:00:00+01:00",
  "startedAt": "2026-10-15T09:00:00+01:00",
  "editable": "all",
  "editedAt": "2026-10-15T09:00:00+01:00",
  "editedFields": [
    "string"
  ],
  "pinDelivery": {
    "channel": "whatsapp",
    "state": "sending",
    "whatsappErrorCode": 0,
    "needsEmail": true,
    "updatedAt": "2026-10-15T09:00:00+01:00"
  }
}

Erreurs

  • 409 TASK_UNDER_WAY (seuls notes et dueAt peuvent encore changer) ou TASK_ENDED.
  • default Erreur

Assigner (ou réassigner) un véhicule — created|assigned → assigned ; événement task.assigned

POST https://nways.ng/maps/v1/fleet/tasks/{id}/assign

Paramètres

NomOùTypeDescription
idcheminstringObligatoire.

Corps de la requête

ChampTypeDescription
vehicleIdstringObligatoire.
cURL
curl -X POST "https://nways.ng/maps/v1/fleet/tasks/string/assign" \
  -H "X-NWays-Api-Key: VOTRE_CLE_API" \
  -H "Content-Type: application/json" \
  -d '{"vehicleId":"string"}'
JavaScript
const res = await fetch('https://nways.ng/maps/v1/fleet/tasks/string/assign', {
  method: 'POST',
  headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY, 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "vehicleId": "string"
  }),
})
const data = await res.json()
Python
import os
import requests

res = requests.post(
    "https://nways.ng/maps/v1/fleet/tasks/string/assign",
    headers={"X-NWays-Api-Key": os.environ["NWAYS_API_KEY"]},
    json={"vehicleId": "string"},
    timeout=10,
)
data = res.json()

Réponse

Tâche

ChampTypeDescription
idstringObligatoire.
refstringObligatoire. Le numéro court de la livraison dans le projet, donné par N-Ways (« 1042 », affiché #1042) : pour les personnes, dans les alertes et les listes.
statusstringObligatoire. Au choix: created, assigned, picked_up, arriving, completed, failed, cancelled.
vehicleIdstring | nullObligatoire.
pickupStop | nullObligatoire.
dropoffStopObligatoire.
dropoff.latnumberObligatoire.
dropoff.lngnumberObligatoire.
dropoff.namestring120 caractères au plus.
dropoff.addressstring300 caractères au plus.
recipientNamestringObligatoire.
recipientPhonestring
notesstringObligatoire.
langstringObligatoire. Au choix: en, fr, pt.
arrivingSintegerObligatoire.
etaETA | nullObligatoire. Null tant qu’aucune position fraîche n’est arrivée, et une fois la tâche terminée.
dueAtstring (date-time) | nullObligatoire.
latebooleanObligatoire. Ouverte et après dueAt, ou attendue après.
trackingUrlstring (uri) | nullObligatoire. Null une fois expiré.
trackingExpiresAtstring (date-time) | nullObligatoire.
failureReasonstring
createdAtstring (date-time)Obligatoire.
assignedAtstring (date-time) | nullObligatoire.
pickedUpAtstring (date-time) | nullObligatoire.
arrivingAtstring (date-time) | nullObligatoire.
endedAtstring (date-time) | nullObligatoire.
areaArea | nullLa zone propre à la livraison : en sortir lève asset.geofence_exit.
proofsProof[]Seulement dans GET /tasks/{id} : les photos et signatures du livreur (N-Ways Business).
proofs[].idstringObligatoire.
proofs[].kindstringObligatoire. Au choix: photo, signature.
proofs[].contentTypestringObligatoire. Au choix: image/jpeg, image/png, image/webp.
proofs[].bytesintegerObligatoire.
proofs[].latnumber | nullObligatoire.
proofs[].lngnumber | nullObligatoire.
proofs[].bystringObligatoire. Le nom du livreur.
proofs[].createdAtstring (date-time)Obligatoire.
endNotestringSeulement dans GET /tasks/{id} : ce que le livreur a écrit en terminant.
recipientEmailstring
proofRequiredstring[]Celles de la livraison, sinon celles de vos réglages.
proofRequiredOverridestring[] | null
packageSizestring | nullAu choix: small, medium, large, null.
itemDescriptionstring
referencestring
scheduledAtstring (date-time) | null
connectionIdstring | nullLa connexion du livreur N-Ways qui l’a acceptée.
acceptedAtstring (date-time) | null
startedAtstring (date-time) | null
editablestringCe que PATCH /tasks/{id} peut changer maintenant : tout, seulement notes et dueAt (retirée ou commencée), ou rien (terminée). Au choix: all, limited, none.
editedAtstring (date-time) | nullLa dernière modification.
editedFieldsstring[]Ce que la dernière modification a changé.
pinDeliveryPinDeliveryComment le code PIN de livraison parvient au client, quand la livraison en demande un et que les codes partent sur WhatsApp. Jamais le code lui-même.
pinDelivery.channelstringObligatoire. Au choix: whatsapp, email, none.
pinDelivery.statestringObligatoire. Au choix: sending, sent, delivered, read, failed.
pinDelivery.whatsappErrorCodeinteger | nullObligatoire. L’échec de WhatsApp (131026 : pas sur WhatsApp), gardé après l’envoi du code par e-mail.
pinDelivery.needsEmailbooleanObligatoire. Le client n’a pas reçu le code : envoyez-le avec POST /tasks/{id}/pin-email.
pinDelivery.updatedAtstring (date-time)Obligatoire.
200 OK
{
  "id": "string",
  "ref": "string",
  "status": "created",
  "vehicleId": "string",
  "pickup": {
    "lat": 0,
    "lng": 0,
    "name": "string",
    "address": "string"
  },
  "dropoff": {
    "lat": 0,
    "lng": 0,
    "name": "string",
    "address": "string"
  },
  "recipientName": "string",
  "recipientPhone": "string",
  "notes": "string",
  "lang": "en",
  "arrivingS": 0,
  "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"
  },
  "dueAt": "2026-10-15T09:00:00+01:00",
  "late": true,
  "trackingUrl": "string",
  "trackingExpiresAt": "2026-10-15T09:00:00+01:00",
  "failureReason": "string",
  "createdAt": "2026-10-15T09:00:00+01:00",
  "assignedAt": "2026-10-15T09:00:00+01:00",
  "pickedUpAt": "2026-10-15T09:00:00+01:00",
  "arrivingAt": "2026-10-15T09:00:00+01:00",
  "endedAt": "2026-10-15T09:00:00+01:00",
  "area": {
    "type": "circle",
    "lat": 6.48,
    "lng": 3.43,
    "radiusM": 2500
  },
  "proofs": [
    {
      "id": "string",
      "kind": "photo",
      "contentType": "image/jpeg",
      "bytes": 0,
      "lat": 0,
      "lng": 0,
      "by": "string",
      "createdAt": "2026-10-15T09:00:00+01:00"
    }
  ],
  "endNote": "string",
  "recipientEmail": "string",
  "proofRequired": [
    "photo"
  ],
  "proofRequiredOverride": [
    "string"
  ],
  "packageSize": "small",
  "itemDescription": "string",
  "reference": "string",
  "scheduledAt": "2026-10-15T09:00:00+01:00",
  "connectionId": "string",
  "acceptedAt": "2026-10-15T09:00:00+01:00",
  "startedAt": "2026-10-15T09:00:00+01:00",
  "editable": "all",
  "editedAt": "2026-10-15T09:00:00+01:00",
  "editedFields": [
    "string"
  ],
  "pinDelivery": {
    "channel": "whatsapp",
    "state": "sending",
    "whatsappErrorCode": 0,
    "needsEmail": true,
    "updatedAt": "2026-10-15T09:00:00+01:00"
  }
}

Erreurs

  • default Erreur

Marquer comme enlevé — assigned → picked_up

POST https://nways.ng/maps/v1/fleet/tasks/{id}/pickup

Paramètres

NomOùTypeDescription
idcheminstringObligatoire.
cURL
curl -X POST "https://nways.ng/maps/v1/fleet/tasks/string/pickup" \
  -H "X-NWays-Api-Key: VOTRE_CLE_API"
JavaScript
const res = await fetch('https://nways.ng/maps/v1/fleet/tasks/string/pickup', {
  method: 'POST',
  headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY },
})
const data = await res.json()
Python
import os
import requests

res = requests.post(
    "https://nways.ng/maps/v1/fleet/tasks/string/pickup",
    headers={"X-NWays-Api-Key": os.environ["NWAYS_API_KEY"]},
    timeout=10,
)
data = res.json()

Réponse

Tâche

ChampTypeDescription
idstringObligatoire.
refstringObligatoire. Le numéro court de la livraison dans le projet, donné par N-Ways (« 1042 », affiché #1042) : pour les personnes, dans les alertes et les listes.
statusstringObligatoire. Au choix: created, assigned, picked_up, arriving, completed, failed, cancelled.
vehicleIdstring | nullObligatoire.
pickupStop | nullObligatoire.
dropoffStopObligatoire.
dropoff.latnumberObligatoire.
dropoff.lngnumberObligatoire.
dropoff.namestring120 caractères au plus.
dropoff.addressstring300 caractères au plus.
recipientNamestringObligatoire.
recipientPhonestring
notesstringObligatoire.
langstringObligatoire. Au choix: en, fr, pt.
arrivingSintegerObligatoire.
etaETA | nullObligatoire. Null tant qu’aucune position fraîche n’est arrivée, et une fois la tâche terminée.
dueAtstring (date-time) | nullObligatoire.
latebooleanObligatoire. Ouverte et après dueAt, ou attendue après.
trackingUrlstring (uri) | nullObligatoire. Null une fois expiré.
trackingExpiresAtstring (date-time) | nullObligatoire.
failureReasonstring
createdAtstring (date-time)Obligatoire.
assignedAtstring (date-time) | nullObligatoire.
pickedUpAtstring (date-time) | nullObligatoire.
arrivingAtstring (date-time) | nullObligatoire.
endedAtstring (date-time) | nullObligatoire.
areaArea | nullLa zone propre à la livraison : en sortir lève asset.geofence_exit.
proofsProof[]Seulement dans GET /tasks/{id} : les photos et signatures du livreur (N-Ways Business).
proofs[].idstringObligatoire.
proofs[].kindstringObligatoire. Au choix: photo, signature.
proofs[].contentTypestringObligatoire. Au choix: image/jpeg, image/png, image/webp.
proofs[].bytesintegerObligatoire.
proofs[].latnumber | nullObligatoire.
proofs[].lngnumber | nullObligatoire.
proofs[].bystringObligatoire. Le nom du livreur.
proofs[].createdAtstring (date-time)Obligatoire.
endNotestringSeulement dans GET /tasks/{id} : ce que le livreur a écrit en terminant.
recipientEmailstring
proofRequiredstring[]Celles de la livraison, sinon celles de vos réglages.
proofRequiredOverridestring[] | null
packageSizestring | nullAu choix: small, medium, large, null.
itemDescriptionstring
referencestring
scheduledAtstring (date-time) | null
connectionIdstring | nullLa connexion du livreur N-Ways qui l’a acceptée.
acceptedAtstring (date-time) | null
startedAtstring (date-time) | null
editablestringCe que PATCH /tasks/{id} peut changer maintenant : tout, seulement notes et dueAt (retirée ou commencée), ou rien (terminée). Au choix: all, limited, none.
editedAtstring (date-time) | nullLa dernière modification.
editedFieldsstring[]Ce que la dernière modification a changé.
pinDeliveryPinDeliveryComment le code PIN de livraison parvient au client, quand la livraison en demande un et que les codes partent sur WhatsApp. Jamais le code lui-même.
pinDelivery.channelstringObligatoire. Au choix: whatsapp, email, none.
pinDelivery.statestringObligatoire. Au choix: sending, sent, delivered, read, failed.
pinDelivery.whatsappErrorCodeinteger | nullObligatoire. L’échec de WhatsApp (131026 : pas sur WhatsApp), gardé après l’envoi du code par e-mail.
pinDelivery.needsEmailbooleanObligatoire. Le client n’a pas reçu le code : envoyez-le avec POST /tasks/{id}/pin-email.
pinDelivery.updatedAtstring (date-time)Obligatoire.
200 OK
{
  "id": "string",
  "ref": "string",
  "status": "created",
  "vehicleId": "string",
  "pickup": {
    "lat": 0,
    "lng": 0,
    "name": "string",
    "address": "string"
  },
  "dropoff": {
    "lat": 0,
    "lng": 0,
    "name": "string",
    "address": "string"
  },
  "recipientName": "string",
  "recipientPhone": "string",
  "notes": "string",
  "lang": "en",
  "arrivingS": 0,
  "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"
  },
  "dueAt": "2026-10-15T09:00:00+01:00",
  "late": true,
  "trackingUrl": "string",
  "trackingExpiresAt": "2026-10-15T09:00:00+01:00",
  "failureReason": "string",
  "createdAt": "2026-10-15T09:00:00+01:00",
  "assignedAt": "2026-10-15T09:00:00+01:00",
  "pickedUpAt": "2026-10-15T09:00:00+01:00",
  "arrivingAt": "2026-10-15T09:00:00+01:00",
  "endedAt": "2026-10-15T09:00:00+01:00",
  "area": {
    "type": "circle",
    "lat": 6.48,
    "lng": 3.43,
    "radiusM": 2500
  },
  "proofs": [
    {
      "id": "string",
      "kind": "photo",
      "contentType": "image/jpeg",
      "bytes": 0,
      "lat": 0,
      "lng": 0,
      "by": "string",
      "createdAt": "2026-10-15T09:00:00+01:00"
    }
  ],
  "endNote": "string",
  "recipientEmail": "string",
  "proofRequired": [
    "photo"
  ],
  "proofRequiredOverride": [
    "string"
  ],
  "packageSize": "small",
  "itemDescription": "string",
  "reference": "string",
  "scheduledAt": "2026-10-15T09:00:00+01:00",
  "connectionId": "string",
  "acceptedAt": "2026-10-15T09:00:00+01:00",
  "startedAt": "2026-10-15T09:00:00+01:00",
  "editable": "all",
  "editedAt": "2026-10-15T09:00:00+01:00",
  "editedFields": [
    "string"
  ],
  "pinDelivery": {
    "channel": "whatsapp",
    "state": "sending",
    "whatsappErrorCode": 0,
    "needsEmail": true,
    "updatedAt": "2026-10-15T09:00:00+01:00"
  }
}

Erreurs

  • default Erreur

Marquer comme livré — assigned|picked_up|arriving → completed ; événement task.completed

POST https://nways.ng/maps/v1/fleet/tasks/{id}/complete

Paramètres

NomOùTypeDescription
idcheminstringObligatoire.
cURL
curl -X POST "https://nways.ng/maps/v1/fleet/tasks/string/complete" \
  -H "X-NWays-Api-Key: VOTRE_CLE_API"
JavaScript
const res = await fetch('https://nways.ng/maps/v1/fleet/tasks/string/complete', {
  method: 'POST',
  headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY },
})
const data = await res.json()
Python
import os
import requests

res = requests.post(
    "https://nways.ng/maps/v1/fleet/tasks/string/complete",
    headers={"X-NWays-Api-Key": os.environ["NWAYS_API_KEY"]},
    timeout=10,
)
data = res.json()

Réponse

Tâche

ChampTypeDescription
idstringObligatoire.
refstringObligatoire. Le numéro court de la livraison dans le projet, donné par N-Ways (« 1042 », affiché #1042) : pour les personnes, dans les alertes et les listes.
statusstringObligatoire. Au choix: created, assigned, picked_up, arriving, completed, failed, cancelled.
vehicleIdstring | nullObligatoire.
pickupStop | nullObligatoire.
dropoffStopObligatoire.
dropoff.latnumberObligatoire.
dropoff.lngnumberObligatoire.
dropoff.namestring120 caractères au plus.
dropoff.addressstring300 caractères au plus.
recipientNamestringObligatoire.
recipientPhonestring
notesstringObligatoire.
langstringObligatoire. Au choix: en, fr, pt.
arrivingSintegerObligatoire.
etaETA | nullObligatoire. Null tant qu’aucune position fraîche n’est arrivée, et une fois la tâche terminée.
dueAtstring (date-time) | nullObligatoire.
latebooleanObligatoire. Ouverte et après dueAt, ou attendue après.
trackingUrlstring (uri) | nullObligatoire. Null une fois expiré.
trackingExpiresAtstring (date-time) | nullObligatoire.
failureReasonstring
createdAtstring (date-time)Obligatoire.
assignedAtstring (date-time) | nullObligatoire.
pickedUpAtstring (date-time) | nullObligatoire.
arrivingAtstring (date-time) | nullObligatoire.
endedAtstring (date-time) | nullObligatoire.
areaArea | nullLa zone propre à la livraison : en sortir lève asset.geofence_exit.
proofsProof[]Seulement dans GET /tasks/{id} : les photos et signatures du livreur (N-Ways Business).
proofs[].idstringObligatoire.
proofs[].kindstringObligatoire. Au choix: photo, signature.
proofs[].contentTypestringObligatoire. Au choix: image/jpeg, image/png, image/webp.
proofs[].bytesintegerObligatoire.
proofs[].latnumber | nullObligatoire.
proofs[].lngnumber | nullObligatoire.
proofs[].bystringObligatoire. Le nom du livreur.
proofs[].createdAtstring (date-time)Obligatoire.
endNotestringSeulement dans GET /tasks/{id} : ce que le livreur a écrit en terminant.
recipientEmailstring
proofRequiredstring[]Celles de la livraison, sinon celles de vos réglages.
proofRequiredOverridestring[] | null
packageSizestring | nullAu choix: small, medium, large, null.
itemDescriptionstring
referencestring
scheduledAtstring (date-time) | null
connectionIdstring | nullLa connexion du livreur N-Ways qui l’a acceptée.
acceptedAtstring (date-time) | null
startedAtstring (date-time) | null
editablestringCe que PATCH /tasks/{id} peut changer maintenant : tout, seulement notes et dueAt (retirée ou commencée), ou rien (terminée). Au choix: all, limited, none.
editedAtstring (date-time) | nullLa dernière modification.
editedFieldsstring[]Ce que la dernière modification a changé.
pinDeliveryPinDeliveryComment le code PIN de livraison parvient au client, quand la livraison en demande un et que les codes partent sur WhatsApp. Jamais le code lui-même.
pinDelivery.channelstringObligatoire. Au choix: whatsapp, email, none.
pinDelivery.statestringObligatoire. Au choix: sending, sent, delivered, read, failed.
pinDelivery.whatsappErrorCodeinteger | nullObligatoire. L’échec de WhatsApp (131026 : pas sur WhatsApp), gardé après l’envoi du code par e-mail.
pinDelivery.needsEmailbooleanObligatoire. Le client n’a pas reçu le code : envoyez-le avec POST /tasks/{id}/pin-email.
pinDelivery.updatedAtstring (date-time)Obligatoire.
200 OK
{
  "id": "string",
  "ref": "string",
  "status": "created",
  "vehicleId": "string",
  "pickup": {
    "lat": 0,
    "lng": 0,
    "name": "string",
    "address": "string"
  },
  "dropoff": {
    "lat": 0,
    "lng": 0,
    "name": "string",
    "address": "string"
  },
  "recipientName": "string",
  "recipientPhone": "string",
  "notes": "string",
  "lang": "en",
  "arrivingS": 0,
  "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"
  },
  "dueAt": "2026-10-15T09:00:00+01:00",
  "late": true,
  "trackingUrl": "string",
  "trackingExpiresAt": "2026-10-15T09:00:00+01:00",
  "failureReason": "string",
  "createdAt": "2026-10-15T09:00:00+01:00",
  "assignedAt": "2026-10-15T09:00:00+01:00",
  "pickedUpAt": "2026-10-15T09:00:00+01:00",
  "arrivingAt": "2026-10-15T09:00:00+01:00",
  "endedAt": "2026-10-15T09:00:00+01:00",
  "area": {
    "type": "circle",
    "lat": 6.48,
    "lng": 3.43,
    "radiusM": 2500
  },
  "proofs": [
    {
      "id": "string",
      "kind": "photo",
      "contentType": "image/jpeg",
      "bytes": 0,
      "lat": 0,
      "lng": 0,
      "by": "string",
      "createdAt": "2026-10-15T09:00:00+01:00"
    }
  ],
  "endNote": "string",
  "recipientEmail": "string",
  "proofRequired": [
    "photo"
  ],
  "proofRequiredOverride": [
    "string"
  ],
  "packageSize": "small",
  "itemDescription": "string",
  "reference": "string",
  "scheduledAt": "2026-10-15T09:00:00+01:00",
  "connectionId": "string",
  "acceptedAt": "2026-10-15T09:00:00+01:00",
  "startedAt": "2026-10-15T09:00:00+01:00",
  "editable": "all",
  "editedAt": "2026-10-15T09:00:00+01:00",
  "editedFields": [
    "string"
  ],
  "pinDelivery": {
    "channel": "whatsapp",
    "state": "sending",
    "whatsappErrorCode": 0,
    "needsEmail": true,
    "updatedAt": "2026-10-15T09:00:00+01:00"
  }
}

Erreurs

  • default Erreur

Marquer comme échoué — tout statut ouvert → failed ; événement task.failed

POST https://nways.ng/maps/v1/fleet/tasks/{id}/fail

Paramètres

NomOùTypeDescription
idcheminstringObligatoire.

Corps de la requête

ChampTypeDescription
reasonstring200 caractères au plus.
cURL
curl -X POST "https://nways.ng/maps/v1/fleet/tasks/string/fail" \
  -H "X-NWays-Api-Key: VOTRE_CLE_API" \
  -H "Content-Type: application/json" \
  -d '{"reason":"string"}'
JavaScript
const res = await fetch('https://nways.ng/maps/v1/fleet/tasks/string/fail', {
  method: 'POST',
  headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY, 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "reason": "string"
  }),
})
const data = await res.json()
Python
import os
import requests

res = requests.post(
    "https://nways.ng/maps/v1/fleet/tasks/string/fail",
    headers={"X-NWays-Api-Key": os.environ["NWAYS_API_KEY"]},
    json={"reason": "string"},
    timeout=10,
)
data = res.json()

Réponse

Tâche

ChampTypeDescription
idstringObligatoire.
refstringObligatoire. Le numéro court de la livraison dans le projet, donné par N-Ways (« 1042 », affiché #1042) : pour les personnes, dans les alertes et les listes.
statusstringObligatoire. Au choix: created, assigned, picked_up, arriving, completed, failed, cancelled.
vehicleIdstring | nullObligatoire.
pickupStop | nullObligatoire.
dropoffStopObligatoire.
dropoff.latnumberObligatoire.
dropoff.lngnumberObligatoire.
dropoff.namestring120 caractères au plus.
dropoff.addressstring300 caractères au plus.
recipientNamestringObligatoire.
recipientPhonestring
notesstringObligatoire.
langstringObligatoire. Au choix: en, fr, pt.
arrivingSintegerObligatoire.
etaETA | nullObligatoire. Null tant qu’aucune position fraîche n’est arrivée, et une fois la tâche terminée.
dueAtstring (date-time) | nullObligatoire.
latebooleanObligatoire. Ouverte et après dueAt, ou attendue après.
trackingUrlstring (uri) | nullObligatoire. Null une fois expiré.
trackingExpiresAtstring (date-time) | nullObligatoire.
failureReasonstring
createdAtstring (date-time)Obligatoire.
assignedAtstring (date-time) | nullObligatoire.
pickedUpAtstring (date-time) | nullObligatoire.
arrivingAtstring (date-time) | nullObligatoire.
endedAtstring (date-time) | nullObligatoire.
areaArea | nullLa zone propre à la livraison : en sortir lève asset.geofence_exit.
proofsProof[]Seulement dans GET /tasks/{id} : les photos et signatures du livreur (N-Ways Business).
proofs[].idstringObligatoire.
proofs[].kindstringObligatoire. Au choix: photo, signature.
proofs[].contentTypestringObligatoire. Au choix: image/jpeg, image/png, image/webp.
proofs[].bytesintegerObligatoire.
proofs[].latnumber | nullObligatoire.
proofs[].lngnumber | nullObligatoire.
proofs[].bystringObligatoire. Le nom du livreur.
proofs[].createdAtstring (date-time)Obligatoire.
endNotestringSeulement dans GET /tasks/{id} : ce que le livreur a écrit en terminant.
recipientEmailstring
proofRequiredstring[]Celles de la livraison, sinon celles de vos réglages.
proofRequiredOverridestring[] | null
packageSizestring | nullAu choix: small, medium, large, null.
itemDescriptionstring
referencestring
scheduledAtstring (date-time) | null
connectionIdstring | nullLa connexion du livreur N-Ways qui l’a acceptée.
acceptedAtstring (date-time) | null
startedAtstring (date-time) | null
editablestringCe que PATCH /tasks/{id} peut changer maintenant : tout, seulement notes et dueAt (retirée ou commencée), ou rien (terminée). Au choix: all, limited, none.
editedAtstring (date-time) | nullLa dernière modification.
editedFieldsstring[]Ce que la dernière modification a changé.
pinDeliveryPinDeliveryComment le code PIN de livraison parvient au client, quand la livraison en demande un et que les codes partent sur WhatsApp. Jamais le code lui-même.
pinDelivery.channelstringObligatoire. Au choix: whatsapp, email, none.
pinDelivery.statestringObligatoire. Au choix: sending, sent, delivered, read, failed.
pinDelivery.whatsappErrorCodeinteger | nullObligatoire. L’échec de WhatsApp (131026 : pas sur WhatsApp), gardé après l’envoi du code par e-mail.
pinDelivery.needsEmailbooleanObligatoire. Le client n’a pas reçu le code : envoyez-le avec POST /tasks/{id}/pin-email.
pinDelivery.updatedAtstring (date-time)Obligatoire.
200 OK
{
  "id": "string",
  "ref": "string",
  "status": "created",
  "vehicleId": "string",
  "pickup": {
    "lat": 0,
    "lng": 0,
    "name": "string",
    "address": "string"
  },
  "dropoff": {
    "lat": 0,
    "lng": 0,
    "name": "string",
    "address": "string"
  },
  "recipientName": "string",
  "recipientPhone": "string",
  "notes": "string",
  "lang": "en",
  "arrivingS": 0,
  "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"
  },
  "dueAt": "2026-10-15T09:00:00+01:00",
  "late": true,
  "trackingUrl": "string",
  "trackingExpiresAt": "2026-10-15T09:00:00+01:00",
  "failureReason": "string",
  "createdAt": "2026-10-15T09:00:00+01:00",
  "assignedAt": "2026-10-15T09:00:00+01:00",
  "pickedUpAt": "2026-10-15T09:00:00+01:00",
  "arrivingAt": "2026-10-15T09:00:00+01:00",
  "endedAt": "2026-10-15T09:00:00+01:00",
  "area": {
    "type": "circle",
    "lat": 6.48,
    "lng": 3.43,
    "radiusM": 2500
  },
  "proofs": [
    {
      "id": "string",
      "kind": "photo",
      "contentType": "image/jpeg",
      "bytes": 0,
      "lat": 0,
      "lng": 0,
      "by": "string",
      "createdAt": "2026-10-15T09:00:00+01:00"
    }
  ],
  "endNote": "string",
  "recipientEmail": "string",
  "proofRequired": [
    "photo"
  ],
  "proofRequiredOverride": [
    "string"
  ],
  "packageSize": "small",
  "itemDescription": "string",
  "reference": "string",
  "scheduledAt": "2026-10-15T09:00:00+01:00",
  "connectionId": "string",
  "acceptedAt": "2026-10-15T09:00:00+01:00",
  "startedAt": "2026-10-15T09:00:00+01:00",
  "editable": "all",
  "editedAt": "2026-10-15T09:00:00+01:00",
  "editedFields": [
    "string"
  ],
  "pinDelivery": {
    "channel": "whatsapp",
    "state": "sending",
    "whatsappErrorCode": 0,
    "needsEmail": true,
    "updatedAt": "2026-10-15T09:00:00+01:00"
  }
}

Erreurs

  • default Erreur

Annuler — tout statut ouvert → cancelled

POST https://nways.ng/maps/v1/fleet/tasks/{id}/cancel

Paramètres

NomOùTypeDescription
idcheminstringObligatoire.
cURL
curl -X POST "https://nways.ng/maps/v1/fleet/tasks/string/cancel" \
  -H "X-NWays-Api-Key: VOTRE_CLE_API"
JavaScript
const res = await fetch('https://nways.ng/maps/v1/fleet/tasks/string/cancel', {
  method: 'POST',
  headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY },
})
const data = await res.json()
Python
import os
import requests

res = requests.post(
    "https://nways.ng/maps/v1/fleet/tasks/string/cancel",
    headers={"X-NWays-Api-Key": os.environ["NWAYS_API_KEY"]},
    timeout=10,
)
data = res.json()

Réponse

Tâche

ChampTypeDescription
idstringObligatoire.
refstringObligatoire. Le numéro court de la livraison dans le projet, donné par N-Ways (« 1042 », affiché #1042) : pour les personnes, dans les alertes et les listes.
statusstringObligatoire. Au choix: created, assigned, picked_up, arriving, completed, failed, cancelled.
vehicleIdstring | nullObligatoire.
pickupStop | nullObligatoire.
dropoffStopObligatoire.
dropoff.latnumberObligatoire.
dropoff.lngnumberObligatoire.
dropoff.namestring120 caractères au plus.
dropoff.addressstring300 caractères au plus.
recipientNamestringObligatoire.
recipientPhonestring
notesstringObligatoire.
langstringObligatoire. Au choix: en, fr, pt.
arrivingSintegerObligatoire.
etaETA | nullObligatoire. Null tant qu’aucune position fraîche n’est arrivée, et une fois la tâche terminée.
dueAtstring (date-time) | nullObligatoire.
latebooleanObligatoire. Ouverte et après dueAt, ou attendue après.
trackingUrlstring (uri) | nullObligatoire. Null une fois expiré.
trackingExpiresAtstring (date-time) | nullObligatoire.
failureReasonstring
createdAtstring (date-time)Obligatoire.
assignedAtstring (date-time) | nullObligatoire.
pickedUpAtstring (date-time) | nullObligatoire.
arrivingAtstring (date-time) | nullObligatoire.
endedAtstring (date-time) | nullObligatoire.
areaArea | nullLa zone propre à la livraison : en sortir lève asset.geofence_exit.
proofsProof[]Seulement dans GET /tasks/{id} : les photos et signatures du livreur (N-Ways Business).
proofs[].idstringObligatoire.
proofs[].kindstringObligatoire. Au choix: photo, signature.
proofs[].contentTypestringObligatoire. Au choix: image/jpeg, image/png, image/webp.
proofs[].bytesintegerObligatoire.
proofs[].latnumber | nullObligatoire.
proofs[].lngnumber | nullObligatoire.
proofs[].bystringObligatoire. Le nom du livreur.
proofs[].createdAtstring (date-time)Obligatoire.
endNotestringSeulement dans GET /tasks/{id} : ce que le livreur a écrit en terminant.
recipientEmailstring
proofRequiredstring[]Celles de la livraison, sinon celles de vos réglages.
proofRequiredOverridestring[] | null
packageSizestring | nullAu choix: small, medium, large, null.
itemDescriptionstring
referencestring
scheduledAtstring (date-time) | null
connectionIdstring | nullLa connexion du livreur N-Ways qui l’a acceptée.
acceptedAtstring (date-time) | null
startedAtstring (date-time) | null
editablestringCe que PATCH /tasks/{id} peut changer maintenant : tout, seulement notes et dueAt (retirée ou commencée), ou rien (terminée). Au choix: all, limited, none.
editedAtstring (date-time) | nullLa dernière modification.
editedFieldsstring[]Ce que la dernière modification a changé.
pinDeliveryPinDeliveryComment le code PIN de livraison parvient au client, quand la livraison en demande un et que les codes partent sur WhatsApp. Jamais le code lui-même.
pinDelivery.channelstringObligatoire. Au choix: whatsapp, email, none.
pinDelivery.statestringObligatoire. Au choix: sending, sent, delivered, read, failed.
pinDelivery.whatsappErrorCodeinteger | nullObligatoire. L’échec de WhatsApp (131026 : pas sur WhatsApp), gardé après l’envoi du code par e-mail.
pinDelivery.needsEmailbooleanObligatoire. Le client n’a pas reçu le code : envoyez-le avec POST /tasks/{id}/pin-email.
pinDelivery.updatedAtstring (date-time)Obligatoire.
200 OK
{
  "id": "string",
  "ref": "string",
  "status": "created",
  "vehicleId": "string",
  "pickup": {
    "lat": 0,
    "lng": 0,
    "name": "string",
    "address": "string"
  },
  "dropoff": {
    "lat": 0,
    "lng": 0,
    "name": "string",
    "address": "string"
  },
  "recipientName": "string",
  "recipientPhone": "string",
  "notes": "string",
  "lang": "en",
  "arrivingS": 0,
  "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"
  },
  "dueAt": "2026-10-15T09:00:00+01:00",
  "late": true,
  "trackingUrl": "string",
  "trackingExpiresAt": "2026-10-15T09:00:00+01:00",
  "failureReason": "string",
  "createdAt": "2026-10-15T09:00:00+01:00",
  "assignedAt": "2026-10-15T09:00:00+01:00",
  "pickedUpAt": "2026-10-15T09:00:00+01:00",
  "arrivingAt": "2026-10-15T09:00:00+01:00",
  "endedAt": "2026-10-15T09:00:00+01:00",
  "area": {
    "type": "circle",
    "lat": 6.48,
    "lng": 3.43,
    "radiusM": 2500
  },
  "proofs": [
    {
      "id": "string",
      "kind": "photo",
      "contentType": "image/jpeg",
      "bytes": 0,
      "lat": 0,
      "lng": 0,
      "by": "string",
      "createdAt": "2026-10-15T09:00:00+01:00"
    }
  ],
  "endNote": "string",
  "recipientEmail": "string",
  "proofRequired": [
    "photo"
  ],
  "proofRequiredOverride": [
    "string"
  ],
  "packageSize": "small",
  "itemDescription": "string",
  "reference": "string",
  "scheduledAt": "2026-10-15T09:00:00+01:00",
  "connectionId": "string",
  "acceptedAt": "2026-10-15T09:00:00+01:00",
  "startedAt": "2026-10-15T09:00:00+01:00",
  "editable": "all",
  "editedAt": "2026-10-15T09:00:00+01:00",
  "editedFields": [
    "string"
  ],
  "pinDelivery": {
    "channel": "whatsapp",
    "state": "sending",
    "whatsappErrorCode": 0,
    "needsEmail": true,
    "updatedAt": "2026-10-15T09:00:00+01:00"
  }
}

Erreurs

  • default Erreur

Envoyer le code PIN de livraison au client par e-mail

POST https://nways.ng/maps/v1/fleet/tasks/{id}/pin-email

Pour une livraison qui demande un code PIN, jusqu’à sa fin : garde l’e-mail sur la livraison et y envoie le code (la solution quand pinDelivery.needsEmail vaut true). Vous ne voyez jamais le code.

Paramètres

NomOùTypeDescription
idcheminstringObligatoire.

Corps de la requête

ChampTypeDescription
emailstring (email)Obligatoire.
cURL
curl -X POST "https://nways.ng/maps/v1/fleet/tasks/string/pin-email" \
  -H "X-NWays-Api-Key: VOTRE_CLE_API" \
  -H "Content-Type: application/json" \
  -d '{"email":"ngozi@example.com"}'
JavaScript
const res = await fetch('https://nways.ng/maps/v1/fleet/tasks/string/pin-email', {
  method: 'POST',
  headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY, 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "email": "ngozi@example.com"
  }),
})
const data = await res.json()
Python
import os
import requests

res = requests.post(
    "https://nways.ng/maps/v1/fleet/tasks/string/pin-email",
    headers={"X-NWays-Api-Key": os.environ["NWAYS_API_KEY"]},
    json={"email": "ngozi@example.com"},
    timeout=10,
)
data = res.json()

Réponse

La livraison

ChampTypeDescription
idstringObligatoire.
refstringObligatoire. Le numéro court de la livraison dans le projet, donné par N-Ways (« 1042 », affiché #1042) : pour les personnes, dans les alertes et les listes.
statusstringObligatoire. Au choix: created, assigned, picked_up, arriving, completed, failed, cancelled.
vehicleIdstring | nullObligatoire.
pickupStop | nullObligatoire.
dropoffStopObligatoire.
dropoff.latnumberObligatoire.
dropoff.lngnumberObligatoire.
dropoff.namestring120 caractères au plus.
dropoff.addressstring300 caractères au plus.
recipientNamestringObligatoire.
recipientPhonestring
notesstringObligatoire.
langstringObligatoire. Au choix: en, fr, pt.
arrivingSintegerObligatoire.
etaETA | nullObligatoire. Null tant qu’aucune position fraîche n’est arrivée, et une fois la tâche terminée.
dueAtstring (date-time) | nullObligatoire.
latebooleanObligatoire. Ouverte et après dueAt, ou attendue après.
trackingUrlstring (uri) | nullObligatoire. Null une fois expiré.
trackingExpiresAtstring (date-time) | nullObligatoire.
failureReasonstring
createdAtstring (date-time)Obligatoire.
assignedAtstring (date-time) | nullObligatoire.
pickedUpAtstring (date-time) | nullObligatoire.
arrivingAtstring (date-time) | nullObligatoire.
endedAtstring (date-time) | nullObligatoire.
areaArea | nullLa zone propre à la livraison : en sortir lève asset.geofence_exit.
proofsProof[]Seulement dans GET /tasks/{id} : les photos et signatures du livreur (N-Ways Business).
proofs[].idstringObligatoire.
proofs[].kindstringObligatoire. Au choix: photo, signature.
proofs[].contentTypestringObligatoire. Au choix: image/jpeg, image/png, image/webp.
proofs[].bytesintegerObligatoire.
proofs[].latnumber | nullObligatoire.
proofs[].lngnumber | nullObligatoire.
proofs[].bystringObligatoire. Le nom du livreur.
proofs[].createdAtstring (date-time)Obligatoire.
endNotestringSeulement dans GET /tasks/{id} : ce que le livreur a écrit en terminant.
recipientEmailstring
proofRequiredstring[]Celles de la livraison, sinon celles de vos réglages.
proofRequiredOverridestring[] | null
packageSizestring | nullAu choix: small, medium, large, null.
itemDescriptionstring
referencestring
scheduledAtstring (date-time) | null
connectionIdstring | nullLa connexion du livreur N-Ways qui l’a acceptée.
acceptedAtstring (date-time) | null
startedAtstring (date-time) | null
editablestringCe que PATCH /tasks/{id} peut changer maintenant : tout, seulement notes et dueAt (retirée ou commencée), ou rien (terminée). Au choix: all, limited, none.
editedAtstring (date-time) | nullLa dernière modification.
editedFieldsstring[]Ce que la dernière modification a changé.
pinDeliveryPinDeliveryComment le code PIN de livraison parvient au client, quand la livraison en demande un et que les codes partent sur WhatsApp. Jamais le code lui-même.
pinDelivery.channelstringObligatoire. Au choix: whatsapp, email, none.
pinDelivery.statestringObligatoire. Au choix: sending, sent, delivered, read, failed.
pinDelivery.whatsappErrorCodeinteger | nullObligatoire. L’échec de WhatsApp (131026 : pas sur WhatsApp), gardé après l’envoi du code par e-mail.
pinDelivery.needsEmailbooleanObligatoire. Le client n’a pas reçu le code : envoyez-le avec POST /tasks/{id}/pin-email.
pinDelivery.updatedAtstring (date-time)Obligatoire.
200 OK
{
  "id": "string",
  "ref": "string",
  "status": "created",
  "vehicleId": "string",
  "pickup": {
    "lat": 0,
    "lng": 0,
    "name": "string",
    "address": "string"
  },
  "dropoff": {
    "lat": 0,
    "lng": 0,
    "name": "string",
    "address": "string"
  },
  "recipientName": "string",
  "recipientPhone": "string",
  "notes": "string",
  "lang": "en",
  "arrivingS": 0,
  "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"
  },
  "dueAt": "2026-10-15T09:00:00+01:00",
  "late": true,
  "trackingUrl": "string",
  "trackingExpiresAt": "2026-10-15T09:00:00+01:00",
  "failureReason": "string",
  "createdAt": "2026-10-15T09:00:00+01:00",
  "assignedAt": "2026-10-15T09:00:00+01:00",
  "pickedUpAt": "2026-10-15T09:00:00+01:00",
  "arrivingAt": "2026-10-15T09:00:00+01:00",
  "endedAt": "2026-10-15T09:00:00+01:00",
  "area": {
    "type": "circle",
    "lat": 6.48,
    "lng": 3.43,
    "radiusM": 2500
  },
  "proofs": [
    {
      "id": "string",
      "kind": "photo",
      "contentType": "image/jpeg",
      "bytes": 0,
      "lat": 0,
      "lng": 0,
      "by": "string",
      "createdAt": "2026-10-15T09:00:00+01:00"
    }
  ],
  "endNote": "string",
  "recipientEmail": "string",
  "proofRequired": [
    "photo"
  ],
  "proofRequiredOverride": [
    "string"
  ],
  "packageSize": "small",
  "itemDescription": "string",
  "reference": "string",
  "scheduledAt": "2026-10-15T09:00:00+01:00",
  "connectionId": "string",
  "acceptedAt": "2026-10-15T09:00:00+01:00",
  "startedAt": "2026-10-15T09:00:00+01:00",
  "editable": "all",
  "editedAt": "2026-10-15T09:00:00+01:00",
  "editedFields": [
    "string"
  ],
  "pinDelivery": {
    "channel": "whatsapp",
    "state": "sending",
    "whatsappErrorCode": 0,
    "needsEmail": true,
    "updatedAt": "2026-10-15T09:00:00+01:00"
  }
}

Erreurs

  • default Erreur

Si un code PIN de livraison peut aller à un numéro sur WhatsApp

GET https://nways.ng/maps/v1/fleet/whatsapp/number

WhatsApp ne peut pas dire à l’avance si un numéro est sur WhatsApp : known est un numéro sur lequel votre client a déjà reçu un code, unreachable un numéro que WhatsApp n’a pas pu joindre récemment (une livraison qui demande un code a alors besoin de recipientEmail).

Paramètres

NomOùTypeDescription
phonerequêtestringTel que saisi : +234…, ou à la manière locale de votre pays. 32 caractères au plus.
cURL
curl "https://nways.ng/maps/v1/fleet/whatsapp/number" \
  -H "X-NWays-Api-Key: VOTRE_CLE_API"
JavaScript
const res = await fetch('https://nways.ng/maps/v1/fleet/whatsapp/number', {
  headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY },
})
const data = await res.json()
Python
import os
import requests

res = requests.get(
    "https://nways.ng/maps/v1/fleet/whatsapp/number",
    headers={"X-NWays-Api-Key": os.environ["NWAYS_API_KEY"]},
    timeout=10,
)
data = res.json()

Réponse

La joignabilité du numéro

ChampTypeDescription
enabledbooleanObligatoire. Les codes partent sur WhatsApp. Si false, ils partent par e-mail et notification.
phonestringObligatoire. Le numéro au format E.164 ("" s’il n’en est pas un).
validbooleanObligatoire.
knownbooleanObligatoire.
unreachablebooleanObligatoire.
200 OK
{
  "enabled": true,
  "phone": "+2348031234567",
  "valid": true,
  "known": true,
  "unreachable": true
}

Erreurs

  • default Erreur

Définir ou effacer la zone propre d’une livraison

POST https://nways.ng/maps/v1/fleet/tasks/{id}/area

En sortir lève asset.geofence_exit (par vos règles geofence_exit de zone dispatch, ou une règle par défaut).

Paramètres

NomOùTypeDescription
idcheminstringObligatoire.

Corps de la requête

ChampTypeDescription
areaArea | nullObligatoire.
cURL
curl -X POST "https://nways.ng/maps/v1/fleet/tasks/string/area" \
  -H "X-NWays-Api-Key: VOTRE_CLE_API" \
  -H "Content-Type: application/json" \
  -d '{"area":{"type":"circle","lat":6.48,"lng":3.43,"radiusM":2500}}'
JavaScript
const res = await fetch('https://nways.ng/maps/v1/fleet/tasks/string/area', {
  method: 'POST',
  headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY, 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "area": {
      "type": "circle",
      "lat": 6.48,
      "lng": 3.43,
      "radiusM": 2500
    }
  }),
})
const data = await res.json()
Python
import os
import requests

res = requests.post(
    "https://nways.ng/maps/v1/fleet/tasks/string/area",
    headers={"X-NWays-Api-Key": os.environ["NWAYS_API_KEY"]},
    json={"area": {"type": "circle", "lat": 6.48, "lng": 3.43, "radiusM": 2500}},
    timeout=10,
)
data = res.json()

Réponse

La tâche

ChampTypeDescription
idstringObligatoire.
refstringObligatoire. Le numéro court de la livraison dans le projet, donné par N-Ways (« 1042 », affiché #1042) : pour les personnes, dans les alertes et les listes.
statusstringObligatoire. Au choix: created, assigned, picked_up, arriving, completed, failed, cancelled.
vehicleIdstring | nullObligatoire.
pickupStop | nullObligatoire.
dropoffStopObligatoire.
dropoff.latnumberObligatoire.
dropoff.lngnumberObligatoire.
dropoff.namestring120 caractères au plus.
dropoff.addressstring300 caractères au plus.
recipientNamestringObligatoire.
recipientPhonestring
notesstringObligatoire.
langstringObligatoire. Au choix: en, fr, pt.
arrivingSintegerObligatoire.
etaETA | nullObligatoire. Null tant qu’aucune position fraîche n’est arrivée, et une fois la tâche terminée.
dueAtstring (date-time) | nullObligatoire.
latebooleanObligatoire. Ouverte et après dueAt, ou attendue après.
trackingUrlstring (uri) | nullObligatoire. Null une fois expiré.
trackingExpiresAtstring (date-time) | nullObligatoire.
failureReasonstring
createdAtstring (date-time)Obligatoire.
assignedAtstring (date-time) | nullObligatoire.
pickedUpAtstring (date-time) | nullObligatoire.
arrivingAtstring (date-time) | nullObligatoire.
endedAtstring (date-time) | nullObligatoire.
areaArea | nullLa zone propre à la livraison : en sortir lève asset.geofence_exit.
proofsProof[]Seulement dans GET /tasks/{id} : les photos et signatures du livreur (N-Ways Business).
proofs[].idstringObligatoire.
proofs[].kindstringObligatoire. Au choix: photo, signature.
proofs[].contentTypestringObligatoire. Au choix: image/jpeg, image/png, image/webp.
proofs[].bytesintegerObligatoire.
proofs[].latnumber | nullObligatoire.
proofs[].lngnumber | nullObligatoire.
proofs[].bystringObligatoire. Le nom du livreur.
proofs[].createdAtstring (date-time)Obligatoire.
endNotestringSeulement dans GET /tasks/{id} : ce que le livreur a écrit en terminant.
recipientEmailstring
proofRequiredstring[]Celles de la livraison, sinon celles de vos réglages.
proofRequiredOverridestring[] | null
packageSizestring | nullAu choix: small, medium, large, null.
itemDescriptionstring
referencestring
scheduledAtstring (date-time) | null
connectionIdstring | nullLa connexion du livreur N-Ways qui l’a acceptée.
acceptedAtstring (date-time) | null
startedAtstring (date-time) | null
editablestringCe que PATCH /tasks/{id} peut changer maintenant : tout, seulement notes et dueAt (retirée ou commencée), ou rien (terminée). Au choix: all, limited, none.
editedAtstring (date-time) | nullLa dernière modification.
editedFieldsstring[]Ce que la dernière modification a changé.
pinDeliveryPinDeliveryComment le code PIN de livraison parvient au client, quand la livraison en demande un et que les codes partent sur WhatsApp. Jamais le code lui-même.
pinDelivery.channelstringObligatoire. Au choix: whatsapp, email, none.
pinDelivery.statestringObligatoire. Au choix: sending, sent, delivered, read, failed.
pinDelivery.whatsappErrorCodeinteger | nullObligatoire. L’échec de WhatsApp (131026 : pas sur WhatsApp), gardé après l’envoi du code par e-mail.
pinDelivery.needsEmailbooleanObligatoire. Le client n’a pas reçu le code : envoyez-le avec POST /tasks/{id}/pin-email.
pinDelivery.updatedAtstring (date-time)Obligatoire.
200 OK
{
  "id": "string",
  "ref": "string",
  "status": "created",
  "vehicleId": "string",
  "pickup": {
    "lat": 0,
    "lng": 0,
    "name": "string",
    "address": "string"
  },
  "dropoff": {
    "lat": 0,
    "lng": 0,
    "name": "string",
    "address": "string"
  },
  "recipientName": "string",
  "recipientPhone": "string",
  "notes": "string",
  "lang": "en",
  "arrivingS": 0,
  "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"
  },
  "dueAt": "2026-10-15T09:00:00+01:00",
  "late": true,
  "trackingUrl": "string",
  "trackingExpiresAt": "2026-10-15T09:00:00+01:00",
  "failureReason": "string",
  "createdAt": "2026-10-15T09:00:00+01:00",
  "assignedAt": "2026-10-15T09:00:00+01:00",
  "pickedUpAt": "2026-10-15T09:00:00+01:00",
  "arrivingAt": "2026-10-15T09:00:00+01:00",
  "endedAt": "2026-10-15T09:00:00+01:00",
  "area": {
    "type": "circle",
    "lat": 6.48,
    "lng": 3.43,
    "radiusM": 2500
  },
  "proofs": [
    {
      "id": "string",
      "kind": "photo",
      "contentType": "image/jpeg",
      "bytes": 0,
      "lat": 0,
      "lng": 0,
      "by": "string",
      "createdAt": "2026-10-15T09:00:00+01:00"
    }
  ],
  "endNote": "string",
  "recipientEmail": "string",
  "proofRequired": [
    "photo"
  ],
  "proofRequiredOverride": [
    "string"
  ],
  "packageSize": "small",
  "itemDescription": "string",
  "reference": "string",
  "scheduledAt": "2026-10-15T09:00:00+01:00",
  "connectionId": "string",
  "acceptedAt": "2026-10-15T09:00:00+01:00",
  "startedAt": "2026-10-15T09:00:00+01:00",
  "editable": "all",
  "editedAt": "2026-10-15T09:00:00+01:00",
  "editedFields": [
    "string"
  ],
  "pinDelivery": {
    "channel": "whatsapp",
    "state": "sending",
    "whatsappErrorCode": 0,
    "needsEmail": true,
    "updatedAt": "2026-10-15T09:00:00+01:00"
  }
}

Erreurs

  • default Erreur

Lister vos lieux de retrait (celui par défaut d’abord)

GET https://nways.ng/maps/v1/fleet/places

Paramètres

NomOùTypeDescription
qrequêtestringCherche un nom, une adresse ou un code de porte.
cURL
curl "https://nways.ng/maps/v1/fleet/places" \
  -H "X-NWays-Api-Key: VOTRE_CLE_API"
JavaScript
const res = await fetch('https://nways.ng/maps/v1/fleet/places', {
  headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY },
})
const data = await res.json()
Python
import os
import requests

res = requests.get(
    "https://nways.ng/maps/v1/fleet/places",
    headers={"X-NWays-Api-Key": os.environ["NWAYS_API_KEY"]},
    timeout=10,
)
data = res.json()

Réponse

Lieux

ChampTypeDescription
placesPlace[]Obligatoire.
places[].idstringObligatoire.
places[].namestringObligatoire.
places[].doorCodestringObligatoire. Le code de porte NIPOST ou GhanaPost par lequel il a été trouvé ("" pour aucun).
places[].addressstringObligatoire.
places[].latnumberObligatoire.
places[].lngnumberObligatoire.
places[].phonestringObligatoire.
places[].hoursstringObligatoire.
places[].defaultbooleanObligatoire. Les nouvelles livraisons de la console partent de lui.
places[].createdAtstring (date-time)Obligatoire.
places[].updatedAtstring (date-time)Obligatoire.
200 OK
{
  "places": [
    {
      "id": "plc_4fQ9xLm2Za",
      "name": "Yaba warehouse",
      "doorCode": "string",
      "address": "string",
      "lat": 0,
      "lng": 0,
      "phone": "string",
      "hours": "Mon–Sat 8:00–18:00",
      "default": true,
      "createdAt": "2026-10-15T09:00:00+01:00",
      "updatedAt": "2026-10-15T09:00:00+01:00"
    }
  ]
}

Erreurs

  • default Erreur

Ajouter un lieu de retrait (jusqu’à 200)

POST https://nways.ng/maps/v1/fleet/places

Votre premier lieu est celui par défaut sauf avis contraire ; en mettre un par défaut retire les autres.

Corps de la requête

name, lat et lng sont obligatoires pour en ajouter un.

ChampTypeDescription
namestring100 caractères au plus.
doorCodestring32 caractères au plus.
addressstring300 caractères au plus.
latnumber
lngnumber
phonestring32 caractères au plus.
hoursstring200 caractères au plus.
defaultboolean
cURL
curl -X POST "https://nways.ng/maps/v1/fleet/places" \
  -H "X-NWays-Api-Key: VOTRE_CLE_API" \
  -H "Content-Type: application/json" \
  -d '{"name":"Yaba warehouse","doorCode":"LA14A18BE13","address":"12 Herbert Macaulay Way","lat":6.5095,"lng":3.3711,"phone":"+234 803 000 0000","hours":"Mon–Sat 8:00–18:00"}'
JavaScript
const res = await fetch('https://nways.ng/maps/v1/fleet/places', {
  method: 'POST',
  headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY, 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "name": "Yaba warehouse",
    "doorCode": "LA14A18BE13",
    "address": "12 Herbert Macaulay Way",
    "lat": 6.5095,
    "lng": 3.3711,
    "phone": "+234 803 000 0000",
    "hours": "Mon–Sat 8:00–18:00"
  }),
})
const data = await res.json()
Python
import os
import requests

res = requests.post(
    "https://nways.ng/maps/v1/fleet/places",
    headers={"X-NWays-Api-Key": os.environ["NWAYS_API_KEY"]},
    json={"name": "Yaba warehouse", "doorCode": "LA14A18BE13", "address": "12 Herbert Macaulay Way", "lat": 6.5095, "lng": 3.3711, "phone": "+234 803 000 0000", "hours": "Mon–Sat 8:00–18:00"},
    timeout=10,
)
data = res.json()

Réponse

Créé

ChampTypeDescription
idstringObligatoire.
namestringObligatoire.
doorCodestringObligatoire. Le code de porte NIPOST ou GhanaPost par lequel il a été trouvé ("" pour aucun).
addressstringObligatoire.
latnumberObligatoire.
lngnumberObligatoire.
phonestringObligatoire.
hoursstringObligatoire.
defaultbooleanObligatoire. Les nouvelles livraisons de la console partent de lui.
createdAtstring (date-time)Obligatoire.
updatedAtstring (date-time)Obligatoire.
201 OK
{
  "id": "plc_4fQ9xLm2Za",
  "name": "Yaba warehouse",
  "doorCode": "string",
  "address": "string",
  "lat": 0,
  "lng": 0,
  "phone": "string",
  "hours": "Mon–Sat 8:00–18:00",
  "default": true,
  "createdAt": "2026-10-15T09:00:00+01:00",
  "updatedAt": "2026-10-15T09:00:00+01:00"
}

Erreurs

  • default Erreur

Obtenir un lieu de retrait

GET https://nways.ng/maps/v1/fleet/places/{placeId}

Paramètres

NomOùTypeDescription
placeIdcheminstringObligatoire.
cURL
curl "https://nways.ng/maps/v1/fleet/places/plc_4fQ9xLm2Za" \
  -H "X-NWays-Api-Key: VOTRE_CLE_API"
JavaScript
const res = await fetch('https://nways.ng/maps/v1/fleet/places/plc_4fQ9xLm2Za', {
  headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY },
})
const data = await res.json()
Python
import os
import requests

res = requests.get(
    "https://nways.ng/maps/v1/fleet/places/plc_4fQ9xLm2Za",
    headers={"X-NWays-Api-Key": os.environ["NWAYS_API_KEY"]},
    timeout=10,
)
data = res.json()

Réponse

Lieu

ChampTypeDescription
idstringObligatoire.
namestringObligatoire.
doorCodestringObligatoire. Le code de porte NIPOST ou GhanaPost par lequel il a été trouvé ("" pour aucun).
addressstringObligatoire.
latnumberObligatoire.
lngnumberObligatoire.
phonestringObligatoire.
hoursstringObligatoire.
defaultbooleanObligatoire. Les nouvelles livraisons de la console partent de lui.
createdAtstring (date-time)Obligatoire.
updatedAtstring (date-time)Obligatoire.
200 OK
{
  "id": "plc_4fQ9xLm2Za",
  "name": "Yaba warehouse",
  "doorCode": "string",
  "address": "string",
  "lat": 0,
  "lng": 0,
  "phone": "string",
  "hours": "Mon–Sat 8:00–18:00",
  "default": true,
  "createdAt": "2026-10-15T09:00:00+01:00",
  "updatedAt": "2026-10-15T09:00:00+01:00"
}

Erreurs

  • default Erreur

Modifier un lieu de retrait

PATCH https://nways.ng/maps/v1/fleet/places/{placeId}

Les livraisons déjà créées depuis ce lieu gardent leur retrait.

Paramètres

NomOùTypeDescription
placeIdcheminstringObligatoire.

Corps de la requête

name, lat et lng sont obligatoires pour en ajouter un.

ChampTypeDescription
namestring100 caractères au plus.
doorCodestring32 caractères au plus.
addressstring300 caractères au plus.
latnumber
lngnumber
phonestring32 caractères au plus.
hoursstring200 caractères au plus.
defaultboolean
cURL
curl -X PATCH "https://nways.ng/maps/v1/fleet/places/plc_4fQ9xLm2Za" \
  -H "X-NWays-Api-Key: VOTRE_CLE_API" \
  -H "Content-Type: application/json" \
  -d '{"name":"string","doorCode":"string","address":"string","lat":0,"lng":0,"phone":"string","hours":"string","default":true}'
JavaScript
const res = await fetch('https://nways.ng/maps/v1/fleet/places/plc_4fQ9xLm2Za', {
  method: 'PATCH',
  headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY, 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "name": "string",
    "doorCode": "string",
    "address": "string",
    "lat": 0,
    "lng": 0,
    "phone": "string",
    "hours": "string",
    "default": true
  }),
})
const data = await res.json()
Python
import os
import requests

res = requests.patch(
    "https://nways.ng/maps/v1/fleet/places/plc_4fQ9xLm2Za",
    headers={"X-NWays-Api-Key": os.environ["NWAYS_API_KEY"]},
    json={"name": "string", "doorCode": "string", "address": "string", "lat": 0, "lng": 0, "phone": "string", "hours": "string", "default": True},
    timeout=10,
)
data = res.json()

Réponse

Lieu

ChampTypeDescription
idstringObligatoire.
namestringObligatoire.
doorCodestringObligatoire. Le code de porte NIPOST ou GhanaPost par lequel il a été trouvé ("" pour aucun).
addressstringObligatoire.
latnumberObligatoire.
lngnumberObligatoire.
phonestringObligatoire.
hoursstringObligatoire.
defaultbooleanObligatoire. Les nouvelles livraisons de la console partent de lui.
createdAtstring (date-time)Obligatoire.
updatedAtstring (date-time)Obligatoire.
200 OK
{
  "id": "plc_4fQ9xLm2Za",
  "name": "Yaba warehouse",
  "doorCode": "string",
  "address": "string",
  "lat": 0,
  "lng": 0,
  "phone": "string",
  "hours": "Mon–Sat 8:00–18:00",
  "default": true,
  "createdAt": "2026-10-15T09:00:00+01:00",
  "updatedAt": "2026-10-15T09:00:00+01:00"
}

Erreurs

  • default Erreur

Supprimer un lieu de retrait

DELETE https://nways.ng/maps/v1/fleet/places/{placeId}

Paramètres

NomOùTypeDescription
placeIdcheminstringObligatoire.
cURL
curl -X DELETE "https://nways.ng/maps/v1/fleet/places/plc_4fQ9xLm2Za" \
  -H "X-NWays-Api-Key: VOTRE_CLE_API"
JavaScript
const res = await fetch('https://nways.ng/maps/v1/fleet/places/plc_4fQ9xLm2Za', {
  method: 'DELETE',
  headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY },
})
const data = await res.json()
Python
import os
import requests

res = requests.delete(
    "https://nways.ng/maps/v1/fleet/places/plc_4fQ9xLm2Za",
    headers={"X-NWays-Api-Key": os.environ["NWAYS_API_KEY"]},
    timeout=10,
)
data = res.json()

Réponse

Supprimé

Pas de contenu.

Erreurs

  • default Erreur

Lister vos clients, dernière livraison d’abord

GET https://nways.ng/maps/v1/fleet/customers

Un client regroupe toutes vos livraisons au même téléphone (quelle que soit son écriture), sinon au même e-mail, sinon au même nom. Gardés à partir de vos livraisons, à leur création et modification, un an après leur dernière livraison.

Paramètres

NomOùTypeDescription
qrequêtestringCherche un nom, un e-mail ou une partie d’un numéro de téléphone.
limitrequêteintegerPar défaut: 25. ≥ 1, ≤ 100.
pageTokenrequêtestringnextPageToken (ou prevPageToken) d’une autre page.
cURL
curl "https://nways.ng/maps/v1/fleet/customers" \
  -H "X-NWays-Api-Key: VOTRE_CLE_API"
JavaScript
const res = await fetch('https://nways.ng/maps/v1/fleet/customers', {
  headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY },
})
const data = await res.json()
Python
import os
import requests

res = requests.get(
    "https://nways.ng/maps/v1/fleet/customers",
    headers={"X-NWays-Api-Key": os.environ["NWAYS_API_KEY"]},
    timeout=10,
)
data = res.json()

Réponse

Clients

ChampTypeDescription
customersCustomer[]Obligatoire.
customers[].idstringObligatoire.
customers[].namestringObligatoire. Comme la dernière livraison l’a nommé.
customers[].phonestringObligatoire.
customers[].emailstringObligatoire.
customers[].deliveriesintegerObligatoire.
customers[].addressesintegerObligatoire.
customers[].lastDeliveryAtstring (date-time)Obligatoire.
customers[].lastAddressAddress | nullObligatoire. Où est allée la dernière livraison.
nextPageTokenstring
prevPageTokenstring
offsetintegerObligatoire.
200 OK
{
  "customers": [
    {
      "id": "cus_4fQ9xLm2Za",
      "name": "string",
      "phone": "string",
      "email": "string",
      "deliveries": 0,
      "addresses": 0,
      "lastDeliveryAt": "2026-10-15T09:00:00+01:00",
      "lastAddress": {
        "id": "adr_8KwP2nVd5T",
        "name": "string",
        "address": "string",
        "doorCode": "string",
        "lat": 0,
        "lng": 0,
        "uses": 0,
        "lastUsedAt": "2026-10-15T09:00:00+01:00"
      }
    }
  ],
  "nextPageToken": "string",
  "prevPageToken": "string",
  "offset": 0
}

Erreurs

  • default Erreur

Obtenir un client

GET https://nways.ng/maps/v1/fleet/customers/{customerId}

Paramètres

NomOùTypeDescription
customerIdcheminstringObligatoire.
cURL
curl "https://nways.ng/maps/v1/fleet/customers/cus_4fQ9xLm2Za" \
  -H "X-NWays-Api-Key: VOTRE_CLE_API"
JavaScript
const res = await fetch('https://nways.ng/maps/v1/fleet/customers/cus_4fQ9xLm2Za', {
  headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY },
})
const data = await res.json()
Python
import os
import requests

res = requests.get(
    "https://nways.ng/maps/v1/fleet/customers/cus_4fQ9xLm2Za",
    headers={"X-NWays-Api-Key": os.environ["NWAYS_API_KEY"]},
    timeout=10,
)
data = res.json()

Réponse

Client

ChampTypeDescription
idstringObligatoire.
namestringObligatoire. Comme la dernière livraison l’a nommé.
phonestringObligatoire.
emailstringObligatoire.
deliveriesintegerObligatoire.
addressesintegerObligatoire.
lastDeliveryAtstring (date-time)Obligatoire.
lastAddressAddress | nullObligatoire. Où est allée la dernière livraison.
200 OK
{
  "id": "cus_4fQ9xLm2Za",
  "name": "string",
  "phone": "string",
  "email": "string",
  "deliveries": 0,
  "addresses": 0,
  "lastDeliveryAt": "2026-10-15T09:00:00+01:00",
  "lastAddress": {
    "id": "adr_8KwP2nVd5T",
    "name": "string",
    "address": "string",
    "doorCode": "string",
    "lat": 0,
    "lng": 0,
    "uses": 0,
    "lastUsedAt": "2026-10-15T09:00:00+01:00"
  }
}

Erreurs

  • default Erreur

Oublier un client et ses adresses

DELETE https://nways.ng/maps/v1/fleet/customers/{customerId}

Pour un client qui demande à être oublié. Ses livraisons restent, avec la durée de conservation de votre flotte ; une nouvelle livraison pour lui crée un nouveau client.

Paramètres

NomOùTypeDescription
customerIdcheminstringObligatoire.
cURL
curl -X DELETE "https://nways.ng/maps/v1/fleet/customers/cus_4fQ9xLm2Za" \
  -H "X-NWays-Api-Key: VOTRE_CLE_API"
JavaScript
const res = await fetch('https://nways.ng/maps/v1/fleet/customers/cus_4fQ9xLm2Za', {
  method: 'DELETE',
  headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY },
})
const data = await res.json()
Python
import os
import requests

res = requests.delete(
    "https://nways.ng/maps/v1/fleet/customers/cus_4fQ9xLm2Za",
    headers={"X-NWays-Api-Key": os.environ["NWAYS_API_KEY"]},
    timeout=10,
)
data = res.json()

Réponse

Oublié

Pas de contenu.

Erreurs

  • default Erreur

Lister les adresses d’un client, dernière utilisée d’abord

GET https://nways.ng/maps/v1/fleet/customers/{customerId}/addresses

Chaque lieu de livraison distinct (à environ 11 m près) avec son dernier nom, son adresse et son code de porte, combien de fois il a servi et quand pour la dernière fois.

Paramètres

NomOùTypeDescription
customerIdcheminstringObligatoire.
qrequêtestringCherche un nom, une adresse ou un code de porte.
limitrequêteintegerPar défaut: 25. ≥ 1, ≤ 100.
pageTokenrequêtestring
cURL
curl "https://nways.ng/maps/v1/fleet/customers/string/addresses" \
  -H "X-NWays-Api-Key: VOTRE_CLE_API"
JavaScript
const res = await fetch('https://nways.ng/maps/v1/fleet/customers/string/addresses', {
  headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY },
})
const data = await res.json()
Python
import os
import requests

res = requests.get(
    "https://nways.ng/maps/v1/fleet/customers/string/addresses",
    headers={"X-NWays-Api-Key": os.environ["NWAYS_API_KEY"]},
    timeout=10,
)
data = res.json()

Réponse

Adresses

ChampTypeDescription
addressesAddress[]Obligatoire.
addresses[].idstringObligatoire.
addresses[].namestringObligatoire.
addresses[].addressstringObligatoire.
addresses[].doorCodestringObligatoire. Le code NIPOST ou GhanaPost par lequel l’adresse commence ("" pour aucun).
addresses[].latnumberObligatoire.
addresses[].lngnumberObligatoire.
addresses[].usesintegerObligatoire. Livraisons qui y sont allées.
addresses[].lastUsedAtstring (date-time)Obligatoire.
totalintegerObligatoire. Toutes les adresses du client (pas seulement celles trouvées).
nextPageTokenstring
prevPageTokenstring
offsetintegerObligatoire.
200 OK
{
  "addresses": [
    {
      "id": "adr_8KwP2nVd5T",
      "name": "string",
      "address": "string",
      "doorCode": "string",
      "lat": 0,
      "lng": 0,
      "uses": 0,
      "lastUsedAt": "2026-10-15T09:00:00+01:00"
    }
  ],
  "total": 0,
  "nextPageToken": "string",
  "prevPageToken": "string",
  "offset": 0
}

Erreurs

  • default Erreur

Le lien de suivi du destinataire (un nouveau s’il a expiré ; aucun une fois la tâche terminée)

POST https://nways.ng/maps/v1/fleet/tasks/{id}/share

Paramètres

NomOùTypeDescription
idcheminstringObligatoire.
cURL
curl -X POST "https://nways.ng/maps/v1/fleet/tasks/string/share" \
  -H "X-NWays-Api-Key: VOTRE_CLE_API"
JavaScript
const res = await fetch('https://nways.ng/maps/v1/fleet/tasks/string/share', {
  method: 'POST',
  headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY },
})
const data = await res.json()
Python
import os
import requests

res = requests.post(
    "https://nways.ng/maps/v1/fleet/tasks/string/share",
    headers={"X-NWays-Api-Key": os.environ["NWAYS_API_KEY"]},
    timeout=10,
)
data = res.json()

Réponse

Lien

ChampTypeDescription
urlstring (uri)Obligatoire.
expiresAtstring (date-time)Obligatoire.
200 OK
{
  "url": "https://nways.ng/t/3fT9kQ2xVbN7LmP0aZc4RwYe",
  "expiresAt": "2026-10-15T09:00:00+01:00"
}

Erreurs

  • default Erreur