---
title: "R320 (audit Lucas Vidal-Hofmann iPaaS, 2026-05-23) — Webhook entrant"
method: POST
path: "/api/v1/integrations/dropbox-sign/webhook"
tags: ["Intégrations"]
---

# R320 (audit Lucas Vidal-Hofmann iPaaS, 2026-05-23) — Webhook entrant

`POST /api/v1/integrations/dropbox-sign/webhook`

## Request

- Base URL: `https://erp.eyeot.fr/api/v1`
- URL: `https://erp.eyeot.fr/api/v1/api/v1/integrations/dropbox-sign/webhook`
- Auth: none declared

R320 (audit Lucas Vidal-Hofmann iPaaS, 2026-05-23) — Webhook entrant
    Dropbox Sign : reçoit les events `signature_request_*` et update les
    statuts des entités métier (Quote, Offer, Candidate, EmployeeContract).

    PUBLIC endpoint (pas de JWT) — l'authenticité du payload est vérifiée
    via HMAC-SHA256 du body avec le `webhook_secret` (per-org, stocké dans
    `Integration.credentials.webhook_secret`).

    Convention Dropbox Sign (cf https://developers.hellosign.com/api/reference/callback/) :
    - Header `X-Hellosign-Event-Hash` ou champ `event_hash` dans le payload
    - Signature = HMAC-SHA256(api_key, event_time + event_type) en hex.

    Format payload type :
        {
          "event": {
            "event_type": "signature_request_all_signed",
            "event_time": "1684000000",
            "event_hash": "abc123..."
          },
          "signature_request": {
            "signature_request_id": "sr_xxx",
            ...
          }
        }

    Dropbox Sign exige une réponse text/plain `Hello API Event Received`
    pour valider l'endpoint. On répond toujours 200 (sauf signature
    invalide) sinon Dropbox Sign retry et désactive le hook.

## Response `200`

Succès — payload `{data, meta}` (cf. API-GUIDE §3.1)

## Other responses

- `201`: Ressource créée. ID dans `data.id`.
- `400`: Validation Marshmallow échouée. `errors` détaille chaque champ invalide.
- `404`: Ressource introuvable (ou cross-tenant — équivalent à hidden).
- `409`: État incohérent (email dupliqué, ressource déjà dans cet état, etc.).
- `422`: Validation Marshmallow échouée. `errors` détaille chaque champ invalide.
- `429`: Trop de requêtes. Honorer le header `Retry-After` (secondes).

---

[API](https://skmtc.dev/eyeot/apis/eyeot-erp-api.md) · [All operations](https://skmtc.dev/eyeot/apis/eyeot-erp-api/llms.txt) · [OpenAPI document](https://skmtc.dev/eyeot/apis/eyeot-erp-api/revisions/42ab95222a89?raw)
