N-Ways
Documentação para programadoresVeículos e motoristas

Veículos, motoristas e posições

As definições da sua frota, os seus motoristas e veículos, e as posições enviadas pelas aplicações dos seus estafetas.

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

Obter as definições de frota do projeto

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

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

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

Resposta

Definições

CampoTipoDescrição
shareTrafficbooleanObrigatório. Permitir que as posições dos seus veículos alimentem também o trânsito em direto público da N-Ways (de forma anónima). Desligado, a menos que o ative. Predefinição: false.
retentionDaysintegerObrigatório. Durante quanto tempo são guardados o histórico de viagens e as tarefas terminadas. Predefinição: 30. ≥ 1, ≤ 90.
brandNamestringObrigatório. O nome que as páginas de seguimento mostram ("A sua entrega de …"). Até 60 caracteres.
offlineAfterSintegerObrigatório. Silêncio a partir do qual um veículo fica offline (vehicle.offline). Predefinição: 600. ≥ 60, ≤ 86400.
stopAlertSintegerObrigatório. Um veículo em entrega parado durante este tempo gera um alerta stopped. Predefinição: 600. ≥ 60, ≤ 7200.
200 OK
{
  "shareTraffic": false,
  "retentionDays": 30,
  "brandName": "string",
  "offlineAfterS": 600,
  "stopAlertS": 600
}

Erros

  • default Erro

Alterar as definições de frota (os campos omitidos mantêm o seu valor)

PUT https://nways.ng/maps/v1/fleet/settings

Corpo do pedido

CampoTipoDescrição
shareTrafficboolean
retentionDaysinteger≥ 1, ≤ 90.
brandNamestringAté 60 caracteres.
offlineAfterSinteger≥ 60, ≤ 86400.
stopAlertSinteger≥ 60, ≤ 7200.
cURL
curl -X PUT "https://nways.ng/maps/v1/fleet/settings" \
  -H "X-NWays-Api-Key: A_SUA_CHAVE_API" \
  -H "Content-Type: application/json" \
  -d '{"brandName":"Chowtime","offlineAfterS":300}'
JavaScript
const res = await fetch('https://nways.ng/maps/v1/fleet/settings', {
  method: 'PUT',
  headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY, 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "brandName": "Chowtime",
    "offlineAfterS": 300
  }),
})
const data = await res.json()
Python
import os
import requests

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

Resposta

Definições

CampoTipoDescrição
shareTrafficbooleanObrigatório. Permitir que as posições dos seus veículos alimentem também o trânsito em direto público da N-Ways (de forma anónima). Desligado, a menos que o ative. Predefinição: false.
retentionDaysintegerObrigatório. Durante quanto tempo são guardados o histórico de viagens e as tarefas terminadas. Predefinição: 30. ≥ 1, ≤ 90.
brandNamestringObrigatório. O nome que as páginas de seguimento mostram ("A sua entrega de …"). Até 60 caracteres.
offlineAfterSintegerObrigatório. Silêncio a partir do qual um veículo fica offline (vehicle.offline). Predefinição: 600. ≥ 60, ≤ 86400.
stopAlertSintegerObrigatório. Um veículo em entrega parado durante este tempo gera um alerta stopped. Predefinição: 600. ≥ 60, ≤ 7200.
200 OK
{
  "shareTraffic": false,
  "retentionDays": 30,
  "brandName": "string",
  "offlineAfterS": 600,
  "stopAlertS": 600
}

Erros

  • default Erro

Listar motoristas

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

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

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

Resposta

Motoristas, por id

CampoTipoDescrição
driversDriver[]Obrigatório.
drivers[].idstringObrigatório.
drivers[].namestringObrigatório. firstName e lastName juntos.
drivers[].firstNamestringObrigatório.
drivers[].lastNamestringObrigatório. Vazio para um motorista criado só com um nome de uma palavra.
drivers[].phonestringObrigatório.
drivers[].createdAtstring (date-time)Obrigatório.
drivers[].updatedAtstring (date-time)Obrigatório.
drivers[].appobjectObrigatório. O estafeta na N-Ways Business.
drivers[].app.statusstringObrigatório. Um de: none, invited, joined.
drivers[].app.joinedAtstring (date-time) | nullObrigatório.
drivers[].app.emailstringA conta N-Ways do estafeta (só depois de aderir).
drivers[].app.namestring
drivers[].app.onDutybooleanObrigatório. A partilhar a sua posição agora.
drivers[].app.consentedAtstring (date-time) | nullObrigatório. Quando aceitou partilhar a sua posição (null: não agora).
drivers[].app.inviteExpiresAtstring (date-time)Convidado: até quando o código funciona.
200 OK
{
  "drivers": [
    {
      "id": "string",
      "name": "string",
      "firstName": "string",
      "lastName": "string",
      "phone": "string",
      "createdAt": "2026-10-15T09:00:00+01:00",
      "updatedAt": "2026-10-15T09:00:00+01:00",
      "app": {
        "status": "none",
        "joinedAt": "2026-10-15T09:00:00+01:00",
        "email": "string",
        "name": "string",
        "onDuty": true,
        "consentedAt": "2026-10-15T09:00:00+01:00",
        "inviteExpiresAt": "2026-10-15T09:00:00+01:00"
      }
    }
  ]
}

Erros

  • default Erro

Adicionar um motorista

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

Corpo do pedido

CampoTipoDescrição
idstringObrigatório.
namestringO nome único antigo; ignorado quando firstName e lastName são enviados. Até 100 caracteres.
phonestringAté 32 caracteres.
firstNamestringLetras (qualquer alfabeto, com acentos), espaços, hífenes e apóstrofos. Envie com lastName; name passa então a ser 'firstName lastName'. Até 50 caracteres.
lastNamestringObrigatório com firstName; as mesmas regras. Até 50 caracteres.
cURL
curl -X POST "https://nways.ng/maps/v1/fleet/drivers" \
  -H "X-NWays-Api-Key: A_SUA_CHAVE_API" \
  -H "Content-Type: application/json" \
  -d '{"id":"string","name":"string","phone":"string","firstName":"string","lastName":"string"}'
JavaScript
const res = await fetch('https://nways.ng/maps/v1/fleet/drivers', {
  method: 'POST',
  headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY, 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "id": "string",
    "name": "string",
    "phone": "string",
    "firstName": "string",
    "lastName": "string"
  }),
})
const data = await res.json()
Python
import os
import requests

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

Resposta

Criado

CampoTipoDescrição
idstringObrigatório.
namestringObrigatório. firstName e lastName juntos.
firstNamestringObrigatório.
lastNamestringObrigatório. Vazio para um motorista criado só com um nome de uma palavra.
phonestringObrigatório.
createdAtstring (date-time)Obrigatório.
updatedAtstring (date-time)Obrigatório.
appobjectObrigatório. O estafeta na N-Ways Business.
app.statusstringObrigatório. Um de: none, invited, joined.
app.joinedAtstring (date-time) | nullObrigatório.
app.emailstringA conta N-Ways do estafeta (só depois de aderir).
app.namestring
app.onDutybooleanObrigatório. A partilhar a sua posição agora.
app.consentedAtstring (date-time) | nullObrigatório. Quando aceitou partilhar a sua posição (null: não agora).
app.inviteExpiresAtstring (date-time)Convidado: até quando o código funciona.
201 OK
{
  "id": "string",
  "name": "string",
  "firstName": "string",
  "lastName": "string",
  "phone": "string",
  "createdAt": "2026-10-15T09:00:00+01:00",
  "updatedAt": "2026-10-15T09:00:00+01:00",
  "app": {
    "status": "none",
    "joinedAt": "2026-10-15T09:00:00+01:00",
    "email": "string",
    "name": "string",
    "onDuty": true,
    "consentedAt": "2026-10-15T09:00:00+01:00",
    "inviteExpiresAt": "2026-10-15T09:00:00+01:00"
  }
}

Erros

  • 409 Erro
  • default Erro

Obter um motorista

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

Parâmetros

NomeOndeTipoDescrição
idcaminhostringObrigatório.
cURL
curl "https://nways.ng/maps/v1/fleet/drivers/string" \
  -H "X-NWays-Api-Key: A_SUA_CHAVE_API"
JavaScript
const res = await fetch('https://nways.ng/maps/v1/fleet/drivers/string', {
  headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY },
})
const data = await res.json()
Python
import os
import requests

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

Resposta

Motorista

CampoTipoDescrição
idstringObrigatório.
namestringObrigatório. firstName e lastName juntos.
firstNamestringObrigatório.
lastNamestringObrigatório. Vazio para um motorista criado só com um nome de uma palavra.
phonestringObrigatório.
createdAtstring (date-time)Obrigatório.
updatedAtstring (date-time)Obrigatório.
appobjectObrigatório. O estafeta na N-Ways Business.
app.statusstringObrigatório. Um de: none, invited, joined.
app.joinedAtstring (date-time) | nullObrigatório.
app.emailstringA conta N-Ways do estafeta (só depois de aderir).
app.namestring
app.onDutybooleanObrigatório. A partilhar a sua posição agora.
app.consentedAtstring (date-time) | nullObrigatório. Quando aceitou partilhar a sua posição (null: não agora).
app.inviteExpiresAtstring (date-time)Convidado: até quando o código funciona.
200 OK
{
  "id": "string",
  "name": "string",
  "firstName": "string",
  "lastName": "string",
  "phone": "string",
  "createdAt": "2026-10-15T09:00:00+01:00",
  "updatedAt": "2026-10-15T09:00:00+01:00",
  "app": {
    "status": "none",
    "joinedAt": "2026-10-15T09:00:00+01:00",
    "email": "string",
    "name": "string",
    "onDuty": true,
    "consentedAt": "2026-10-15T09:00:00+01:00",
    "inviteExpiresAt": "2026-10-15T09:00:00+01:00"
  }
}

Erros

  • default Erro

Alterar um motorista

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

Parâmetros

NomeOndeTipoDescrição
idcaminhostringObrigatório.

Corpo do pedido

CampoTipoDescrição
namestringO nome único antigo; ignorado quando firstName e lastName são enviados. Até 100 caracteres.
phonestringAté 32 caracteres.
firstNamestringLetras (qualquer alfabeto, com acentos), espaços, hífenes e apóstrofos. Envie com lastName; name passa então a ser 'firstName lastName'. Até 50 caracteres.
lastNamestringObrigatório com firstName; as mesmas regras. Até 50 caracteres.
cURL
curl -X PATCH "https://nways.ng/maps/v1/fleet/drivers/string" \
  -H "X-NWays-Api-Key: A_SUA_CHAVE_API" \
  -H "Content-Type: application/json" \
  -d '{"name":"string","phone":"string","firstName":"string","lastName":"string"}'
JavaScript
const res = await fetch('https://nways.ng/maps/v1/fleet/drivers/string', {
  method: 'PATCH',
  headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY, 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "name": "string",
    "phone": "string",
    "firstName": "string",
    "lastName": "string"
  }),
})
const data = await res.json()
Python
import os
import requests

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

Resposta

Motorista

CampoTipoDescrição
idstringObrigatório.
namestringObrigatório. firstName e lastName juntos.
firstNamestringObrigatório.
lastNamestringObrigatório. Vazio para um motorista criado só com um nome de uma palavra.
phonestringObrigatório.
createdAtstring (date-time)Obrigatório.
updatedAtstring (date-time)Obrigatório.
appobjectObrigatório. O estafeta na N-Ways Business.
app.statusstringObrigatório. Um de: none, invited, joined.
app.joinedAtstring (date-time) | nullObrigatório.
app.emailstringA conta N-Ways do estafeta (só depois de aderir).
app.namestring
app.onDutybooleanObrigatório. A partilhar a sua posição agora.
app.consentedAtstring (date-time) | nullObrigatório. Quando aceitou partilhar a sua posição (null: não agora).
app.inviteExpiresAtstring (date-time)Convidado: até quando o código funciona.
200 OK
{
  "id": "string",
  "name": "string",
  "firstName": "string",
  "lastName": "string",
  "phone": "string",
  "createdAt": "2026-10-15T09:00:00+01:00",
  "updatedAt": "2026-10-15T09:00:00+01:00",
  "app": {
    "status": "none",
    "joinedAt": "2026-10-15T09:00:00+01:00",
    "email": "string",
    "name": "string",
    "onDuty": true,
    "consentedAt": "2026-10-15T09:00:00+01:00",
    "inviteExpiresAt": "2026-10-15T09:00:00+01:00"
  }
}

Erros

  • default Erro

Eliminar um motorista (os veículos continuam a circular sem ele)

DELETE https://nways.ng/maps/v1/fleet/drivers/{id}

Parâmetros

NomeOndeTipoDescrição
idcaminhostringObrigatório.
cURL
curl -X DELETE "https://nways.ng/maps/v1/fleet/drivers/string" \
  -H "X-NWays-Api-Key: A_SUA_CHAVE_API"
JavaScript
const res = await fetch('https://nways.ng/maps/v1/fleet/drivers/string', {
  method: 'DELETE',
  headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY },
})
const data = await res.json()
Python
import os
import requests

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

Resposta

Eliminado

Sem conteúdo.

Erros

  • default Erro

Listar veículos com as suas últimas posições conhecidas

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

Parâmetros

NomeOndeTipoDescrição
statusconsultastringApenas os veículos com sinal recebido dentro de offlineAfterS (online) ou não. Um de: online, offline.
cURL
curl "https://nways.ng/maps/v1/fleet/vehicles" \
  -H "X-NWays-Api-Key: A_SUA_CHAVE_API"
JavaScript
const res = await fetch('https://nways.ng/maps/v1/fleet/vehicles', {
  headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY },
})
const data = await res.json()
Python
import os
import requests

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

Resposta

Veículos, por id

CampoTipoDescrição
vehiclesVehicle[]Obrigatório.
vehicles[].idstringObrigatório.
vehicles[].namestringObrigatório.
vehicles[].modestringObrigatório. Como são calculados os percursos das ETA. motorcycle = uma mota de entregas (estradas e tempos de motociclo; as proibições de okada comercial, que se aplicam às okadas de passageiros, não se aplicam); okada = uma frota de okadas de passageiros (mantida fora das zonas de proibição de okada); motorbike = uma mota particular; keke = um triciclo (estradas de duas rodas, sem proibições de okada); car, van, truck = percursos de automóvel; bicycle; walk = um estafeta a pé; boat = na água (ETA em linha reta à sua velocidade); asset = qualquer outra coisa que siga (um reboque, um gerador): nunca tem percurso. Um de: motorcycle, okada, motorbike, keke, car, van, truck, bicycle, walk, boat, asset. Predefinição: motorcycle.
vehicles[].platestringObrigatório.
vehicles[].driverIdstring | nullObrigatório.
vehicles[].groupstring
vehicles[].batteryPctnumberA bateria do rastreador ou do telemóvel no último relato, quando a envia.
vehicles[].colourstringA cor do veículo nos mapas da consola e da N-Ways Business. Um veículo novo fica com a cor que o seu projeto menos usa. Um de: blue, orange, teal, purple, pink, green, brown, navy, magenta, olive, cyan, maroon, sky, lime, plum, sand.
vehicles[].lastLocationPosition | nullObrigatório.
vehicles[].onlinebooleanObrigatório. Com sinal recebido dentro de offlineAfterS.
vehicles[].createdAtstring (date-time)Obrigatório.
vehicles[].updatedAtstring (date-time)Obrigatório.
200 OK
{
  "vehicles": [
    {
      "id": "string",
      "name": "string",
      "mode": "motorcycle",
      "plate": "string",
      "driverId": "string",
      "group": "string",
      "batteryPct": 0,
      "colour": "blue",
      "lastLocation": {
        "lat": 0,
        "lng": 0,
        "heading": 0,
        "speedMps": 0,
        "accuracyM": 0,
        "at": "2026-10-15T09:00:00+01:00"
      },
      "online": true,
      "createdAt": "2026-10-15T09:00:00+01:00",
      "updatedAt": "2026-10-15T09:00:00+01:00"
    }
  ]
}

Erros

  • default Erro

Adicionar um veículo

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

Corpo do pedido

CampoTipoDescrição
idstringObrigatório.
namestringAté 100 caracteres.
modestringComo são calculados os percursos das ETA. motorcycle = uma mota de entregas (estradas e tempos de motociclo; as proibições de okada comercial, que se aplicam às okadas de passageiros, não se aplicam); okada = uma frota de okadas de passageiros (mantida fora das zonas de proibição de okada); motorbike = uma mota particular; keke = um triciclo (estradas de duas rodas, sem proibições de okada); car, van, truck = percursos de automóvel; bicycle; walk = um estafeta a pé; boat = na água (ETA em linha reta à sua velocidade); asset = qualquer outra coisa que siga (um reboque, um gerador): nunca tem percurso. Um de: motorcycle, okada, motorbike, keke, car, van, truck, bicycle, walk, boat, asset. Predefinição: motorcycle.
platestringAté 20 caracteres.
driverIdstringO id de um motorista, ou vazio para nenhum.
groupstringO seu próprio agrupamento ("Motas de Lekki"), para as regras de alerta. Até 60 caracteres.
colourstringA cor do veículo nos mapas da consola e da N-Ways Business. Um veículo novo fica com a cor que o seu projeto menos usa. Um de: blue, orange, teal, purple, pink, green, brown, navy, magenta, olive, cyan, maroon, sky, lime, plum, sand.
cURL
curl -X POST "https://nways.ng/maps/v1/fleet/vehicles" \
  -H "X-NWays-Api-Key: A_SUA_CHAVE_API" \
  -H "Content-Type: application/json" \
  -d '{"id":"bike-17","name":"Bike 17","mode":"motorcycle","plate":"LAG 123 XY","driverId":"d-4","group":"Yaba"}'
JavaScript
const res = await fetch('https://nways.ng/maps/v1/fleet/vehicles', {
  method: 'POST',
  headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY, 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "id": "bike-17",
    "name": "Bike 17",
    "mode": "motorcycle",
    "plate": "LAG 123 XY",
    "driverId": "d-4",
    "group": "Yaba"
  }),
})
const data = await res.json()
Python
import os
import requests

res = requests.post(
    "https://nways.ng/maps/v1/fleet/vehicles",
    headers={"X-NWays-Api-Key": os.environ["NWAYS_API_KEY"]},
    json={"id": "bike-17", "name": "Bike 17", "mode": "motorcycle", "plate": "LAG 123 XY", "driverId": "d-4", "group": "Yaba"},
    timeout=10,
)
data = res.json()

Resposta

Criado

CampoTipoDescrição
idstringObrigatório.
namestringObrigatório.
modestringObrigatório. Como são calculados os percursos das ETA. motorcycle = uma mota de entregas (estradas e tempos de motociclo; as proibições de okada comercial, que se aplicam às okadas de passageiros, não se aplicam); okada = uma frota de okadas de passageiros (mantida fora das zonas de proibição de okada); motorbike = uma mota particular; keke = um triciclo (estradas de duas rodas, sem proibições de okada); car, van, truck = percursos de automóvel; bicycle; walk = um estafeta a pé; boat = na água (ETA em linha reta à sua velocidade); asset = qualquer outra coisa que siga (um reboque, um gerador): nunca tem percurso. Um de: motorcycle, okada, motorbike, keke, car, van, truck, bicycle, walk, boat, asset. Predefinição: motorcycle.
platestringObrigatório.
driverIdstring | nullObrigatório.
groupstring
batteryPctnumberA bateria do rastreador ou do telemóvel no último relato, quando a envia.
colourstringA cor do veículo nos mapas da consola e da N-Ways Business. Um veículo novo fica com a cor que o seu projeto menos usa. Um de: blue, orange, teal, purple, pink, green, brown, navy, magenta, olive, cyan, maroon, sky, lime, plum, sand.
lastLocationPosition | nullObrigatório.
onlinebooleanObrigatório. Com sinal recebido dentro de offlineAfterS.
createdAtstring (date-time)Obrigatório.
updatedAtstring (date-time)Obrigatório.
201 OK
{
  "id": "string",
  "name": "string",
  "mode": "motorcycle",
  "plate": "string",
  "driverId": "string",
  "group": "string",
  "batteryPct": 0,
  "colour": "blue",
  "lastLocation": {
    "lat": 0,
    "lng": 0,
    "heading": 0,
    "speedMps": 0,
    "accuracyM": 0,
    "at": "2026-10-15T09:00:00+01:00"
  },
  "online": true,
  "createdAt": "2026-10-15T09:00:00+01:00",
  "updatedAt": "2026-10-15T09:00:00+01:00"
}

Erros

  • default Erro

Obter um veículo e a sua última posição conhecida

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

Parâmetros

NomeOndeTipoDescrição
idcaminhostringObrigatório.
cURL
curl "https://nways.ng/maps/v1/fleet/vehicles/string" \
  -H "X-NWays-Api-Key: A_SUA_CHAVE_API"
JavaScript
const res = await fetch('https://nways.ng/maps/v1/fleet/vehicles/string', {
  headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY },
})
const data = await res.json()
Python
import os
import requests

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

Resposta

Veículo

CampoTipoDescrição
idstringObrigatório.
namestringObrigatório.
modestringObrigatório. Como são calculados os percursos das ETA. motorcycle = uma mota de entregas (estradas e tempos de motociclo; as proibições de okada comercial, que se aplicam às okadas de passageiros, não se aplicam); okada = uma frota de okadas de passageiros (mantida fora das zonas de proibição de okada); motorbike = uma mota particular; keke = um triciclo (estradas de duas rodas, sem proibições de okada); car, van, truck = percursos de automóvel; bicycle; walk = um estafeta a pé; boat = na água (ETA em linha reta à sua velocidade); asset = qualquer outra coisa que siga (um reboque, um gerador): nunca tem percurso. Um de: motorcycle, okada, motorbike, keke, car, van, truck, bicycle, walk, boat, asset. Predefinição: motorcycle.
platestringObrigatório.
driverIdstring | nullObrigatório.
groupstring
batteryPctnumberA bateria do rastreador ou do telemóvel no último relato, quando a envia.
colourstringA cor do veículo nos mapas da consola e da N-Ways Business. Um veículo novo fica com a cor que o seu projeto menos usa. Um de: blue, orange, teal, purple, pink, green, brown, navy, magenta, olive, cyan, maroon, sky, lime, plum, sand.
lastLocationPosition | nullObrigatório.
onlinebooleanObrigatório. Com sinal recebido dentro de offlineAfterS.
createdAtstring (date-time)Obrigatório.
updatedAtstring (date-time)Obrigatório.
200 OK
{
  "id": "string",
  "name": "string",
  "mode": "motorcycle",
  "plate": "string",
  "driverId": "string",
  "group": "string",
  "batteryPct": 0,
  "colour": "blue",
  "lastLocation": {
    "lat": 0,
    "lng": 0,
    "heading": 0,
    "speedMps": 0,
    "accuracyM": 0,
    "at": "2026-10-15T09:00:00+01:00"
  },
  "online": true,
  "createdAt": "2026-10-15T09:00:00+01:00",
  "updatedAt": "2026-10-15T09:00:00+01:00"
}

Erros

  • default Erro

Alterar um veículo (driverId "" retira o motorista)

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

Parâmetros

NomeOndeTipoDescrição
idcaminhostringObrigatório.

Corpo do pedido

CampoTipoDescrição
namestringAté 100 caracteres.
modestringComo são calculados os percursos das ETA. motorcycle = uma mota de entregas (estradas e tempos de motociclo; as proibições de okada comercial, que se aplicam às okadas de passageiros, não se aplicam); okada = uma frota de okadas de passageiros (mantida fora das zonas de proibição de okada); motorbike = uma mota particular; keke = um triciclo (estradas de duas rodas, sem proibições de okada); car, van, truck = percursos de automóvel; bicycle; walk = um estafeta a pé; boat = na água (ETA em linha reta à sua velocidade); asset = qualquer outra coisa que siga (um reboque, um gerador): nunca tem percurso. Um de: motorcycle, okada, motorbike, keke, car, van, truck, bicycle, walk, boat, asset. Predefinição: motorcycle.
platestringAté 20 caracteres.
driverIdstring
groupstringAté 60 caracteres.
colourstringA cor do veículo nos mapas da consola e da N-Ways Business. Um veículo novo fica com a cor que o seu projeto menos usa. Um de: blue, orange, teal, purple, pink, green, brown, navy, magenta, olive, cyan, maroon, sky, lime, plum, sand.
cURL
curl -X PATCH "https://nways.ng/maps/v1/fleet/vehicles/string" \
  -H "X-NWays-Api-Key: A_SUA_CHAVE_API" \
  -H "Content-Type: application/json" \
  -d '{"name":"string","mode":"motorcycle","plate":"string","driverId":"string","group":"string","colour":"blue"}'
JavaScript
const res = await fetch('https://nways.ng/maps/v1/fleet/vehicles/string', {
  method: 'PATCH',
  headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY, 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "name": "string",
    "mode": "motorcycle",
    "plate": "string",
    "driverId": "string",
    "group": "string",
    "colour": "blue"
  }),
})
const data = await res.json()
Python
import os
import requests

res = requests.patch(
    "https://nways.ng/maps/v1/fleet/vehicles/string",
    headers={"X-NWays-Api-Key": os.environ["NWAYS_API_KEY"]},
    json={"name": "string", "mode": "motorcycle", "plate": "string", "driverId": "string", "group": "string", "colour": "blue"},
    timeout=10,
)
data = res.json()

Resposta

Veículo

CampoTipoDescrição
idstringObrigatório.
namestringObrigatório.
modestringObrigatório. Como são calculados os percursos das ETA. motorcycle = uma mota de entregas (estradas e tempos de motociclo; as proibições de okada comercial, que se aplicam às okadas de passageiros, não se aplicam); okada = uma frota de okadas de passageiros (mantida fora das zonas de proibição de okada); motorbike = uma mota particular; keke = um triciclo (estradas de duas rodas, sem proibições de okada); car, van, truck = percursos de automóvel; bicycle; walk = um estafeta a pé; boat = na água (ETA em linha reta à sua velocidade); asset = qualquer outra coisa que siga (um reboque, um gerador): nunca tem percurso. Um de: motorcycle, okada, motorbike, keke, car, van, truck, bicycle, walk, boat, asset. Predefinição: motorcycle.
platestringObrigatório.
driverIdstring | nullObrigatório.
groupstring
batteryPctnumberA bateria do rastreador ou do telemóvel no último relato, quando a envia.
colourstringA cor do veículo nos mapas da consola e da N-Ways Business. Um veículo novo fica com a cor que o seu projeto menos usa. Um de: blue, orange, teal, purple, pink, green, brown, navy, magenta, olive, cyan, maroon, sky, lime, plum, sand.
lastLocationPosition | nullObrigatório.
onlinebooleanObrigatório. Com sinal recebido dentro de offlineAfterS.
createdAtstring (date-time)Obrigatório.
updatedAtstring (date-time)Obrigatório.
200 OK
{
  "id": "string",
  "name": "string",
  "mode": "motorcycle",
  "plate": "string",
  "driverId": "string",
  "group": "string",
  "batteryPct": 0,
  "colour": "blue",
  "lastLocation": {
    "lat": 0,
    "lng": 0,
    "heading": 0,
    "speedMps": 0,
    "accuracyM": 0,
    "at": "2026-10-15T09:00:00+01:00"
  },
  "online": true,
  "createdAt": "2026-10-15T09:00:00+01:00",
  "updatedAt": "2026-10-15T09:00:00+01:00"
}

Erros

  • default Erro

Eliminar um veículo e o seu histórico de viagens

DELETE https://nways.ng/maps/v1/fleet/vehicles/{id}

Parâmetros

NomeOndeTipoDescrição
idcaminhostringObrigatório.
cURL
curl -X DELETE "https://nways.ng/maps/v1/fleet/vehicles/string" \
  -H "X-NWays-Api-Key: A_SUA_CHAVE_API"
JavaScript
const res = await fetch('https://nways.ng/maps/v1/fleet/vehicles/string', {
  method: 'DELETE',
  headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY },
})
const data = await res.json()
Python
import os
import requests

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

Resposta

Eliminado

Sem conteúdo.

Erros

  • default Erro

Histórico de viagens de um veículo (do mais antigo para o mais recente)

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

Por omissão, as últimas 24 horas; no máximo 7 dias por chamada e 10 000 posições. O histórico mais antigo do que retentionDays é apagado.

Parâmetros

NomeOndeTipoDescrição
idcaminhostringObrigatório.
fromconsultastring (date-time)
toconsultastring (date-time)
taskIdconsultastringApenas as posições enviadas enquanto esta tarefa estava em curso.
limitconsultainteger≥ 1, ≤ 10000.
cURL
curl "https://nways.ng/maps/v1/fleet/vehicles/string/history" \
  -H "X-NWays-Api-Key: A_SUA_CHAVE_API"
JavaScript
const res = await fetch('https://nways.ng/maps/v1/fleet/vehicles/string/history', {
  headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY },
})
const data = await res.json()
Python
import os
import requests

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

Resposta

Posições

CampoTipoDescrição
vehicleIdstringObrigatório.
fromstring (date-time)Obrigatório.
tostring (date-time)Obrigatório.
positionsPosition[]Obrigatório.
positions[].latnumberObrigatório.
positions[].lngnumberObrigatório.
positions[].headingnumber≥ 0, ≤ 360.
positions[].speedMpsnumber
positions[].accuracyMnumber
positions[].atstring (date-time)Obrigatório.
200 OK
{
  "vehicleId": "string",
  "from": "2026-10-15T09:00:00+01:00",
  "to": "2026-10-15T09:00:00+01:00",
  "positions": [
    {
      "lat": 0,
      "lng": 0,
      "heading": 0,
      "speedMps": 0,
      "accuracyM": 0,
      "at": "2026-10-15T09:00:00+01:00"
    }
  ]
}

Erros

  • default Erro

A cronologia de um veículo a partir do seu rastreador (ignição ligada e desligada, corte de alimentação e reposição), da mais recente para a mais antiga

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

Parâmetros

NomeOndeTipoDescrição
idcaminhostringObrigatório.
fromconsultastring (date-time)Por omissão: há 24 horas.
toconsultastring (date-time)No máximo 7 dias depois de from.
limitconsultaintegerPredefinição: 500. ≤ 500.
cURL
curl "https://nways.ng/maps/v1/fleet/vehicles/string/events" \
  -H "X-NWays-Api-Key: A_SUA_CHAVE_API"
JavaScript
const res = await fetch('https://nways.ng/maps/v1/fleet/vehicles/string/events', {
  headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY },
})
const data = await res.json()
Python
import os
import requests

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

Resposta

Entradas

CampoTipoDescrição
vehicleIdstring
eventsobject[]
events[].atstring (date-time)
events[].kindstringUm de: ignition_on, ignition_off, power_cut, power_back.
events[].latnumber
events[].lngnumber
200 OK
{
  "vehicleId": "string",
  "events": [
    {
      "at": "2026-10-15T09:00:00+01:00",
      "kind": "ignition_on",
      "lat": 0,
      "lng": 0
    }
  ]
}

Erros

  • default Erro

Enviar posições (em lote)

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

As aplicações de estafetas enviam as suas posições em lotes, para um ou vários veículos (1–1000 por chamada). As posições com até 24 horas são guardadas como histórico (uma aplicação que volta a ficar online envia o que guardou); a mais recente atualiza a última posição conhecida do veículo. Uma posição recente (10 minutos ou menos) recalcula os tempos da tarefa em aberto do veículo com o nosso motor de percursos e o trânsito em direto (no máximo a cada 10 s por tarefa), e marca-a como arriving quando o local de entrega está dentro do seu arrivingS ou a 250 m. As posições que não podem ser usadas são listadas em rejected pelo índice; as restantes são aceites. Envie a cada 5–15 s durante uma tarefa.

Corpo do pedido

CampoTipoDescrição
updatesLocationUpdate[]Obrigatório. Pelo menos 1 elementos, no máximo 1000 elementos.
updates[].vehicleIdstringObrigatório.
updates[].latnumberObrigatório. ≥ -90, ≤ 90.
updates[].lngnumberObrigatório. ≥ -180, ≤ 180.
updates[].tstring (date-time)Quando a posição foi obtida (por omissão, agora); até 24 h no passado, 2 min no futuro.
updates[].speedMpsnumber≥ 0, ≤ 100.
updates[].headingnumber≥ 0, ≤ 360.
updates[].accuracyMnumber≥ 0, ≤ 10000.
updates[].batteryPctnumberNível de bateria, mostrado na consola. ≥ 0, ≤ 100.
updates[].ignitionbooleanA ignição de um rastreador (ACC).
updates[].extVoltageVnumberA alimentação externa de um rastreador, em volts (0: cortada). ≥ 0, ≤ 100.
updates[].odometerMnumberO conta-quilómetros de um rastreador, em metros. ≥ 0.
updates[].satsintegerSatélites visíveis. ≥ 0, ≤ 99.
updates[].sourcestringDe onde vem a posição (por omissão, app). As posições de um rastreador nunca alimentam o trânsito em direto. Um de: app, tracker.
cURL
curl -X POST "https://nways.ng/maps/v1/fleet/locations" \
  -H "X-NWays-Api-Key: A_SUA_CHAVE_API" \
  -H "Content-Type: application/json" \
  -d '{"updates":[{"vehicleId":"bike-17","lat":6.512,"lng":3.375,"t":"2026-10-15T09:12:03Z","speedMps":6.2,"heading":210,"accuracyM":8}]}'
JavaScript
const res = await fetch('https://nways.ng/maps/v1/fleet/locations', {
  method: 'POST',
  headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY, 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "updates": [
      {
        "vehicleId": "bike-17",
        "lat": 6.512,
        "lng": 3.375,
        "t": "2026-10-15T09:12:03Z",
        "speedMps": 6.2,
        "heading": 210,
        "accuracyM": 8
      }
    ]
  }),
})
const data = await res.json()
Python
import os
import requests

res = requests.post(
    "https://nways.ng/maps/v1/fleet/locations",
    headers={"X-NWays-Api-Key": os.environ["NWAYS_API_KEY"]},
    json={"updates": [{"vehicleId": "bike-17", "lat": 6.512, "lng": 3.375, "t": "2026-10-15T09:12:03Z", "speedMps": 6.2, "heading": 210, "accuracyM": 8}]},
    timeout=10,
)
data = res.json()

Resposta

Aceite

CampoTipoDescrição
acceptedintegerObrigatório.
rejectedobject[]Obrigatório.
rejected[].indexintegerObrigatório.
rejected[].reasonstringObrigatório. Um de: VEHICLE_NOT_FOUND, INVALID_POSITION, INVALID_TIME, TIME_OUT_OF_RANGE, INVALID_VALUE.
tasksobject[]Obrigatório. As tarefas em aberto dos veículos do lote, com os tempos recalculados.
tasks[].idstringObrigatório.
tasks[].statusstringObrigatório. Um de: created, assigned, picked_up, arriving, completed, failed, cancelled.
tasks[].etaETA | nullObrigatório.
200 OK
{
  "accepted": 0,
  "rejected": [
    {
      "index": 0,
      "reason": "VEHICLE_NOT_FOUND"
    }
  ],
  "tasks": [
    {
      "id": "string",
      "status": "created",
      "eta": {
        "at": "2026-10-15T09:00:00+01:00",
        "durationS": 0,
        "distanceM": 0,
        "trafficDelayS": 0,
        "pickupAt": "2026-10-15T09:00:00+01:00",
        "updatedAt": "2026-10-15T09:00:00+01:00"
      }
    }
  ]
}

Erros

  • default Erro