AperçuWebhooks

Webhooks

Notifications basées sur les événements

Webhooks

Les webhooks informent votre système en temps réel dès que le statut d'un Staffing Order, d'un shift ou d'une affectation change — sans que vous ayez à effectuer du polling.

Concept

Événement job.rocks → POST vers votre URL webhook → votre traitement

Événements disponibles

ÉvénementDéclencheur
staffing_order.status_changedLe statut de l'ordre change
shift.status_changedLe statut du shift change
assignment.confirmedAffectation confirmée
assignment.cancelledAffectation annulée
timesheet.validatedLes temps de travail ont été libérés

Payload

{
  "event_id": "evt_123",
  "event_type": "assignment.confirmed",
  "event_version": "1.0",
  "created_at": "2026-06-24T16:45:00Z",
  "data": {
    "order_id": "jr_order_123",
    "external_order_id": "PARTNER-ORDER-12345",
    "assignment_id": "jr_assignment_456",
    "external_shift_id": "PARTNER-SHIFT-987",
    "status": "confirmed"
  }
}
ChampDescription
event_idID d'événement unique (pour l'idempotence)
event_typeType d'événement (voir tableau ci-dessus)
event_versionVersion du schéma de l'événement
created_atHorodatage (ISO 8601, UTC)
dataDonnées spécifiques à l'événement

Sécurité

Vérification de signature

Chaque requête contient X-Jobrocks-Timestamp et X-Jobrocks-Signature. La signature est basée sur l'horodatage et le corps:

X-Jobrocks-Timestamp: 2026-06-24T16:45:00Z
X-Jobrocks-Signature: sha256=a1b2c3d4e5f6...

Base de signature: <timestamp>.<raw_body>

Vérification (Python):

import hmac, hashlib

def verify_signature(timestamp: str, payload_body: bytes, signature_header: str, secret: str) -> bool:
    signed = f"{timestamp}.".encode() + payload_body
    expected = "sha256=" + hmac.new(secret.encode(), signed, hashlib.sha256).hexdigest()
    return hmac.compare_digest(expected, signature_header)

Protection contre les rejeux

Si l'écart entre X-Jobrocks-Timestamp et l'heure du serveur est > 5 minutes, la requête doit être rejetée.

Pratiques recommandées

  1. Toujours vérifier la signature — empêche les requêtes falsifiées
  2. Répondre rapidement — renvoyer 200 OK, puis traiter de manière asynchrone
  3. Idempotence — stocker event_id pour éviter les doublons
  4. Ignorer les champs inconnus — de nouveaux champs optionnels peuvent être ajoutés à tout moment

Comportement de retry

Le comportement de retry des webhooks est configuré par intégration.

RéponseComportement
2xxSuccès, pas de retry
400, 401, 403, 404Erreur de configuration, pas de retry
408, 429, 5xx, timeoutRetry avec backoff exponentiel (si configuré)

Un retry avec backoff exponentiel et désactivation automatique en cas d'échec persistant est recommandé.

Configuration

Les webhooks sont configurés conjointement avec l'équipe job.rocks:

  1. Indiquer l'URL du webhook (HTTPS requis)
  2. Définir les événements souhaités
  3. Échanger le secret du webhook et le stocker de manière sécurisée
  4. Envoyer un événement de test