Documentation API Carrierweb EAI

Accedez aux donnees de votre flotte Carrierweb via une API REST JSON securisee. Cette application centralise les donnees vehicules, positions, conducteurs, trajets, telemetrie et alarmes pour chaque tenant.

Source des donnees

Les donnees exposees proviennent du systeme Carrierweb EAI (Enterprise Application Integration). Notre plateforme synchronise les tables cwReturn* du backend Carrierweb vers une base centralisee, puis les expose via cette API REST en isolant chaque tenant par EAICustomerID.

Endpoint APITable EAI sourceCle primaire
/vehiclescwReturnVehiclesCWVehicleID
/positionscwReturnVehiclePositionsID
/driverscwReturnDriversUpdateID
/tripscwReturnTripsUpdateID
/alarmscwReturnAlarmsID
/activitiescwReturnActivitiesExportID
/telemetrycwReturnTelemetryID
/canbuscwReturnTruckCanbusHistoryID
/landmarkscwReturnLandmarksUpdateID
/landmarkgroupscwReturnLandmarkGroupsUpdateID
Conventions Carrierweb
  • Coordonnees GPS : Latitude / Longitude sont exprimees en degres decimaux multiplies par 100000 (ex. 53.49°N → 5349000, 10.02°W → -1002000).
  • Distances : GPSOdometer en km×10 (123 = 12.3km), Speed en km/h.
  • Volumes : Fuel, IdleFuel, PTOFuel en 0.1L (125 = 12.5L), FuelLevel en 0.1% (123 = 12.3%).
  • CO2 en grammes.
  • Heures : tous les *Time sont en GMT (UTC). Le champ correspondant *TimeZone donne le decalage local en minutes.
  • VehicleType : 1 = camion (truck), 2 = remorque (trailer).
  • Cap : Heading / CurrentDirection en degres (0=Nord, 90=Est, 180=Sud, 270=Ouest).

Authentification

Toutes les requetes necessitent une cle API fournie par l administrateur. Transmettez-la via le header HTTP X-API-Key.

Comment obtenir votre cle API ?
Contactez l administrateur du systeme. Chaque tenant dispose d une cle API unique permettant d acceder uniquement aux donnees de son organisation.

Header requis

X-API-Key: votre-cle-api-ici

Vous pouvez aussi utiliser le header Authorization: Bearer votre-cle.

Base URL

https://api.carrierweb.ma/api/public/v1

Tous les endpoints ci-dessous sont prefixes par cette base URL.

Format de reponse

Toutes les reponses suivent la meme structure JSON. En cas de succes :

{ "success": true, "data": { "vehicles": [...], "tenant": "mon-tenant", "pagination": { "total": 145, "count": 20, "limit": 20, "offset": 0, "hasMore": true } } }

En cas d'erreur :

{ "success": false, "message": "Invalid or missing API key" }

Vehicules

GET/vehicles

Liste des vehicules du tenant. Filtres possibles : limit, offset, search, vehicleid, since, until.

ParametreTypeDescription
limitintegeroptionnel — Nombre de resultats (defaut: 100, max: 1000)
offsetintegeroptionnel — Decalage de pagination
searchstringoptionnel — Filtre textuel sur VehicleNumber ou VehicleName
vehicleidintegeroptionnel — Filtrer par CWVehicleID
sincestringoptionnel — Date debut (ISO 8601)
untilstringoptionnel — Date fin (ISO 8601)
curl -H "X-API-Key: votre-cle" \ "https://api.carrierweb.ma/api/public/v1/vehicles?limit=10&offset=0"
Champs retournes (cwReturnVehicles)
ChampTypeDescription
CWVehicleIDintIdentifiant unique Carrierweb du vehicule
VehicleNumberchar(10)InHouseId, identifiant client choisi par le tenant
VehicleTypetinyint1 = camion, 2 = remorque
VehicleDescriptionchar(56)Description libre du vehicule
Licensechar(15)Plaque d'immatriculation
Ownerchar(10)Proprietaire
LastLocationchar(56)Derniere position connue (texte)
LastLocationTimedatetimeHeure GMT de la derniere position
LastLocationTimeZoneintFuseau horaire local (minutes)
Latitude / LongitudeintDegres decimaux × 100000
GPSOdometerintOdometre GPS en km×10
TachoOdometerintOdometre tachygraphe
ZipCodevarchar(8)Code postal de la position
SpeedintVitesse en km/h
HeadingintCap en degres (0=N, 90=E, 180=S, 270=O)
ProximityDistanceintDistance vers Location la plus proche
ProximityDirectionintDirection de Location vers vehicule (compas)
Countryvarchar(4)Code ISO pays / etat
CWDriver0ID / Driver0Name / Driver0Numberint / charConducteur principal
CWDriver1ID / Driver1Name / Driver1Numberint / charCo-conducteur (le cas echeant)
LastReportTime / LastReportTimeZonedatetimeDernier rapport recu (GMT + tz)
HOSActivityId / HOSActivityTime / HOSActivityTimeZoneint / datetimeActivite HOS courante
LandmarkIDintPoint de repere actuel
BenchmarkIDintGroupe de benchmark (cwReturnBenchmarks)
DivisionIDintDivision
SubcontractorCodechar(10)Code sous-traitant
CWTrailerID / TrailerDescriptionint / char(15)Remorque attelee (si trailer matching)
MDTConfigurationVersionvarchar(56)Version de configuration MDT
LastCanbusTime / LastCanbusTimeZonedatetime / intDerniere mesure CAN
FuelLevelintNiveau actuel du reservoir (0.1%)
FuelLevelTime / FuelLevelTimeZonedatetime / intHeure du dernier releve niveau carburant
FuelintCarburant consomme (0.1L)
FuelCapacityintCapacite du reservoir (capacite × 10)
FuelCapacityMeasuretinyint0 = Litre, 1 = Gallon US, 2 = Gallon UK
Ignitionint0 = contact coupe, 1 = contact mis
LandmarkDescchar(255)Description du point de repere actuel
VINvarchar(30)Numero VIN du vehicule (si connu)
Hiddenint(3)0 = visible, 1 = vehicule masque sur le site web
GET/vehicles/{id}

Detail d'un vehicule par son identifiant (CWVehicleID).

GET/vehiclesBase

Version allegee de la liste vehicules (meme source de donnees, meme filtres). Utile pour recuperer rapidement les informations de base sans les champs etendus.

curl -H "X-API-Key: votre-cle" \ "https://api.carrierweb.ma/api/public/v1/vehiclesBase?limit=50"

Positions GPS

GET/positions

Historique des positions GPS des vehicules. La colonne de date utilisee est MeasuredTime.

ParametreTypeDescription
limitintegeroptionnel — Nombre de resultats (defaut: 100, max: 1000)
offsetintegeroptionnel — Decalage de pagination
vehicleidintegeroptionnel — Filtrer par CWVehicleID
sincestringoptionnel — Date debut (ISO 8601 ou YYYY-MM-DD)
untilstringoptionnel — Date fin (ISO 8601 ou YYYY-MM-DD)
curl -H "X-API-Key: votre-cle" \ "https://api.carrierweb.ma/api/public/v1/positions?vehicleid=250085&since=2026-02-12&until=2026-02-13"
Champs retournes (cwReturnVehiclePositions)
ChampTypeDescription
IDbigintIdentifiant unique de la position
CWVehicleID / VehicleNumber / VehicleTypeint / charReference vehicule
MeasuredTime / MeasuredTimeZonedatetime / intHeure GMT mesuree + fuseau local
ReceivedTime / ReceivedTimeZonedatetime / intHeure GMT de reception serveur
GpsValidint1 = position valide, 0 = invalide
Latitude / LongitudeintDegres decimaux × 100000
Countryvarchar(4)Code ISO pays / etat
Locationvarchar(30)Ville la plus proche
Zipcodevarchar(8)Code postal le plus proche
ProximityDistance / ProximityDirectionintDistance et direction vers Location
LargeCityName / LargeCityDistance / LargeCityDirectionvarchar / intGrande ville la plus proche
Ignitionint0 = contact coupe, 1 = contact mis
CurrentSpeedintVitesse instantanee (km/h)
CurrentDirectionintCap en degres
GPSOdometerintOdometre GPS en km×10
PositionTypeint(3)Type de position (voir Annexe I Carrierweb)
LandmarkIDbigintPoint de repere si dans une zone (cwReturnLandmarks.ID)
RoadNamevarchar(60)Nom de la route empruntee
RoadTypeint(3)Type de route (Annexe N Carrierweb)
Accuracyint0 = GPS, -1 = localisation par cellule. Autres valeurs : precision specifique
EaiSyncTimedatetimeHeure de synchronisation EAI
GET/positions/{id}

Detail d'un enregistrement de position par son ID.

Conducteurs

GET/drivers

Liste des conducteurs enregistres dans Carrierweb. La colonne de date utilisee est UpdateTime.

ParametreTypeDescription
limitintegeroptionnel — defaut: 100, max: 1000
offsetintegeroptionnel — Decalage de pagination
sincestringoptionnel — Date debut (ISO 8601 ou YYYY-MM-DD)
untilstringoptionnel — Date fin (ISO 8601 ou YYYY-MM-DD)
curl -H "X-API-Key: votre-cle" \ "https://api.carrierweb.ma/api/public/v1/drivers?limit=50"
Champs retournes (cwReturnDrivers)
ChampTypeDescription
ID / DriverIdbigintIdentifiants internes Carrierweb
DriverNumberchar(10)Numero conducteur (specifique client)
MDTLoginchar(15)Login utilise sur le terminal MDT
DriverNamechar(36)Nom complet
Salutationchar(20)Civilite
Phone / EmailcharCoordonnees
Address / City / Zipcode / CountrycharAdresse postale
HomeLocationLat / HomeLocationLongintCoordonnees domicile (degres × 100000)
Radius / UnitcharRayon autour du domicile
UpdateIDintPour synchronisation incrementale
TimeZonechar(56)Fuseau horaire du conducteur
SalaryNumberchar(15)Numero de paie
HOSRegulationsintReglementation HOS applicable au conducteur
HomeBasestextListe des bases d'attache (CSV)
MemberStateintCode numerique pays/region (Annexe J)
WebsiteThemeIdintTheme du site web (Annexe O)
DriverCardNumberchar(20)Numero de carte conducteur EU
Lockedtinyint0 = actif, 1 = compte verrouille
LockTime / LockTimeZonedatetime / intHeure de verrouillage du compte
GET/drivers/{id}

Detail d'un conducteur par son UpdateID.

Trajets

GET/trips

Liste des trajets effectues par les vehicules. Les colonnes de date utilisees sont StartTime et EndTime.

ParametreTypeDescription
limitintegeroptionnel — defaut: 100, max: 1000
offsetintegeroptionnel — Decalage de pagination
sincestringoptionnel — Date debut (ISO 8601 ou YYYY-MM-DD)
untilstringoptionnel — Date fin (ISO 8601 ou YYYY-MM-DD)
curl -H "X-API-Key: votre-cle" \ "https://api.carrierweb.ma/api/public/v1/trips?since=2026-04-01&until=2026-04-30"
Champs retournes (cwReturnTrips)
ChampTypeDescription
TripIDintNumero du trajet (Forward trip number)
TripReferencechar(20)Reference du trajet
EquipmentTypechar(3)Type d'equipement
DispatchTimedatetimeHeure d'envoi des instructions au vehicule (obligatoire)
CWTruckID / TruckNumberint / char(10)Camion affecte (CWVehicleID + InHouseId)
CWDriver0ID / Driver0Number / Driver0Nameint / charConducteur principal
CWDriver1ID / Driver1Number / Driver1Nameint / charCo-conducteur
CWTrailerID / TrailerNumberint / char(10)Remorque attribuee
CWContainer0ID / Container0Numberint / char(10)Conteneur 1
CWContainer1ID / Container1Numberint / char(10)Conteneur 2
UpdateIDintPour synchronisation incrementale
SortTimedatetimeHeure d'ordonnancement sur le MDT
StartLatitude / StartLongitudeintPosition prevue de debut (degres × 100000) — pour calcul ETA
EndLatitude / EndLongitudeintPosition prevue de fin (degres × 100000) — pour calcul ETA
ExpectedStartTimedatetimeHeure de debut prevue (utilisee pour ETA jusqu'au demarrage reel)
StartTime / EndTimedatetimeHeures de debut et fin reelles
CreateTimedatetimeHeure de creation du trajet
ServerSideAutoArriveDeparttinyint0 = non, 1 = oui (le trajet n'est pas envoye au vehicule)
AutoArriveDepartModeint0 = fin a l'arrivee derniere etape, 1 = fin au depart derniere etape
GET/trips/{id}

Detail d'un trajet par son UpdateID.

Telemetrie

GET/telemetry

Donnees de telemetrie : temperature, capteurs, etat du vehicule. La colonne de date utilisee est TimeStamp.

ParametreTypeDescription
limitintegeroptionnel — defaut: 100, max: 1000
offsetintegeroptionnel — Decalage de pagination
vehicleidintegeroptionnel — Filtrer par CWVehicleID
sincestringoptionnel — Date debut (ISO 8601 ou YYYY-MM-DD)
untilstringoptionnel — Date fin (ISO 8601 ou YYYY-MM-DD)
curl -H "X-API-Key: votre-cle" \ "https://api.carrierweb.ma/api/public/v1/telemetry?vehicleid=250085&since=2026-02-12&until=2026-02-13"
Champs retournes (cwReturnTelemetry)
ChampTypeDescription
IDbigintIdentifiant unique
CWVehicleID / VehicleNumber / VehicleTypeint / charReference vehicule
TransponderID / TransponderDescriptionint / char(50)Capteur ou transpondeur source
TelemetryTypeint20=RFID, 50=Temperature, 60=Porte ouverte, 61=Porte fermee, 80=Humidite, 1001=Carburant CAN, 1008=Niveau carburant
MeasuredTime / MeasuredTimeZonedatetime / intHeure GMT mesuree + fuseau local
Value0 / Value1intValeurs mesurees (selon TelemetryType)
ValueStringvarchar(255)Valeur textuelle (utilisee par certains TelemetryType)
MinValue / MaxValueintMin/Max sur la periode
TachoOdometerintOdometre tachygraphe
PositionReferencebigintID de la derniere position avant cet enregistrement
LastPositionTime / LastPositionTimeZonedatetime / intHeure GMT de la derniere position
GpsValidintValidite GPS
Latitude / LongitudeintDegres decimaux × 100000
EaiSyncTimedatetimeHeure de synchronisation EAI
GET/telemetry/{id}

Detail d'un enregistrement de telemetrie par son ID.

CAN Bus

GET/canbus

Donnees CAN Bus historiques (consommation carburant, kilometrage, charge moteur...). La colonne de date utilisee est MeasuredTime.

ParametreTypeDescription
limitintegeroptionnel — defaut: 100, max: 1000
offsetintegeroptionnel — Decalage de pagination
vehicleidintegeroptionnel — Filtrer par CWVehicleID
sincestringoptionnel — Date debut (ISO 8601 ou YYYY-MM-DD)
untilstringoptionnel — Date fin (ISO 8601 ou YYYY-MM-DD)
curl -H "X-API-Key: votre-cle" \ "https://api.carrierweb.ma/api/public/v1/canbus?vehicleid=250085&since=2026-02-12&until=2026-02-13"
Champs retournes (cwReturnTruckCanbusHistory)
ChampTypeDescription
IDbigintIdentifiant unique
CWVehicleID / VehicleNumber / VehicleTypeint / charReference vehicule
MeasuredTime / MeasuredTimeZonedatetime / intHeure GMT mesuree
CWDriverID / DriverNumber / DriverNameint / charConducteur en charge
OdometerintOdometre (0.1km, 123 = 12.3km)
FuelintCarburant consomme (0.1L)
CO2bigintCO2 emis (grammes)
FuelLevelintNiveau de reservoir (0.1%)
HighRPM / HighTorqueintTemps en haut regime / couple eleve
CruiseControlintTemps en regulateur de vitesse
Accelerations / OverSpeedintAcceleration brutales / exces de vitesse
BrakeApplications / HardBrakeApplicationsintFreinages / freinages durs
EngineRollout / EngineRunningTimeintRoue libre moteur / temps moteur tournant
IdleTime / IdleFuel / IdleCO2int / bigintTemps, carburant, CO2 au ralenti
PTOTime / PTOFuel / PTOCO2int / bigintPrise de force (Power Take-Off)
GreenZoneRPMFuel / Distance / TimeintConduite ecoresponsable
RetarderDistance / RetarderTimeintUtilisation du ralentisseur
CatalystLevelintNiveau AdBlue / catalyseur
LongIdleTimeintTemps de ralenti prolonge (secondes)
UnprocessedOdometerintOdometre brut ECU non corrige (0.1km)
GET/canbus/{id}

Detail d'un enregistrement CAN Bus par son ID.

Transpondeurs (site survey RF)

GET/transponders

Donnees de releve RF site survey (tags, positions, RSSI). La colonne de date utilisee est PositionTime.

ParametreTypeDescription
limitintegeroptionnel — defaut: 100, max: 1000
offsetintegeroptionnel — Decalage de pagination
vehicleidintegeroptionnel — Filtrer par CWVehicleID
sincestringoptionnel — Date debut (ISO 8601 ou YYYY-MM-DD)
untilstringoptionnel — Date fin (ISO 8601 ou YYYY-MM-DD)
curl -H "X-API-Key: votre-cle" \ "https://api.carrierweb.ma/api/public/v1/transponders?vehicleid=250085&since=2026-02-12&until=2026-02-13"
Champs retournes (cwReturnSiteSurveyTransponders)
ChampTypeDescription
IDbigintIdentifiant unique
CWVehicleID / VehicleNumber / VehicleTypeint / charReference vehicule
SiteSurveyIdintIdentifiant du releve (tous les tags d'un meme relege ont le meme SiteSurveyId)
TransponderIdintID Carrierweb du transpondeur (0 = tag non defini)
ThirdPartyIdintIdentifiant materiel du tag
Latitude / LongitudeintPosition (degres decimaux × 100000)
PositionTimedatetimeHeure de la position
RSSIintForce du signal (RSSI)
GET/transponders/{id}

Detail d'un enregistrement transpondeur par son ID.

Alarmes

GET/alarms

Liste des alarmes declenchees par les vehicules. La colonne de date utilisee est AlarmTime.

ParametreTypeDescription
limitintegeroptionnel — defaut: 100, max: 1000
offsetintegeroptionnel — Decalage de pagination
sincestringoptionnel — Date debut (ISO 8601 ou YYYY-MM-DD)
untilstringoptionnel — Date fin (ISO 8601 ou YYYY-MM-DD)
curl -H "X-API-Key: votre-cle" \ "https://api.carrierweb.ma/api/public/v1/alarms?since=2026-04-01&until=2026-04-30"
Champs retournes (cwReturnAlarms)
ChampTypeDescription
IDbigintIdentifiant unique de l'alarme
CWVehicleID / VehicleNumber / VehicleTypeint / charReference vehicule
AlarmTime / AlarmTimeZonedatetime / intHeure GMT de l'alarme + fuseau local
AlarmTypeintType d'alarme (voir Annexe H Carrierweb)
Value1intValeur numerique (sens depend du type)
Value2varchar(255)Valeur textuelle (sens depend du type)
Latitude / LongitudeintPosition au moment de l'alarme (degres × 100000)
Countryvarchar(4)Code ISO pays / etat
Location / ZipcodevarcharVille la plus proche et code postal
ProximityDistance / ProximityDirectionintDistance et direction vers Location
LandmarkIDbigintPoint de repere lie (cwReturnLandmarks.ID)
AlarmSubTypeintPour AlarmType 600 (Reefer) : 0=indef, 11=Carrier Advanced, 12=Carrier Summit, 20=ThermoKing, 30=SuperCool
GET/alarms/{id}

Detail d'une alarme par son ID.

Activites vehicules

GET/activities

Activites des vehicules : mouvements, arrets, changements d'etat. La colonne de date utilisee est TimeStamp.

ParametreTypeDescription
limitintegeroptionnel — defaut: 100, max: 1000
offsetintegeroptionnel — Decalage de pagination
sincestringoptionnel — Date debut (ISO 8601 ou YYYY-MM-DD)
untilstringoptionnel — Date fin (ISO 8601 ou YYYY-MM-DD)
curl -H "X-API-Key: votre-cle" \ "https://api.carrierweb.ma/api/public/v1/activities?since=2026-04-20"
Champs retournes (cwReturnActivities)
ChampTypeDescription
ID / ExportID / NextActivityIDbigintIdentifiants internes / chainage des activites
CWVehicleID / VehicleNumber / VehicleTypeint / charReference vehicule
StartTime / StartTimeZonedatetime / intDebut de l'activite (GMT + fuseau local)
EndTime / EndTimeZonedatetime / intFin de l'activite (non corrigee)
ActivityIdintType d'activite (Conduite, Chargement, etc.)
ActivityNamevarchar(56)Libelle de l'activite
SubActivityIdintToujours 0 (non utilise)
MinTime / MaxTimeintBornes temporelles
CWDriver0ID / Driver0Number / Driver0Nameint / charConducteur principal
CWDriver1ID / Driver1Number / Driver1Nameint / charCo-conducteur
CWVehicleTripID / TripNumber / HOSTripNumberbigint / charReference trajet vehicule
TripID / JobIDintReference trajet/job du module consignment
HomeBaseint0 = hors base, 1 = en base, 2 = domicile, >2 = base custom
StartLatitude / StartLongitudeintPosition au debut (degres × 100000)
StartCountry / StartLocation / StartZipCodevarcharLocalisation de debut
StartProximityDistance / StartProximityDirectionintProximite de debut
StartGPSOdometer / StartTachoOdometerintOdometres au debut
StartFuel / StartCO2 / StartFuelLevelint / bigintCarburant et CO2 au debut
StartLandmarkIdbigintPoint de repere au debut
EndLatitude / EndLongitudeintPosition de fin (degres × 100000)
EndCountry / EndLocation / EndZipCodevarcharLocalisation de fin
EndProximityDistance / EndProximityDirectionintProximite de fin
EndGPSOdometer / EndTachoOdometerintOdometres a la fin
EndFuel / EndCO2 / EndFuelLevelint / bigintCarburant et CO2 a la fin
EndLandmarkIdbigintPoint de repere a la fin
CorrectedDurationintDuree corrigee en secondes (cloture journaliere uniquement)
Trailer / CWTrailerIDvarchar / intRemorque attachee
CreationTypeint1 = HOS embarque, 3 = serveur (minuit, etc.)
LoggingCategoryint0=indef, 1=off duty, 2=sleeper, 3=on duty driving, 4=on duty not driving
LoggingCategoryInactiveDriverintCategorie du conducteur inactif
TripCustomerchar(20)Client du trajet (saisie chauffeur)
VehicleDescriptionchar(56)Description du vehicule
Deletedtinyint0 = non modifie, 1 = supprime, 2 = mis a jour, 3 = insere
GET/activities/{id}

Detail d'une activite par son ExportID.

Points de repere

GET/landmarks

Points de repere (zones, sites, depots) configures dans Carrierweb.

ParametreTypeDescription
limitintegeroptionnel — defaut: 100, max: 1000
offsetintegeroptionnel — Decalage de pagination
sincestringoptionnel — Date debut (ISO 8601 ou YYYY-MM-DD)
untilstringoptionnel — Date fin (ISO 8601 ou YYYY-MM-DD)
curl -H "X-API-Key: votre-cle" \ "https://api.carrierweb.ma/api/public/v1/landmarks"
Champs retournes (cwReturnLandmarks)
ChampTypeDescription
IDbigintIdentifiant unique du point de repere
Descriptionchar(255)Nom / description du repere
Latitude / LongitudeintCoordonnees centrale (degres × 100000)
Radius / RadiusUnitintRayon de la zone et son unite
Typeint1=Client, 2=Base, 3=Bureau, 4=Frontiere, 5=Ferry, 6=Gare, 7=Aire de repos, 8=Station-service, 9=Depot, 99=Autre
Polygon / Nodestinyint / textPolygone defini (si Polygon=1, Nodes liste les sommets)
Deletedint1 = supprime, 0 = actif
UpdateIDbigintPour synchronisation incrementale
MaxStayintDuree max de stationnement autorisee
GenerateAlarmEntry / DepartureintGenerer alarme a l'entree / sortie
GenerateEmailEntry / DepartureintGenerer email a l'entree / sortie
GenerateTemplateEntry / DepartureintGenerer message template a l'entree / sortie
EMailEntry / EMailDeparturechar(100)Adresses email destinataires
GroupIDintGroupe de reperes (cf. /landmarkgroups)
GET/landmarks/{id}

Detail d'un point de repere par son UpdateID.

GET/landmarkgroups

Groupes de points de repere configures dans Carrierweb.

curl -H "X-API-Key: votre-cle" \ "https://api.carrierweb.ma/api/public/v1/landmarkgroups"
Champs retournes (cwReturnLandmarkGroups)
ChampTypeDescription
UpdateIDbigintIdentifiant pour synchronisation incrementale
GroupIDintIdentifiant du groupe
RootIDintIdentifiant du groupe parent (hierarchie)
DescriptiontextNom / description du groupe
GET/landmarkgroups/{id}

Detail d'un groupe de points de repere par son UpdateID.

Pagination & filtres

Tous les endpoints de liste supportent la pagination via limit et offset, et le filtrage par date via since / until (ou alias after / before). Le filtre par vehicule vehicleid est disponible sur les ressources positions, canbus, telemetry et vehicles.

ParametreDefautMaxDescription
limit1001000Nombre de resultats par page
offset0Decalage pour la pagination
sinceDate debut — ISO 8601 ou YYYY-MM-DD
untilDate fin — ISO 8601 ou YYYY-MM-DD
vehicleidFiltrer par CWVehicleID (integer)

La reponse inclut un objet pagination avec le champ hasMore pour determiner s'il reste des pages :

curl -H "X-API-Key: votre-cle" \ "https://api.carrierweb.ma/api/public/v1/positions?limit=500&offset=500&since=2026-04-01"

Colonnes de date par ressource

RessourceColonne de date (since/until)
vehicles / vehiclesBaseLastPositionTime, LastMessageTime, UpdateTime
positionsMeasuredTime
tripsStartTime, EndTime, UpdateTime
driversUpdateTime
alarmsAlarmTime, AcknowledgeTime
activitiesTimeStamp, ActivityTime
telemetryTimeStamp, MeasuredTime
canbusMeasuredTime
landmarks— (pas de colonne de date)
Polling incremental
Pour recuperer uniquement les nouvelles donnees depuis votre derniere synchronisation, utilisez since=2026-04-27T08:00:00Z avec limit=1000. Bouclez en incrementant offset tant que hasMore est true.

Codes d'erreur

Code HTTPCode APIDescription
400BAD_REQUESTParametres invalides ou manquants
401UNAUTHORIZEDCle API invalide ou manquante
403FORBIDDENTenant desactive ou suspendu
404NOT_FOUNDRessource introuvable
429RATE_LIMITEDTrop de requetes
500SERVER_ERRORErreur serveur interne

Exemples d'integration

cURL

# Liste des vehicules curl -H "X-API-Key: votre-cle" "https://api.carrierweb.ma/api/public/v1/vehicles?limit=50" # Positions d'un vehicule sur une journee curl -H "X-API-Key: votre-cle" \ "https://api.carrierweb.ma/api/public/v1/positions?vehicleid=250085&since=2026-04-27&until=2026-04-28" # Toutes les alarmes du mois curl -H "X-API-Key: votre-cle" \ "https://api.carrierweb.ma/api/public/v1/alarms?since=2026-04-01&until=2026-04-30" # Pagination : page 3 (offset=200, limit=100) curl -H "X-API-Key: votre-cle" \ "https://api.carrierweb.ma/api/public/v1/trips?limit=100&offset=200"

JavaScript (fetch)

const API_KEY = 'votre-cle'; const BASE = 'https://api.carrierweb.ma/api/public/v1'; async function apiGet(path) { const res = await fetch(BASE + path, { headers: { 'X-API-Key': API_KEY } }); return res.json(); } // Recuperer tous les vehicules (avec pagination automatique) async function getAllVehicles() { let all = [], offset = 0; while (true) { const r = await apiGet('/vehicles?limit=1000&offset=' + offset); if (!r.success) throw new Error(r.message); all = all.concat(r.data.vehicles); if (!r.data.pagination.hasMore) break; offset += 1000; } return all; }

Python

import requests API_KEY = 'votre-cle' BASE_URL = 'https://api.carrierweb.ma/api/public/v1' HEADERS = {'X-API-Key': API_KEY} def get_vehicles(): resp = requests.get(f'{BASE_URL}/vehicles', headers=HEADERS, params={'limit': 100}) resp.raise_for_status() return resp.json()['data']['vehicles'] def get_positions(vehicle_id, since, until): resp = requests.get( f'{BASE_URL}/positions', headers=HEADERS, params={'vehicleid': vehicle_id, 'since': since, 'until': until, 'limit': 1000} ) resp.raise_for_status() return resp.json()['data']['positions'] vehicles = get_vehicles() positions = get_positions(250085, '2026-04-27', '2026-04-28')

PHP

$apiKey = 'votre-cle'; $baseUrl = 'https://api.carrierweb.ma/api/public/v1'; function cwEaiGet(string $path, string $apiKey, string $baseUrl): array { $ctx = stream_context_create(['http' => [ 'header' => 'X-API-Key: ' . $apiKey ]]); $json = file_get_contents($baseUrl . $path, false, $ctx); return json_decode($json, true); } // Recuperer les vehicules $result = cwEaiGet('/vehicles?limit=100', $apiKey, $baseUrl); foreach ($result['data']['vehicles'] as $v) { echo $v['VehicleNumber'] . PHP_EOL; }

Limites et bonnes pratiques

LimiteValeur
Resultats max par requete1 000 enregistrements
ProtocoleHTTPS obligatoire
AuthentificationCle API par tenant — ne pas partager
Frequence recommandee1 appel / minute maximum par ressource
Securite
Ne stockez jamais votre cle API dans le code source ou dans un depot Git public. Utilisez des variables d'environnement ou un gestionnaire de secrets.