N-Ways
Documentação para programadoresEntregas e seguimento

Entregas e ligações de seguimento

As entregas (tarefas) da criação à entrega, com a hora de chegada em direto, a edição, os seus locais de recolha e clientes, e as ligações de seguimento que envia aos clientes.

Nesta página
Nota:

Envie a sua chave com key=A_SUA_CHAVE_API no endereço, ou no cabeçalho X-NWays-Api-Key. Chaves de API

Endereço base: https://nways.ng/maps/v1/fleet

A prova de entrega da tarefa (fotografias, assinaturas) e a nota do estafeta

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

Parâmetros

NomeOndeTipoDescrição
idcaminhostringObrigatório.
cURL
curl "https://nways.ng/maps/v1/fleet/tasks/string/proofs" \
  -H "X-NWays-Api-Key: A_SUA_CHAVE_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()

Resposta

Provas

CampoTipoDescrição
taskIdstringObrigatório.
proofsProof[]Obrigatório.
proofs[].idstringObrigatório.
proofs[].kindstringObrigatório. Um de: photo, signature.
proofs[].contentTypestringObrigatório. Um de: image/jpeg, image/png, image/webp.
proofs[].bytesintegerObrigatório.
proofs[].latnumber | nullObrigatório.
proofs[].lngnumber | nullObrigatório.
proofs[].bystringObrigatório. O nome do estafeta.
proofs[].createdAtstring (date-time)Obrigatório.
endNotestringObrigatório. O que o estafeta escreveu ao terminar.
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"
}

Erros

  • default Erro

A imagem de uma prova (JPEG, PNG ou WebP), guardada enquanto a sua tarefa for guardada

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

Parâmetros

NomeOndeTipoDescrição
proofIdcaminhostringObrigatório.
cURL
curl "https://nways.ng/maps/v1/fleet/proofs/string" \
  -H "X-NWays-Api-Key: A_SUA_CHAVE_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()

Resposta

A imagem

Erros

  • default Erro

Listar tarefas, das mais recentes para as mais antigas

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

Parâmetros

NomeOndeTipoDescrição
statusconsultastringactive = assigned, picked_up ou arriving. Um de: created, assigned, picked_up, arriving, completed, failed, cancelled, active.
vehicleIdconsultastring
limitconsultaintegerPredefinição: 100. ≥ 1, ≤ 500.
pageTokenconsultastringnextPageToken da página anterior.
cURL
curl "https://nways.ng/maps/v1/fleet/tasks" \
  -H "X-NWays-Api-Key: A_SUA_CHAVE_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()

Resposta

Tarefas

CampoTipoDescrição
tasksTask[]Obrigatório.
tasks[].idstringObrigatório.
tasks[].refstringObrigatório. O número curto da entrega no projeto, atribuído pela N-Ways ("1042", mostrado como #1042): para pessoas, em alertas e listas.
tasks[].statusstringObrigatório. Um de: created, assigned, picked_up, arriving, completed, failed, cancelled.
tasks[].vehicleIdstring | nullObrigatório.
tasks[].pickupStop | nullObrigatório.
tasks[].dropoffStopObrigatório.
tasks[].dropoff.latnumberObrigatório.
tasks[].dropoff.lngnumberObrigatório.
tasks[].dropoff.namestringAté 120 caracteres.
tasks[].dropoff.addressstringAté 300 caracteres.
tasks[].recipientNamestringObrigatório.
tasks[].recipientPhonestring
tasks[].notesstringObrigatório.
tasks[].langstringObrigatório. Um de: en, fr, pt.
tasks[].arrivingSintegerObrigatório.
tasks[].etaETA | nullObrigatório. Nulo até chegar uma posição recente, e depois de a tarefa terminar.
tasks[].dueAtstring (date-time) | nullObrigatório.
tasks[].latebooleanObrigatório. Em aberto e com dueAt ultrapassado, ou prevista para depois dele.
tasks[].trackingUrlstring (uri) | nullObrigatório. Nulo depois de expirar.
tasks[].trackingExpiresAtstring (date-time) | nullObrigatório.
tasks[].failureReasonstring
tasks[].createdAtstring (date-time)Obrigatório.
tasks[].assignedAtstring (date-time) | nullObrigatório.
tasks[].pickedUpAtstring (date-time) | nullObrigatório.
tasks[].arrivingAtstring (date-time) | nullObrigatório.
tasks[].endedAtstring (date-time) | nullObrigatório.
tasks[].areaArea | nullA área própria da entrega: sair dela gera asset.geofence_exit.
tasks[].proofsProof[]Apenas em GET /tasks/{id}: as fotografias e assinaturas do estafeta (N-Ways Business).
tasks[].proofs[].idstringObrigatório.
tasks[].proofs[].kindstringObrigatório. Um de: photo, signature.
tasks[].proofs[].contentTypestringObrigatório. Um de: image/jpeg, image/png, image/webp.
tasks[].proofs[].bytesintegerObrigatório.
tasks[].proofs[].latnumber | nullObrigatório.
tasks[].proofs[].lngnumber | nullObrigatório.
tasks[].proofs[].bystringObrigatório. O nome do estafeta.
tasks[].proofs[].createdAtstring (date-time)Obrigatório.
tasks[].endNotestringApenas em GET /tasks/{id}: o que o estafeta escreveu ao terminar.
tasks[].recipientEmailstring
tasks[].proofRequiredstring[]O da própria entrega, senão o das suas definições.
tasks[].proofRequiredOverridestring[] | null
tasks[].packageSizestring | nullUm de: small, medium, large, null.
tasks[].itemDescriptionstring
tasks[].referencestring
tasks[].scheduledAtstring (date-time) | null
tasks[].connectionIdstring | nullA ligação do motorista N-Ways que a aceitou.
tasks[].acceptedAtstring (date-time) | null
tasks[].startedAtstring (date-time) | null
tasks[].editablestringO que PATCH /tasks/{id} pode alterar agora: tudo, apenas notes e dueAt (recolhida ou iniciada), ou nada (terminada). Um de: all, limited, none.
tasks[].editedAtstring (date-time) | nullA última edição.
tasks[].editedFieldsstring[]O que a última edição alterou.
tasks[].pinDeliveryPinDeliveryComo o PIN de entrega está a chegar ao cliente, quando a entrega pede um e os PIN vão por WhatsApp. Nunca o próprio PIN.
tasks[].pinDelivery.channelstringObrigatório. Um de: whatsapp, email, none.
tasks[].pinDelivery.statestringObrigatório. Um de: sending, sent, delivered, read, failed.
tasks[].pinDelivery.whatsappErrorCodeinteger | nullObrigatório. A falha do WhatsApp (131026: não está no WhatsApp), guardada depois de o PIN ter ido por e-mail.
tasks[].pinDelivery.needsEmailbooleanObrigatório. O cliente não recebeu o PIN: envie-o com POST /tasks/{id}/pin-email.
tasks[].pinDelivery.updatedAtstring (date-time)Obrigatório.
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"
}

Erros

  • default Erro

Criar uma entrega

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

Uma tarefa tem uma recolha opcional e um local de entrega. Indique vehicleId para a atribuir de imediato. A resposta traz o trackingUrl do destinatário (válido 72 horas, ou até uma hora depois de a tarefa terminar). Eventos: task.created (e task.assigned).

Corpo do pedido

CampoTipoDescrição
idstringO seu id para ela; a N-Ways cria um (job_…) quando o omite.
pickupStop
pickup.latnumberObrigatório.
pickup.lngnumberObrigatório.
pickup.namestringAté 120 caracteres.
pickup.addressstringAté 300 caracteres.
pickupPlaceIdstringUm dos seus locais de recolha como recolha (o nome, o endereço e a posição são copiados), em vez de pickup.
dropoffStopObrigatório.
dropoff.latnumberObrigatório.
dropoff.lngnumberObrigatório.
dropoff.namestringAté 120 caracteres.
dropoff.addressstringAté 300 caracteres.
recipientNamestringPara os seus registos; nunca é mostrado na página de seguimento. Até 100 caracteres.
recipientPhonestringPara que o estafeta possa ligar ao cliente a partir da N-Ways Business; nunca é mostrado na página de seguimento. Até 32 caracteres.
notesstringAté 500 caracteres.
langstringO idioma da página de seguimento. Um de: en, fr, pt. Predefinição: en.
arrivingSintegerSegundos antes da chegada a partir dos quais a tarefa passa a arriving. Predefinição: 180. ≥ 30, ≤ 1800.
vehicleIdstring
dueAtstring (date-time)O prazo: depois dele (ou se prevista para depois dele) a tarefa fica late.
areaAreaUm círculo (lat, lng, radiusM 50–100000) ou um polígono (coordinates: 3–500 pontos [lng, lat]).
area.typestringObrigatório. Um de: circle, polygon.
area.latnumber
area.lngnumber
area.radiusMnumber≥ 50, ≤ 100000.
area.coordinatesnumber[][]
recipientEmailstring (email)A N-Ways envia ao cliente por e-mail as novidades (a caminho, a chegar, entregue) com a ligação de seguimento.
proofRequiredstring[]O que o motorista tem de apresentar para entregar; omita para usar o proofRequired das suas definições.
packageSizestringUm de: small, medium, large.
itemDescriptionstringAté 200 caracteres.
referencestringA sua própria referência (um número de fatura ou de encomenda). Até 64 caracteres.
scheduledAtstring (date-time)Uma recolha mais tarde (até 60 dias à frente): o motorista recebe um lembrete antes.
cURL
curl -X POST "https://nways.ng/maps/v1/fleet/tasks" \
  -H "X-NWays-Api-Key: A_SUA_CHAVE_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()

Resposta

Criado

CampoTipoDescrição
idstringObrigatório.
refstringObrigatório. O número curto da entrega no projeto, atribuído pela N-Ways ("1042", mostrado como #1042): para pessoas, em alertas e listas.
statusstringObrigatório. Um de: created, assigned, picked_up, arriving, completed, failed, cancelled.
vehicleIdstring | nullObrigatório.
pickupStop | nullObrigatório.
dropoffStopObrigatório.
dropoff.latnumberObrigatório.
dropoff.lngnumberObrigatório.
dropoff.namestringAté 120 caracteres.
dropoff.addressstringAté 300 caracteres.
recipientNamestringObrigatório.
recipientPhonestring
notesstringObrigatório.
langstringObrigatório. Um de: en, fr, pt.
arrivingSintegerObrigatório.
etaETA | nullObrigatório. Nulo até chegar uma posição recente, e depois de a tarefa terminar.
dueAtstring (date-time) | nullObrigatório.
latebooleanObrigatório. Em aberto e com dueAt ultrapassado, ou prevista para depois dele.
trackingUrlstring (uri) | nullObrigatório. Nulo depois de expirar.
trackingExpiresAtstring (date-time) | nullObrigatório.
failureReasonstring
createdAtstring (date-time)Obrigatório.
assignedAtstring (date-time) | nullObrigatório.
pickedUpAtstring (date-time) | nullObrigatório.
arrivingAtstring (date-time) | nullObrigatório.
endedAtstring (date-time) | nullObrigatório.
areaArea | nullA área própria da entrega: sair dela gera asset.geofence_exit.
proofsProof[]Apenas em GET /tasks/{id}: as fotografias e assinaturas do estafeta (N-Ways Business).
proofs[].idstringObrigatório.
proofs[].kindstringObrigatório. Um de: photo, signature.
proofs[].contentTypestringObrigatório. Um de: image/jpeg, image/png, image/webp.
proofs[].bytesintegerObrigatório.
proofs[].latnumber | nullObrigatório.
proofs[].lngnumber | nullObrigatório.
proofs[].bystringObrigatório. O nome do estafeta.
proofs[].createdAtstring (date-time)Obrigatório.
endNotestringApenas em GET /tasks/{id}: o que o estafeta escreveu ao terminar.
recipientEmailstring
proofRequiredstring[]O da própria entrega, senão o das suas definições.
proofRequiredOverridestring[] | null
packageSizestring | nullUm de: small, medium, large, null.
itemDescriptionstring
referencestring
scheduledAtstring (date-time) | null
connectionIdstring | nullA ligação do motorista N-Ways que a aceitou.
acceptedAtstring (date-time) | null
startedAtstring (date-time) | null
editablestringO que PATCH /tasks/{id} pode alterar agora: tudo, apenas notes e dueAt (recolhida ou iniciada), ou nada (terminada). Um de: all, limited, none.
editedAtstring (date-time) | nullA última edição.
editedFieldsstring[]O que a última edição alterou.
pinDeliveryPinDeliveryComo o PIN de entrega está a chegar ao cliente, quando a entrega pede um e os PIN vão por WhatsApp. Nunca o próprio PIN.
pinDelivery.channelstringObrigatório. Um de: whatsapp, email, none.
pinDelivery.statestringObrigatório. Um de: sending, sent, delivered, read, failed.
pinDelivery.whatsappErrorCodeinteger | nullObrigatório. A falha do WhatsApp (131026: não está no WhatsApp), guardada depois de o PIN ter ido por e-mail.
pinDelivery.needsEmailbooleanObrigatório. O cliente não recebeu o PIN: envie-o com POST /tasks/{id}/pin-email.
pinDelivery.updatedAtstring (date-time)Obrigatório.
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"
  }
}

Erros

  • 403 DELIVERIES_OFF (a N-Ways desativou as novas entregas para a sua organização) ou ORGANISATION_SUSPENDED; a mensagem diz porquê.
  • default Erro

Obter uma tarefa com a sua ETA em direto

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

Parâmetros

NomeOndeTipoDescrição
idcaminhostringObrigatório.
cURL
curl "https://nways.ng/maps/v1/fleet/tasks/string" \
  -H "X-NWays-Api-Key: A_SUA_CHAVE_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()

Resposta

Tarefa

CampoTipoDescrição
idstringObrigatório.
refstringObrigatório. O número curto da entrega no projeto, atribuído pela N-Ways ("1042", mostrado como #1042): para pessoas, em alertas e listas.
statusstringObrigatório. Um de: created, assigned, picked_up, arriving, completed, failed, cancelled.
vehicleIdstring | nullObrigatório.
pickupStop | nullObrigatório.
dropoffStopObrigatório.
dropoff.latnumberObrigatório.
dropoff.lngnumberObrigatório.
dropoff.namestringAté 120 caracteres.
dropoff.addressstringAté 300 caracteres.
recipientNamestringObrigatório.
recipientPhonestring
notesstringObrigatório.
langstringObrigatório. Um de: en, fr, pt.
arrivingSintegerObrigatório.
etaETA | nullObrigatório. Nulo até chegar uma posição recente, e depois de a tarefa terminar.
dueAtstring (date-time) | nullObrigatório.
latebooleanObrigatório. Em aberto e com dueAt ultrapassado, ou prevista para depois dele.
trackingUrlstring (uri) | nullObrigatório. Nulo depois de expirar.
trackingExpiresAtstring (date-time) | nullObrigatório.
failureReasonstring
createdAtstring (date-time)Obrigatório.
assignedAtstring (date-time) | nullObrigatório.
pickedUpAtstring (date-time) | nullObrigatório.
arrivingAtstring (date-time) | nullObrigatório.
endedAtstring (date-time) | nullObrigatório.
areaArea | nullA área própria da entrega: sair dela gera asset.geofence_exit.
proofsProof[]Apenas em GET /tasks/{id}: as fotografias e assinaturas do estafeta (N-Ways Business).
proofs[].idstringObrigatório.
proofs[].kindstringObrigatório. Um de: photo, signature.
proofs[].contentTypestringObrigatório. Um de: image/jpeg, image/png, image/webp.
proofs[].bytesintegerObrigatório.
proofs[].latnumber | nullObrigatório.
proofs[].lngnumber | nullObrigatório.
proofs[].bystringObrigatório. O nome do estafeta.
proofs[].createdAtstring (date-time)Obrigatório.
endNotestringApenas em GET /tasks/{id}: o que o estafeta escreveu ao terminar.
recipientEmailstring
proofRequiredstring[]O da própria entrega, senão o das suas definições.
proofRequiredOverridestring[] | null
packageSizestring | nullUm de: small, medium, large, null.
itemDescriptionstring
referencestring
scheduledAtstring (date-time) | null
connectionIdstring | nullA ligação do motorista N-Ways que a aceitou.
acceptedAtstring (date-time) | null
startedAtstring (date-time) | null
editablestringO que PATCH /tasks/{id} pode alterar agora: tudo, apenas notes e dueAt (recolhida ou iniciada), ou nada (terminada). Um de: all, limited, none.
editedAtstring (date-time) | nullA última edição.
editedFieldsstring[]O que a última edição alterou.
pinDeliveryPinDeliveryComo o PIN de entrega está a chegar ao cliente, quando a entrega pede um e os PIN vão por WhatsApp. Nunca o próprio PIN.
pinDelivery.channelstringObrigatório. Um de: whatsapp, email, none.
pinDelivery.statestringObrigatório. Um de: sending, sent, delivered, read, failed.
pinDelivery.whatsappErrorCodeinteger | nullObrigatório. A falha do WhatsApp (131026: não está no WhatsApp), guardada depois de o PIN ter ido por e-mail.
pinDelivery.needsEmailbooleanObrigatório. O cliente não recebeu o PIN: envie-o com POST /tasks/{id}/pin-email.
pinDelivery.updatedAtstring (date-time)Obrigatório.
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"
  }
}

Erros

  • default Erro

Editar uma entrega

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

Altera qualquer um dos campos abaixo, verificados como na criação de uma tarefa; omita o que fica igual, envie null para limpar um campo opcional. Responde com a tarefa, com os campos alterados em editedFields e no cabeçalho X-NWays-Changed (nada alterado: nenhum evento).

Quando. Tudo pode mudar até a entrega ser recolhida (editable: all): está created, ou assigned sem pickedUpAt (e, para um motorista N-Ways, antes de a iniciar: o pedido pode estar à espera ou aceite). Depois, apenas notes e dueAt até ao fim (editable: limited); os outros campos respondem 409 TASK_UNDER_WAY, uma tarefa terminada 409 TASK_ENDED. Quem a tem muda com POST /tasks/{id}/assign ou /dispatch, nunca aqui.

Depois. A ETA é recalculada e a ligação de seguimento mantém-se. Evento task.updated (data.task, data.changed). Um pedido ainda à espera de um motorista N-Ways continua a ser o mesmo pedido com os novos detalhes (e pelo menos um minuto para responder); o motorista é avisado quando a recolha, a entrega ou os horários mudam. Um motorista que a aceitou (N-Ways ou N-Ways Business) é avisado do que mudou. Um cliente a quem a N-Ways já enviou e-mail recebe um e-mail de "atualização" quando o local de entrega ou um horário muda, no máximo um a cada 10 minutos.

Parâmetros

NomeOndeTipoDescrição
idcaminhostringObrigatório.

Corpo do pedido

CampoTipoDescrição
pickupStop | nullnull retira-o (não para uma entrega enviada a um motorista N-Ways).
pickupPlaceIdstringUm dos seus locais de recolha como nova recolha, em vez de pickup.
dropoffStop
dropoff.latnumberObrigatório.
dropoff.lngnumberObrigatório.
dropoff.namestringAté 120 caracteres.
dropoff.addressstringAté 300 caracteres.
recipientNamestringAté 100 caracteres.
recipientPhonestringAté 32 caracteres.
recipientEmailstringUm endereço de e-mail, ou "" para nenhum.
notesstringAté 500 caracteres.
itemDescriptionstringAté 200 caracteres.
packageSizestring | nullUm de: small, medium, large, null.
referencestringAté 64 caracteres.
dueAtstring (date-time) | null
scheduledAtstring (date-time) | nullDe agora até 60 dias à frente.
proofRequiredstring[] | nullnull: o proofRequired das suas definições.
areaArea | null
langstringUm de: en, fr, pt.
arrivingSinteger≥ 30, ≤ 1800.
cURL
curl -X PATCH "https://nways.ng/maps/v1/fleet/tasks/string" \
  -H "X-NWays-Api-Key: A_SUA_CHAVE_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()

Resposta

A tarefa tal como está agora

CampoTipoDescrição
idstringObrigatório.
refstringObrigatório. O número curto da entrega no projeto, atribuído pela N-Ways ("1042", mostrado como #1042): para pessoas, em alertas e listas.
statusstringObrigatório. Um de: created, assigned, picked_up, arriving, completed, failed, cancelled.
vehicleIdstring | nullObrigatório.
pickupStop | nullObrigatório.
dropoffStopObrigatório.
dropoff.latnumberObrigatório.
dropoff.lngnumberObrigatório.
dropoff.namestringAté 120 caracteres.
dropoff.addressstringAté 300 caracteres.
recipientNamestringObrigatório.
recipientPhonestring
notesstringObrigatório.
langstringObrigatório. Um de: en, fr, pt.
arrivingSintegerObrigatório.
etaETA | nullObrigatório. Nulo até chegar uma posição recente, e depois de a tarefa terminar.
dueAtstring (date-time) | nullObrigatório.
latebooleanObrigatório. Em aberto e com dueAt ultrapassado, ou prevista para depois dele.
trackingUrlstring (uri) | nullObrigatório. Nulo depois de expirar.
trackingExpiresAtstring (date-time) | nullObrigatório.
failureReasonstring
createdAtstring (date-time)Obrigatório.
assignedAtstring (date-time) | nullObrigatório.
pickedUpAtstring (date-time) | nullObrigatório.
arrivingAtstring (date-time) | nullObrigatório.
endedAtstring (date-time) | nullObrigatório.
areaArea | nullA área própria da entrega: sair dela gera asset.geofence_exit.
proofsProof[]Apenas em GET /tasks/{id}: as fotografias e assinaturas do estafeta (N-Ways Business).
proofs[].idstringObrigatório.
proofs[].kindstringObrigatório. Um de: photo, signature.
proofs[].contentTypestringObrigatório. Um de: image/jpeg, image/png, image/webp.
proofs[].bytesintegerObrigatório.
proofs[].latnumber | nullObrigatório.
proofs[].lngnumber | nullObrigatório.
proofs[].bystringObrigatório. O nome do estafeta.
proofs[].createdAtstring (date-time)Obrigatório.
endNotestringApenas em GET /tasks/{id}: o que o estafeta escreveu ao terminar.
recipientEmailstring
proofRequiredstring[]O da própria entrega, senão o das suas definições.
proofRequiredOverridestring[] | null
packageSizestring | nullUm de: small, medium, large, null.
itemDescriptionstring
referencestring
scheduledAtstring (date-time) | null
connectionIdstring | nullA ligação do motorista N-Ways que a aceitou.
acceptedAtstring (date-time) | null
startedAtstring (date-time) | null
editablestringO que PATCH /tasks/{id} pode alterar agora: tudo, apenas notes e dueAt (recolhida ou iniciada), ou nada (terminada). Um de: all, limited, none.
editedAtstring (date-time) | nullA última edição.
editedFieldsstring[]O que a última edição alterou.
pinDeliveryPinDeliveryComo o PIN de entrega está a chegar ao cliente, quando a entrega pede um e os PIN vão por WhatsApp. Nunca o próprio PIN.
pinDelivery.channelstringObrigatório. Um de: whatsapp, email, none.
pinDelivery.statestringObrigatório. Um de: sending, sent, delivered, read, failed.
pinDelivery.whatsappErrorCodeinteger | nullObrigatório. A falha do WhatsApp (131026: não está no WhatsApp), guardada depois de o PIN ter ido por e-mail.
pinDelivery.needsEmailbooleanObrigatório. O cliente não recebeu o PIN: envie-o com POST /tasks/{id}/pin-email.
pinDelivery.updatedAtstring (date-time)Obrigatório.
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"
  }
}

Erros

  • 409 TASK_UNDER_WAY (agora só notes e dueAt podem mudar) ou TASK_ENDED.
  • default Erro

Atribuir (ou reatribuir) um veículo — created|assigned → assigned; evento task.assigned

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

Parâmetros

NomeOndeTipoDescrição
idcaminhostringObrigatório.

Corpo do pedido

CampoTipoDescrição
vehicleIdstringObrigatório.
cURL
curl -X POST "https://nways.ng/maps/v1/fleet/tasks/string/assign" \
  -H "X-NWays-Api-Key: A_SUA_CHAVE_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()

Resposta

Tarefa

CampoTipoDescrição
idstringObrigatório.
refstringObrigatório. O número curto da entrega no projeto, atribuído pela N-Ways ("1042", mostrado como #1042): para pessoas, em alertas e listas.
statusstringObrigatório. Um de: created, assigned, picked_up, arriving, completed, failed, cancelled.
vehicleIdstring | nullObrigatório.
pickupStop | nullObrigatório.
dropoffStopObrigatório.
dropoff.latnumberObrigatório.
dropoff.lngnumberObrigatório.
dropoff.namestringAté 120 caracteres.
dropoff.addressstringAté 300 caracteres.
recipientNamestringObrigatório.
recipientPhonestring
notesstringObrigatório.
langstringObrigatório. Um de: en, fr, pt.
arrivingSintegerObrigatório.
etaETA | nullObrigatório. Nulo até chegar uma posição recente, e depois de a tarefa terminar.
dueAtstring (date-time) | nullObrigatório.
latebooleanObrigatório. Em aberto e com dueAt ultrapassado, ou prevista para depois dele.
trackingUrlstring (uri) | nullObrigatório. Nulo depois de expirar.
trackingExpiresAtstring (date-time) | nullObrigatório.
failureReasonstring
createdAtstring (date-time)Obrigatório.
assignedAtstring (date-time) | nullObrigatório.
pickedUpAtstring (date-time) | nullObrigatório.
arrivingAtstring (date-time) | nullObrigatório.
endedAtstring (date-time) | nullObrigatório.
areaArea | nullA área própria da entrega: sair dela gera asset.geofence_exit.
proofsProof[]Apenas em GET /tasks/{id}: as fotografias e assinaturas do estafeta (N-Ways Business).
proofs[].idstringObrigatório.
proofs[].kindstringObrigatório. Um de: photo, signature.
proofs[].contentTypestringObrigatório. Um de: image/jpeg, image/png, image/webp.
proofs[].bytesintegerObrigatório.
proofs[].latnumber | nullObrigatório.
proofs[].lngnumber | nullObrigatório.
proofs[].bystringObrigatório. O nome do estafeta.
proofs[].createdAtstring (date-time)Obrigatório.
endNotestringApenas em GET /tasks/{id}: o que o estafeta escreveu ao terminar.
recipientEmailstring
proofRequiredstring[]O da própria entrega, senão o das suas definições.
proofRequiredOverridestring[] | null
packageSizestring | nullUm de: small, medium, large, null.
itemDescriptionstring
referencestring
scheduledAtstring (date-time) | null
connectionIdstring | nullA ligação do motorista N-Ways que a aceitou.
acceptedAtstring (date-time) | null
startedAtstring (date-time) | null
editablestringO que PATCH /tasks/{id} pode alterar agora: tudo, apenas notes e dueAt (recolhida ou iniciada), ou nada (terminada). Um de: all, limited, none.
editedAtstring (date-time) | nullA última edição.
editedFieldsstring[]O que a última edição alterou.
pinDeliveryPinDeliveryComo o PIN de entrega está a chegar ao cliente, quando a entrega pede um e os PIN vão por WhatsApp. Nunca o próprio PIN.
pinDelivery.channelstringObrigatório. Um de: whatsapp, email, none.
pinDelivery.statestringObrigatório. Um de: sending, sent, delivered, read, failed.
pinDelivery.whatsappErrorCodeinteger | nullObrigatório. A falha do WhatsApp (131026: não está no WhatsApp), guardada depois de o PIN ter ido por e-mail.
pinDelivery.needsEmailbooleanObrigatório. O cliente não recebeu o PIN: envie-o com POST /tasks/{id}/pin-email.
pinDelivery.updatedAtstring (date-time)Obrigatório.
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"
  }
}

Erros

  • default Erro

Marcar como recolhida — assigned → picked_up

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

Parâmetros

NomeOndeTipoDescrição
idcaminhostringObrigatório.
cURL
curl -X POST "https://nways.ng/maps/v1/fleet/tasks/string/pickup" \
  -H "X-NWays-Api-Key: A_SUA_CHAVE_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()

Resposta

Tarefa

CampoTipoDescrição
idstringObrigatório.
refstringObrigatório. O número curto da entrega no projeto, atribuído pela N-Ways ("1042", mostrado como #1042): para pessoas, em alertas e listas.
statusstringObrigatório. Um de: created, assigned, picked_up, arriving, completed, failed, cancelled.
vehicleIdstring | nullObrigatório.
pickupStop | nullObrigatório.
dropoffStopObrigatório.
dropoff.latnumberObrigatório.
dropoff.lngnumberObrigatório.
dropoff.namestringAté 120 caracteres.
dropoff.addressstringAté 300 caracteres.
recipientNamestringObrigatório.
recipientPhonestring
notesstringObrigatório.
langstringObrigatório. Um de: en, fr, pt.
arrivingSintegerObrigatório.
etaETA | nullObrigatório. Nulo até chegar uma posição recente, e depois de a tarefa terminar.
dueAtstring (date-time) | nullObrigatório.
latebooleanObrigatório. Em aberto e com dueAt ultrapassado, ou prevista para depois dele.
trackingUrlstring (uri) | nullObrigatório. Nulo depois de expirar.
trackingExpiresAtstring (date-time) | nullObrigatório.
failureReasonstring
createdAtstring (date-time)Obrigatório.
assignedAtstring (date-time) | nullObrigatório.
pickedUpAtstring (date-time) | nullObrigatório.
arrivingAtstring (date-time) | nullObrigatório.
endedAtstring (date-time) | nullObrigatório.
areaArea | nullA área própria da entrega: sair dela gera asset.geofence_exit.
proofsProof[]Apenas em GET /tasks/{id}: as fotografias e assinaturas do estafeta (N-Ways Business).
proofs[].idstringObrigatório.
proofs[].kindstringObrigatório. Um de: photo, signature.
proofs[].contentTypestringObrigatório. Um de: image/jpeg, image/png, image/webp.
proofs[].bytesintegerObrigatório.
proofs[].latnumber | nullObrigatório.
proofs[].lngnumber | nullObrigatório.
proofs[].bystringObrigatório. O nome do estafeta.
proofs[].createdAtstring (date-time)Obrigatório.
endNotestringApenas em GET /tasks/{id}: o que o estafeta escreveu ao terminar.
recipientEmailstring
proofRequiredstring[]O da própria entrega, senão o das suas definições.
proofRequiredOverridestring[] | null
packageSizestring | nullUm de: small, medium, large, null.
itemDescriptionstring
referencestring
scheduledAtstring (date-time) | null
connectionIdstring | nullA ligação do motorista N-Ways que a aceitou.
acceptedAtstring (date-time) | null
startedAtstring (date-time) | null
editablestringO que PATCH /tasks/{id} pode alterar agora: tudo, apenas notes e dueAt (recolhida ou iniciada), ou nada (terminada). Um de: all, limited, none.
editedAtstring (date-time) | nullA última edição.
editedFieldsstring[]O que a última edição alterou.
pinDeliveryPinDeliveryComo o PIN de entrega está a chegar ao cliente, quando a entrega pede um e os PIN vão por WhatsApp. Nunca o próprio PIN.
pinDelivery.channelstringObrigatório. Um de: whatsapp, email, none.
pinDelivery.statestringObrigatório. Um de: sending, sent, delivered, read, failed.
pinDelivery.whatsappErrorCodeinteger | nullObrigatório. A falha do WhatsApp (131026: não está no WhatsApp), guardada depois de o PIN ter ido por e-mail.
pinDelivery.needsEmailbooleanObrigatório. O cliente não recebeu o PIN: envie-o com POST /tasks/{id}/pin-email.
pinDelivery.updatedAtstring (date-time)Obrigatório.
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"
  }
}

Erros

  • default Erro

Marcar como entregue — assigned|picked_up|arriving → completed; evento task.completed

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

Parâmetros

NomeOndeTipoDescrição
idcaminhostringObrigatório.
cURL
curl -X POST "https://nways.ng/maps/v1/fleet/tasks/string/complete" \
  -H "X-NWays-Api-Key: A_SUA_CHAVE_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()

Resposta

Tarefa

CampoTipoDescrição
idstringObrigatório.
refstringObrigatório. O número curto da entrega no projeto, atribuído pela N-Ways ("1042", mostrado como #1042): para pessoas, em alertas e listas.
statusstringObrigatório. Um de: created, assigned, picked_up, arriving, completed, failed, cancelled.
vehicleIdstring | nullObrigatório.
pickupStop | nullObrigatório.
dropoffStopObrigatório.
dropoff.latnumberObrigatório.
dropoff.lngnumberObrigatório.
dropoff.namestringAté 120 caracteres.
dropoff.addressstringAté 300 caracteres.
recipientNamestringObrigatório.
recipientPhonestring
notesstringObrigatório.
langstringObrigatório. Um de: en, fr, pt.
arrivingSintegerObrigatório.
etaETA | nullObrigatório. Nulo até chegar uma posição recente, e depois de a tarefa terminar.
dueAtstring (date-time) | nullObrigatório.
latebooleanObrigatório. Em aberto e com dueAt ultrapassado, ou prevista para depois dele.
trackingUrlstring (uri) | nullObrigatório. Nulo depois de expirar.
trackingExpiresAtstring (date-time) | nullObrigatório.
failureReasonstring
createdAtstring (date-time)Obrigatório.
assignedAtstring (date-time) | nullObrigatório.
pickedUpAtstring (date-time) | nullObrigatório.
arrivingAtstring (date-time) | nullObrigatório.
endedAtstring (date-time) | nullObrigatório.
areaArea | nullA área própria da entrega: sair dela gera asset.geofence_exit.
proofsProof[]Apenas em GET /tasks/{id}: as fotografias e assinaturas do estafeta (N-Ways Business).
proofs[].idstringObrigatório.
proofs[].kindstringObrigatório. Um de: photo, signature.
proofs[].contentTypestringObrigatório. Um de: image/jpeg, image/png, image/webp.
proofs[].bytesintegerObrigatório.
proofs[].latnumber | nullObrigatório.
proofs[].lngnumber | nullObrigatório.
proofs[].bystringObrigatório. O nome do estafeta.
proofs[].createdAtstring (date-time)Obrigatório.
endNotestringApenas em GET /tasks/{id}: o que o estafeta escreveu ao terminar.
recipientEmailstring
proofRequiredstring[]O da própria entrega, senão o das suas definições.
proofRequiredOverridestring[] | null
packageSizestring | nullUm de: small, medium, large, null.
itemDescriptionstring
referencestring
scheduledAtstring (date-time) | null
connectionIdstring | nullA ligação do motorista N-Ways que a aceitou.
acceptedAtstring (date-time) | null
startedAtstring (date-time) | null
editablestringO que PATCH /tasks/{id} pode alterar agora: tudo, apenas notes e dueAt (recolhida ou iniciada), ou nada (terminada). Um de: all, limited, none.
editedAtstring (date-time) | nullA última edição.
editedFieldsstring[]O que a última edição alterou.
pinDeliveryPinDeliveryComo o PIN de entrega está a chegar ao cliente, quando a entrega pede um e os PIN vão por WhatsApp. Nunca o próprio PIN.
pinDelivery.channelstringObrigatório. Um de: whatsapp, email, none.
pinDelivery.statestringObrigatório. Um de: sending, sent, delivered, read, failed.
pinDelivery.whatsappErrorCodeinteger | nullObrigatório. A falha do WhatsApp (131026: não está no WhatsApp), guardada depois de o PIN ter ido por e-mail.
pinDelivery.needsEmailbooleanObrigatório. O cliente não recebeu o PIN: envie-o com POST /tasks/{id}/pin-email.
pinDelivery.updatedAtstring (date-time)Obrigatório.
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"
  }
}

Erros

  • default Erro

Marcar como falhada — qualquer estado em aberto → failed; evento task.failed

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

Parâmetros

NomeOndeTipoDescrição
idcaminhostringObrigatório.

Corpo do pedido

CampoTipoDescrição
reasonstringAté 200 caracteres.
cURL
curl -X POST "https://nways.ng/maps/v1/fleet/tasks/string/fail" \
  -H "X-NWays-Api-Key: A_SUA_CHAVE_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()

Resposta

Tarefa

CampoTipoDescrição
idstringObrigatório.
refstringObrigatório. O número curto da entrega no projeto, atribuído pela N-Ways ("1042", mostrado como #1042): para pessoas, em alertas e listas.
statusstringObrigatório. Um de: created, assigned, picked_up, arriving, completed, failed, cancelled.
vehicleIdstring | nullObrigatório.
pickupStop | nullObrigatório.
dropoffStopObrigatório.
dropoff.latnumberObrigatório.
dropoff.lngnumberObrigatório.
dropoff.namestringAté 120 caracteres.
dropoff.addressstringAté 300 caracteres.
recipientNamestringObrigatório.
recipientPhonestring
notesstringObrigatório.
langstringObrigatório. Um de: en, fr, pt.
arrivingSintegerObrigatório.
etaETA | nullObrigatório. Nulo até chegar uma posição recente, e depois de a tarefa terminar.
dueAtstring (date-time) | nullObrigatório.
latebooleanObrigatório. Em aberto e com dueAt ultrapassado, ou prevista para depois dele.
trackingUrlstring (uri) | nullObrigatório. Nulo depois de expirar.
trackingExpiresAtstring (date-time) | nullObrigatório.
failureReasonstring
createdAtstring (date-time)Obrigatório.
assignedAtstring (date-time) | nullObrigatório.
pickedUpAtstring (date-time) | nullObrigatório.
arrivingAtstring (date-time) | nullObrigatório.
endedAtstring (date-time) | nullObrigatório.
areaArea | nullA área própria da entrega: sair dela gera asset.geofence_exit.
proofsProof[]Apenas em GET /tasks/{id}: as fotografias e assinaturas do estafeta (N-Ways Business).
proofs[].idstringObrigatório.
proofs[].kindstringObrigatório. Um de: photo, signature.
proofs[].contentTypestringObrigatório. Um de: image/jpeg, image/png, image/webp.
proofs[].bytesintegerObrigatório.
proofs[].latnumber | nullObrigatório.
proofs[].lngnumber | nullObrigatório.
proofs[].bystringObrigatório. O nome do estafeta.
proofs[].createdAtstring (date-time)Obrigatório.
endNotestringApenas em GET /tasks/{id}: o que o estafeta escreveu ao terminar.
recipientEmailstring
proofRequiredstring[]O da própria entrega, senão o das suas definições.
proofRequiredOverridestring[] | null
packageSizestring | nullUm de: small, medium, large, null.
itemDescriptionstring
referencestring
scheduledAtstring (date-time) | null
connectionIdstring | nullA ligação do motorista N-Ways que a aceitou.
acceptedAtstring (date-time) | null
startedAtstring (date-time) | null
editablestringO que PATCH /tasks/{id} pode alterar agora: tudo, apenas notes e dueAt (recolhida ou iniciada), ou nada (terminada). Um de: all, limited, none.
editedAtstring (date-time) | nullA última edição.
editedFieldsstring[]O que a última edição alterou.
pinDeliveryPinDeliveryComo o PIN de entrega está a chegar ao cliente, quando a entrega pede um e os PIN vão por WhatsApp. Nunca o próprio PIN.
pinDelivery.channelstringObrigatório. Um de: whatsapp, email, none.
pinDelivery.statestringObrigatório. Um de: sending, sent, delivered, read, failed.
pinDelivery.whatsappErrorCodeinteger | nullObrigatório. A falha do WhatsApp (131026: não está no WhatsApp), guardada depois de o PIN ter ido por e-mail.
pinDelivery.needsEmailbooleanObrigatório. O cliente não recebeu o PIN: envie-o com POST /tasks/{id}/pin-email.
pinDelivery.updatedAtstring (date-time)Obrigatório.
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"
  }
}

Erros

  • default Erro

Cancelar — qualquer estado em aberto → cancelled

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

Parâmetros

NomeOndeTipoDescrição
idcaminhostringObrigatório.
cURL
curl -X POST "https://nways.ng/maps/v1/fleet/tasks/string/cancel" \
  -H "X-NWays-Api-Key: A_SUA_CHAVE_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()

Resposta

Tarefa

CampoTipoDescrição
idstringObrigatório.
refstringObrigatório. O número curto da entrega no projeto, atribuído pela N-Ways ("1042", mostrado como #1042): para pessoas, em alertas e listas.
statusstringObrigatório. Um de: created, assigned, picked_up, arriving, completed, failed, cancelled.
vehicleIdstring | nullObrigatório.
pickupStop | nullObrigatório.
dropoffStopObrigatório.
dropoff.latnumberObrigatório.
dropoff.lngnumberObrigatório.
dropoff.namestringAté 120 caracteres.
dropoff.addressstringAté 300 caracteres.
recipientNamestringObrigatório.
recipientPhonestring
notesstringObrigatório.
langstringObrigatório. Um de: en, fr, pt.
arrivingSintegerObrigatório.
etaETA | nullObrigatório. Nulo até chegar uma posição recente, e depois de a tarefa terminar.
dueAtstring (date-time) | nullObrigatório.
latebooleanObrigatório. Em aberto e com dueAt ultrapassado, ou prevista para depois dele.
trackingUrlstring (uri) | nullObrigatório. Nulo depois de expirar.
trackingExpiresAtstring (date-time) | nullObrigatório.
failureReasonstring
createdAtstring (date-time)Obrigatório.
assignedAtstring (date-time) | nullObrigatório.
pickedUpAtstring (date-time) | nullObrigatório.
arrivingAtstring (date-time) | nullObrigatório.
endedAtstring (date-time) | nullObrigatório.
areaArea | nullA área própria da entrega: sair dela gera asset.geofence_exit.
proofsProof[]Apenas em GET /tasks/{id}: as fotografias e assinaturas do estafeta (N-Ways Business).
proofs[].idstringObrigatório.
proofs[].kindstringObrigatório. Um de: photo, signature.
proofs[].contentTypestringObrigatório. Um de: image/jpeg, image/png, image/webp.
proofs[].bytesintegerObrigatório.
proofs[].latnumber | nullObrigatório.
proofs[].lngnumber | nullObrigatório.
proofs[].bystringObrigatório. O nome do estafeta.
proofs[].createdAtstring (date-time)Obrigatório.
endNotestringApenas em GET /tasks/{id}: o que o estafeta escreveu ao terminar.
recipientEmailstring
proofRequiredstring[]O da própria entrega, senão o das suas definições.
proofRequiredOverridestring[] | null
packageSizestring | nullUm de: small, medium, large, null.
itemDescriptionstring
referencestring
scheduledAtstring (date-time) | null
connectionIdstring | nullA ligação do motorista N-Ways que a aceitou.
acceptedAtstring (date-time) | null
startedAtstring (date-time) | null
editablestringO que PATCH /tasks/{id} pode alterar agora: tudo, apenas notes e dueAt (recolhida ou iniciada), ou nada (terminada). Um de: all, limited, none.
editedAtstring (date-time) | nullA última edição.
editedFieldsstring[]O que a última edição alterou.
pinDeliveryPinDeliveryComo o PIN de entrega está a chegar ao cliente, quando a entrega pede um e os PIN vão por WhatsApp. Nunca o próprio PIN.
pinDelivery.channelstringObrigatório. Um de: whatsapp, email, none.
pinDelivery.statestringObrigatório. Um de: sending, sent, delivered, read, failed.
pinDelivery.whatsappErrorCodeinteger | nullObrigatório. A falha do WhatsApp (131026: não está no WhatsApp), guardada depois de o PIN ter ido por e-mail.
pinDelivery.needsEmailbooleanObrigatório. O cliente não recebeu o PIN: envie-o com POST /tasks/{id}/pin-email.
pinDelivery.updatedAtstring (date-time)Obrigatório.
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"
  }
}

Erros

  • default Erro

Enviar o PIN de entrega do cliente para o seu e-mail

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

Para uma entrega que pede um PIN, até terminar: guarda o e-mail na entrega e envia-lhe o PIN (a solução quando pinDelivery.needsEmail é true). Nunca vê o PIN.

Parâmetros

NomeOndeTipoDescrição
idcaminhostringObrigatório.

Corpo do pedido

CampoTipoDescrição
emailstring (email)Obrigatório.
cURL
curl -X POST "https://nways.ng/maps/v1/fleet/tasks/string/pin-email" \
  -H "X-NWays-Api-Key: A_SUA_CHAVE_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()

Resposta

A entrega

CampoTipoDescrição
idstringObrigatório.
refstringObrigatório. O número curto da entrega no projeto, atribuído pela N-Ways ("1042", mostrado como #1042): para pessoas, em alertas e listas.
statusstringObrigatório. Um de: created, assigned, picked_up, arriving, completed, failed, cancelled.
vehicleIdstring | nullObrigatório.
pickupStop | nullObrigatório.
dropoffStopObrigatório.
dropoff.latnumberObrigatório.
dropoff.lngnumberObrigatório.
dropoff.namestringAté 120 caracteres.
dropoff.addressstringAté 300 caracteres.
recipientNamestringObrigatório.
recipientPhonestring
notesstringObrigatório.
langstringObrigatório. Um de: en, fr, pt.
arrivingSintegerObrigatório.
etaETA | nullObrigatório. Nulo até chegar uma posição recente, e depois de a tarefa terminar.
dueAtstring (date-time) | nullObrigatório.
latebooleanObrigatório. Em aberto e com dueAt ultrapassado, ou prevista para depois dele.
trackingUrlstring (uri) | nullObrigatório. Nulo depois de expirar.
trackingExpiresAtstring (date-time) | nullObrigatório.
failureReasonstring
createdAtstring (date-time)Obrigatório.
assignedAtstring (date-time) | nullObrigatório.
pickedUpAtstring (date-time) | nullObrigatório.
arrivingAtstring (date-time) | nullObrigatório.
endedAtstring (date-time) | nullObrigatório.
areaArea | nullA área própria da entrega: sair dela gera asset.geofence_exit.
proofsProof[]Apenas em GET /tasks/{id}: as fotografias e assinaturas do estafeta (N-Ways Business).
proofs[].idstringObrigatório.
proofs[].kindstringObrigatório. Um de: photo, signature.
proofs[].contentTypestringObrigatório. Um de: image/jpeg, image/png, image/webp.
proofs[].bytesintegerObrigatório.
proofs[].latnumber | nullObrigatório.
proofs[].lngnumber | nullObrigatório.
proofs[].bystringObrigatório. O nome do estafeta.
proofs[].createdAtstring (date-time)Obrigatório.
endNotestringApenas em GET /tasks/{id}: o que o estafeta escreveu ao terminar.
recipientEmailstring
proofRequiredstring[]O da própria entrega, senão o das suas definições.
proofRequiredOverridestring[] | null
packageSizestring | nullUm de: small, medium, large, null.
itemDescriptionstring
referencestring
scheduledAtstring (date-time) | null
connectionIdstring | nullA ligação do motorista N-Ways que a aceitou.
acceptedAtstring (date-time) | null
startedAtstring (date-time) | null
editablestringO que PATCH /tasks/{id} pode alterar agora: tudo, apenas notes e dueAt (recolhida ou iniciada), ou nada (terminada). Um de: all, limited, none.
editedAtstring (date-time) | nullA última edição.
editedFieldsstring[]O que a última edição alterou.
pinDeliveryPinDeliveryComo o PIN de entrega está a chegar ao cliente, quando a entrega pede um e os PIN vão por WhatsApp. Nunca o próprio PIN.
pinDelivery.channelstringObrigatório. Um de: whatsapp, email, none.
pinDelivery.statestringObrigatório. Um de: sending, sent, delivered, read, failed.
pinDelivery.whatsappErrorCodeinteger | nullObrigatório. A falha do WhatsApp (131026: não está no WhatsApp), guardada depois de o PIN ter ido por e-mail.
pinDelivery.needsEmailbooleanObrigatório. O cliente não recebeu o PIN: envie-o com POST /tasks/{id}/pin-email.
pinDelivery.updatedAtstring (date-time)Obrigatório.
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"
  }
}

Erros

  • default Erro

Se um PIN de entrega pode ir para um número no WhatsApp

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

O WhatsApp não consegue dizer antecipadamente se um número está no WhatsApp: known é um número para o qual o seu cliente já recebeu um PIN, unreachable um que o WhatsApp não conseguiu alcançar recentemente (uma entrega que pede um PIN precisa então de recipientEmail).

Parâmetros

NomeOndeTipoDescrição
phoneconsultastringTal como foi escrito: +234…, ou à maneira local do seu país. Até 32 caracteres.
cURL
curl "https://nways.ng/maps/v1/fleet/whatsapp/number" \
  -H "X-NWays-Api-Key: A_SUA_CHAVE_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()

Resposta

O alcance do número

CampoTipoDescrição
enabledbooleanObrigatório. Os PIN vão por WhatsApp. Quando é false, vão por e-mail e notificação push.
phonestringObrigatório. O número em E.164 ("" quando não é um número).
validbooleanObrigatório.
knownbooleanObrigatório.
unreachablebooleanObrigatório.
200 OK
{
  "enabled": true,
  "phone": "+2348031234567",
  "valid": true,
  "known": true,
  "unreachable": true
}

Erros

  • default Erro

Definir ou limpar a área própria de uma entrega

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

Sair dela gera asset.geofence_exit (através das suas regras geofence_exit com a área dispatch, ou de uma regra por omissão).

Parâmetros

NomeOndeTipoDescrição
idcaminhostringObrigatório.

Corpo do pedido

CampoTipoDescrição
areaArea | nullObrigatório.
cURL
curl -X POST "https://nways.ng/maps/v1/fleet/tasks/string/area" \
  -H "X-NWays-Api-Key: A_SUA_CHAVE_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()

Resposta

A tarefa

CampoTipoDescrição
idstringObrigatório.
refstringObrigatório. O número curto da entrega no projeto, atribuído pela N-Ways ("1042", mostrado como #1042): para pessoas, em alertas e listas.
statusstringObrigatório. Um de: created, assigned, picked_up, arriving, completed, failed, cancelled.
vehicleIdstring | nullObrigatório.
pickupStop | nullObrigatório.
dropoffStopObrigatório.
dropoff.latnumberObrigatório.
dropoff.lngnumberObrigatório.
dropoff.namestringAté 120 caracteres.
dropoff.addressstringAté 300 caracteres.
recipientNamestringObrigatório.
recipientPhonestring
notesstringObrigatório.
langstringObrigatório. Um de: en, fr, pt.
arrivingSintegerObrigatório.
etaETA | nullObrigatório. Nulo até chegar uma posição recente, e depois de a tarefa terminar.
dueAtstring (date-time) | nullObrigatório.
latebooleanObrigatório. Em aberto e com dueAt ultrapassado, ou prevista para depois dele.
trackingUrlstring (uri) | nullObrigatório. Nulo depois de expirar.
trackingExpiresAtstring (date-time) | nullObrigatório.
failureReasonstring
createdAtstring (date-time)Obrigatório.
assignedAtstring (date-time) | nullObrigatório.
pickedUpAtstring (date-time) | nullObrigatório.
arrivingAtstring (date-time) | nullObrigatório.
endedAtstring (date-time) | nullObrigatório.
areaArea | nullA área própria da entrega: sair dela gera asset.geofence_exit.
proofsProof[]Apenas em GET /tasks/{id}: as fotografias e assinaturas do estafeta (N-Ways Business).
proofs[].idstringObrigatório.
proofs[].kindstringObrigatório. Um de: photo, signature.
proofs[].contentTypestringObrigatório. Um de: image/jpeg, image/png, image/webp.
proofs[].bytesintegerObrigatório.
proofs[].latnumber | nullObrigatório.
proofs[].lngnumber | nullObrigatório.
proofs[].bystringObrigatório. O nome do estafeta.
proofs[].createdAtstring (date-time)Obrigatório.
endNotestringApenas em GET /tasks/{id}: o que o estafeta escreveu ao terminar.
recipientEmailstring
proofRequiredstring[]O da própria entrega, senão o das suas definições.
proofRequiredOverridestring[] | null
packageSizestring | nullUm de: small, medium, large, null.
itemDescriptionstring
referencestring
scheduledAtstring (date-time) | null
connectionIdstring | nullA ligação do motorista N-Ways que a aceitou.
acceptedAtstring (date-time) | null
startedAtstring (date-time) | null
editablestringO que PATCH /tasks/{id} pode alterar agora: tudo, apenas notes e dueAt (recolhida ou iniciada), ou nada (terminada). Um de: all, limited, none.
editedAtstring (date-time) | nullA última edição.
editedFieldsstring[]O que a última edição alterou.
pinDeliveryPinDeliveryComo o PIN de entrega está a chegar ao cliente, quando a entrega pede um e os PIN vão por WhatsApp. Nunca o próprio PIN.
pinDelivery.channelstringObrigatório. Um de: whatsapp, email, none.
pinDelivery.statestringObrigatório. Um de: sending, sent, delivered, read, failed.
pinDelivery.whatsappErrorCodeinteger | nullObrigatório. A falha do WhatsApp (131026: não está no WhatsApp), guardada depois de o PIN ter ido por e-mail.
pinDelivery.needsEmailbooleanObrigatório. O cliente não recebeu o PIN: envie-o com POST /tasks/{id}/pin-email.
pinDelivery.updatedAtstring (date-time)Obrigatório.
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"
  }
}

Erros

  • default Erro

Listar os seus locais de recolha (o predefinido primeiro)

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

Parâmetros

NomeOndeTipoDescrição
qconsultastringEncontra um nome, um endereço ou um código de porta.
cURL
curl "https://nways.ng/maps/v1/fleet/places" \
  -H "X-NWays-Api-Key: A_SUA_CHAVE_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()

Resposta

Locais

CampoTipoDescrição
placesPlace[]Obrigatório.
places[].idstringObrigatório.
places[].namestringObrigatório.
places[].doorCodestringObrigatório. O código de porta NIPOST ou GhanaPost pelo qual foi encontrado ("" para nenhum).
places[].addressstringObrigatório.
places[].latnumberObrigatório.
places[].lngnumberObrigatório.
places[].phonestringObrigatório.
places[].hoursstringObrigatório.
places[].defaultbooleanObrigatório. As novas entregas na consola começam a partir dele.
places[].createdAtstring (date-time)Obrigatório.
places[].updatedAtstring (date-time)Obrigatório.
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"
    }
  ]
}

Erros

  • default Erro

Adicionar um local de recolha (até 200)

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

O seu primeiro local é o predefinido, salvo indicação em contrário; tornar um predefinido retira essa condição aos outros.

Corpo do pedido

name, lat e lng são obrigatórios para adicionar um.

CampoTipoDescrição
namestringAté 100 caracteres.
doorCodestringAté 32 caracteres.
addressstringAté 300 caracteres.
latnumber
lngnumber
phonestringAté 32 caracteres.
hoursstringAté 200 caracteres.
defaultboolean
cURL
curl -X POST "https://nways.ng/maps/v1/fleet/places" \
  -H "X-NWays-Api-Key: A_SUA_CHAVE_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()

Resposta

Criado

CampoTipoDescrição
idstringObrigatório.
namestringObrigatório.
doorCodestringObrigatório. O código de porta NIPOST ou GhanaPost pelo qual foi encontrado ("" para nenhum).
addressstringObrigatório.
latnumberObrigatório.
lngnumberObrigatório.
phonestringObrigatório.
hoursstringObrigatório.
defaultbooleanObrigatório. As novas entregas na consola começam a partir dele.
createdAtstring (date-time)Obrigatório.
updatedAtstring (date-time)Obrigatório.
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"
}

Erros

  • default Erro

Obter um local de recolha

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

Parâmetros

NomeOndeTipoDescrição
placeIdcaminhostringObrigatório.
cURL
curl "https://nways.ng/maps/v1/fleet/places/plc_4fQ9xLm2Za" \
  -H "X-NWays-Api-Key: A_SUA_CHAVE_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()

Resposta

Local

CampoTipoDescrição
idstringObrigatório.
namestringObrigatório.
doorCodestringObrigatório. O código de porta NIPOST ou GhanaPost pelo qual foi encontrado ("" para nenhum).
addressstringObrigatório.
latnumberObrigatório.
lngnumberObrigatório.
phonestringObrigatório.
hoursstringObrigatório.
defaultbooleanObrigatório. As novas entregas na consola começam a partir dele.
createdAtstring (date-time)Obrigatório.
updatedAtstring (date-time)Obrigatório.
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"
}

Erros

  • default Erro

Editar um local de recolha

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

As entregas já feitas a partir dele mantêm a recolha que lhes foi atribuída.

Parâmetros

NomeOndeTipoDescrição
placeIdcaminhostringObrigatório.

Corpo do pedido

name, lat e lng são obrigatórios para adicionar um.

CampoTipoDescrição
namestringAté 100 caracteres.
doorCodestringAté 32 caracteres.
addressstringAté 300 caracteres.
latnumber
lngnumber
phonestringAté 32 caracteres.
hoursstringAté 200 caracteres.
defaultboolean
cURL
curl -X PATCH "https://nways.ng/maps/v1/fleet/places/plc_4fQ9xLm2Za" \
  -H "X-NWays-Api-Key: A_SUA_CHAVE_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()

Resposta

Local

CampoTipoDescrição
idstringObrigatório.
namestringObrigatório.
doorCodestringObrigatório. O código de porta NIPOST ou GhanaPost pelo qual foi encontrado ("" para nenhum).
addressstringObrigatório.
latnumberObrigatório.
lngnumberObrigatório.
phonestringObrigatório.
hoursstringObrigatório.
defaultbooleanObrigatório. As novas entregas na consola começam a partir dele.
createdAtstring (date-time)Obrigatório.
updatedAtstring (date-time)Obrigatório.
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"
}

Erros

  • default Erro

Eliminar um local de recolha

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

Parâmetros

NomeOndeTipoDescrição
placeIdcaminhostringObrigatório.
cURL
curl -X DELETE "https://nways.ng/maps/v1/fleet/places/plc_4fQ9xLm2Za" \
  -H "X-NWays-Api-Key: A_SUA_CHAVE_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()

Resposta

Eliminado

Sem conteúdo.

Erros

  • default Erro

Listar os seus clientes, da entrega mais recente para a mais antiga

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

Um cliente é todo aquele a quem as suas entregas foram feitas com o mesmo telefone (seja qual for a forma como foi escrito), senão o mesmo e-mail, senão o mesmo nome. Guardado a partir das suas entregas à medida que são criadas e editadas, durante um ano após a sua última entrega.

Parâmetros

NomeOndeTipoDescrição
qconsultastringEncontra um nome, um e-mail ou qualquer parte de um número de telefone.
limitconsultaintegerPredefinição: 25. ≥ 1, ≤ 100.
pageTokenconsultastringnextPageToken (ou prevPageToken) de outra página.
cURL
curl "https://nways.ng/maps/v1/fleet/customers" \
  -H "X-NWays-Api-Key: A_SUA_CHAVE_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()

Resposta

Clientes

CampoTipoDescrição
customersCustomer[]Obrigatório.
customers[].idstringObrigatório.
customers[].namestringObrigatório. Tal como a entrega mais recente os designou.
customers[].phonestringObrigatório.
customers[].emailstringObrigatório.
customers[].deliveriesintegerObrigatório.
customers[].addressesintegerObrigatório.
customers[].lastDeliveryAtstring (date-time)Obrigatório.
customers[].lastAddressAddress | nullObrigatório. Para onde foi a entrega mais recente.
nextPageTokenstring
prevPageTokenstring
offsetintegerObrigatório.
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
}

Erros

  • default Erro

Obter um cliente

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

Parâmetros

NomeOndeTipoDescrição
customerIdcaminhostringObrigatório.
cURL
curl "https://nways.ng/maps/v1/fleet/customers/cus_4fQ9xLm2Za" \
  -H "X-NWays-Api-Key: A_SUA_CHAVE_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()

Resposta

Cliente

CampoTipoDescrição
idstringObrigatório.
namestringObrigatório. Tal como a entrega mais recente os designou.
phonestringObrigatório.
emailstringObrigatório.
deliveriesintegerObrigatório.
addressesintegerObrigatório.
lastDeliveryAtstring (date-time)Obrigatório.
lastAddressAddress | nullObrigatório. Para onde foi a entrega mais recente.
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"
  }
}

Erros

  • default Erro

Esquecer um cliente e os seus endereços

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

Para um cliente que pede para ser esquecido. As suas entregas ficam, com a retenção da sua frota; uma nova entrega para ele dá origem a um novo cliente.

Parâmetros

NomeOndeTipoDescrição
customerIdcaminhostringObrigatório.
cURL
curl -X DELETE "https://nways.ng/maps/v1/fleet/customers/cus_4fQ9xLm2Za" \
  -H "X-NWays-Api-Key: A_SUA_CHAVE_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()

Resposta

Esquecido

Sem conteúdo.

Erros

  • default Erro

Listar os endereços de um cliente, do último usado para o mais antigo

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

Cada local de entrega distinto (com cerca de 11 m de precisão) com o seu nome, endereço e código de porta mais recentes, quantas vezes foi usado e quando foi a última.

Parâmetros

NomeOndeTipoDescrição
customerIdcaminhostringObrigatório.
qconsultastringEncontra um nome, um endereço ou um código de porta.
limitconsultaintegerPredefinição: 25. ≥ 1, ≤ 100.
pageTokenconsultastring
cURL
curl "https://nways.ng/maps/v1/fleet/customers/string/addresses" \
  -H "X-NWays-Api-Key: A_SUA_CHAVE_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()

Resposta

Endereços

CampoTipoDescrição
addressesAddress[]Obrigatório.
addresses[].idstringObrigatório.
addresses[].namestringObrigatório.
addresses[].addressstringObrigatório.
addresses[].doorCodestringObrigatório. O código NIPOST ou GhanaPost com que o endereço começa ("" para nenhum).
addresses[].latnumberObrigatório.
addresses[].lngnumberObrigatório.
addresses[].usesintegerObrigatório. Entregas que foram para lá.
addresses[].lastUsedAtstring (date-time)Obrigatório.
totalintegerObrigatório. Todos os endereços do cliente (não só os encontrados).
nextPageTokenstring
prevPageTokenstring
offsetintegerObrigatório.
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
}

Erros

  • default Erro

A ligação de seguimento do destinatário (uma nova se tiver expirado; nenhuma depois de a tarefa terminar)

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

Parâmetros

NomeOndeTipoDescrição
idcaminhostringObrigatório.
cURL
curl -X POST "https://nways.ng/maps/v1/fleet/tasks/string/share" \
  -H "X-NWays-Api-Key: A_SUA_CHAVE_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()

Resposta

Ligação

CampoTipoDescrição
urlstring (uri)Obrigatório.
expiresAtstring (date-time)Obrigatório.
200 OK
{
  "url": "https://nways.ng/t/3fT9kQ2xVbN7LmP0aZc4RwYe",
  "expiresAt": "2026-10-15T09:00:00+01:00"
}

Erros

  • default Erro