> ## Documentation Index
> Fetch the complete documentation index at: https://api-docs.useopenwrench.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Wrenchmode

# Données de suivi du temps WrenchMode dans l'API Fournisseur

> Extrayez le temps de conduite et de travail par technicien depuis WrenchMode : le rollup d'analyse, le journal d'événements brut avec ses filtres, et les modèles d'intégration paie.

WrenchMode capture ce que les techniciens font réellement de leur temps : conduire, travailler, mettre en pause. L'API Fournisseur l'expose de deux manières : un **rollup d'analyse par technicien** pour les rapports, et le **journal d'événements brut** pour l'audit et la reconstitution par visite.

Tous les exemples supposent :

```bash theme={null}
export BASE="https://api.useopenwrench.com/api/external"
export KEY="<your-api-key>"
export SECRET="<shared-secret>"
```

## Analyse par technicien

`GET /v1/supplier/wrench_mode/events/analytics/{fromDate}/{toDate}` retourne une ligne par technicien avec son temps de conduite, son temps de travail et son total sur la fenêtre.

```bash theme={null}
# Une semaine de temps de technicien
curl -H "X-API-KEY: $KEY" -H "OW-KEY: $SECRET" \
  "$BASE/v1/supplier/wrench_mode/events/analytics/2026-08-10/2026-08-16"

# Seulement les techniciens sous un superviseur
curl -H "X-API-KEY: $KEY" -H "OW-KEY: $SECRET" \
  "$BASE/v1/supplier/wrench_mode/events/analytics/2026-08-10/2026-08-16?supervisorEmail=lead@supplier.com"
```

Contraintes :

* Les deux dates sont au format `yyyy-MM-dd`, et la fenêtre peut couvrir **au plus un mois**. Divisez les plages plus longues en appels d'un mois.
* Le rollup couvre l'établissement fournisseur de votre clé d'API. Une clé dont le contact n'est pas rattaché à un établissement fournisseur reçoit `401`.

## Le journal d'événements brut

`GET /v1/supplier/wrench_mode/events` retourne les événements sous-jacents, restreints à votre fournisseur. Filtres :

| Paramètre                                    | Notes                                                                                                                                                                                                                                                                                          |
| -------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `workOrderId`, `serviceCallId`, `locationId` | Restreindre à un travail, une visite ou un site.                                                                                                                                                                                                                                               |
| `scheduleId`                                 | Un horaire WrenchMode. **Désactive la pagination** : la chronologie complète des événements de l'horaire est retournée en une seule réponse.                                                                                                                                                   |
| `eventTypes`                                 | Séparés par des virgules. Valeurs valides : `began_trip`, `trip_paused`, `trip_resumed`, `arrived`, `trip_cancelled`, `drive_note`, `started_work`, `ended_work`, `location_started`, `location_paused`, `location_resumed`, `location_ended`. Les valeurs inconnues sont rejetées avec `400`. |
| `supplierEmails`                             | Courriels de techniciens séparés par des virgules, appariés sans tenir compte de la casse.                                                                                                                                                                                                     |
| `fromDate`, `toDate`                         | `yyyy-MM-dd`; les dates malformées donnent `400`.                                                                                                                                                                                                                                              |

La pagination standard (`offset`, `limit` max 25, `sort_by`, `order`) s'applique sauf sous `scheduleId`. Un piège de formatage : un filtre CSV présent mais vide (par exemple `eventTypes=,`) est rejeté comme malformé plutôt qu'ignoré.

```bash theme={null}
# Tous les événements de travail pour un bon de travail
curl -H "X-API-KEY: $KEY" -H "OW-KEY: $SECRET" \
  "$BASE/v1/supplier/wrench_mode/events?workOrderId=9001&eventTypes=started_work,ended_work"

# Une journée d'un technicien
curl -H "X-API-KEY: $KEY" -H "OW-KEY: $SECRET" \
  "$BASE/v1/supplier/wrench_mode/events?supplierEmails=tech@supplier.com&fromDate=2026-08-21&toDate=2026-08-21&limit=25"
```

Le vocabulaire d'événements se divise en événements de trajet (`began_trip` jusqu'à `trip_cancelled`, plus `drive_note`) et événements de travail (`started_work`, `ended_work`, et les événements de minuterie `location_*` qui marquent les pauses et reprises sur place).

## Choisir entre les deux

* **Analyse** pour les tableaux de bord, la paie et les rapports d'utilisation : un chiffre par technicien par période, avec les calculs de pauses déjà faits.
* **Événements bruts** pour auditer un total suspect, reconstituer une visite minute par minute, ou alimenter votre propre entrepôt d'analyse.
* Les questions **par visite** sont généralement mieux servies par l'expansion d'appel de service `GET /v1/supplier/work_order/service_calls/{id}/with_work_logs`, qui retourne exactement les événements dans la fenêtre arrivée/départ de la visite plus le `trueWorkTimeMillis` hors pauses. Voir [Appels de service](/supplier-api/service-calls#reading-a-service-call-back).

## Modèles éprouvés

**Extraction hebdomadaire de la paie.** Chaque lundi, appelez l'analyse pour la semaine précédente, joignez sur le courriel du technicien contre votre système de paie, et utilisez le temps de travail plus le temps de conduite comme entrée d'heures payées. Un appel par semaine par établissement vous garde loin sous la limite de débit.

**Rapport d'utilisation mensuel.** Analyse avec des bornes de mois (`2026-08-01` à `2026-08-31` reste dans la limite d'un mois); divisez le temps de travail par le temps planifié depuis votre système de gestion d'horaires.

**Réconciliation du coût de main-d'œuvre sur une facture.** Pour chaque appel de service sur le bon de travail facturé, récupérez `/with_work_logs`, additionnez `trueWorkTimeMillis`, et comparez aux postes de main-d'œuvre avant que l'acheteur ne voie une contestation.
