JuriSign · AsyncAPI Specification

Jurisign Webhooks

Version

View Spec View on GitHub Electronic SignatureE-SignatureeIDASDocument SigningPDFWebhookOTPGDPRFranceLegal TechIdentity VerificationAudit Traildata-residency-euAsyncAPIWebhooksEvents

AsyncAPI Specification

Raw ↑
generated: '2026-08-31'
method: searched
source: https://www.jurisign.fr/api/openapi.json
sources:
- https://www.jurisign.fr/api/openapi.json
- https://www.jurisign.fr/api/guide
- https://www.jurisign.fr/developpeurs
asyncapi_spec_published: false
asyncapi_probe:
  url: https://www.jurisign.fr/api/asyncapi.yaml
  status: 404
asyncapi_note: >-
  JuriSign publishes no AsyncAPI document and no event catalog file. It does publish a real, managed webhook
  surface with a closed event enum inside the OpenAPI, so this artifact records that webhook catalogue. No
  AsyncAPI was authored on the provider's behalf.
transport: https-webhook
delivery: at-least-once
management_api:
  description: Webhook endpoints are first-class API resources with their own CRUD, delivery logs and secret rotation.
  operations:
  - operationId: listWebhooks
    method: GET
    path: /webhooks
  - operationId: createWebhook
    method: POST
    path: /webhooks
  - operationId: updateWebhook
    method: PUT
    path: /webhooks/{id}
  - operationId: deleteWebhook
    method: DELETE
    path: /webhooks/{id}
  - operationId: getWebhookLogs
    method: GET
    path: /webhooks/{id}/logs
  - operationId: regenerateWebhookSecret
    method: POST
    path: /webhooks/{id}/regenerate-secret
  scope_required: webhooks:manage
subscription:
  endpoint_constraint: HTTPS URL, max 500 characters
  events_constraint: At least one event must be subscribed.
  registration_example: |
    curl -X POST https://www.jurisign.fr/api/v1/webhooks \
      -H "Authorization: Bearer $TOKEN" \
      -H "Content-Type: application/json" \
      -d '{"url":"https://your-app.com/webhooks/jurisign",
           "events":["sign_request.completed","signer.signed"]}'
event_count: 12
events:
- name: sign_request.sent
  description: The signature request was sent to its signers.
- name: sign_request.completed
  description: Every signer has signed.
- name: sign_request.cancelled
  description: The signature request was cancelled.
- name: sign_request.relaunched
  description: The signature request was relaunched / reminded.
- name: sign_request.submitted_for_approval
  description: The signature request entered an internal approval step.
- name: sign_request.approved
  description: The signature request was approved.
- name: sign_request.rejected
  description: The signature request was rejected at approval.
- name: signer.signed
  description: An individual signer has signed.
- name: signer.declined
  description: An individual signer declined to sign.
- name: public_form.submitted
  description: A respondent submitted a public self-signing form.
- name: payment.completed
  description: A pay-at-signature payment was captured.
- name: payment.failed
  description: A pay-at-signature payment failed.
events_source: openapi/jurisign-api-openapi.yml#/paths/~1webhooks/post/requestBody - the enum is closed in the spec.
security:
  signing: HMAC-SHA256
  secret_delivery: >-
    The signing secret is returned once, in the 201 response to createWebhook, and is never shown again. Rotate it
    with POST /webhooks/{id}/regenerate-secret; the old secret stops working immediately.
  header:
    name: X-Jurisign-Signature
    format: 'sha256=<hex>'
    source: https://www.jurisign.fr/developpeurs
  documentation_conflict:
    description: >-
      The two published pages disagree on the header name. The developer page (current, matching the v3.24.1 spec
      era) shows `X-Jurisign-Signature: sha256=…`; the older integration guide says to check `X-Signature`.
      Recorded as a conflict rather than resolved, because JuriSign publishes both and neither is in the OpenAPI.
    developer_page: 'X-Jurisign-Signature: sha256=…'
    integration_guide: X-Signature
retry_policy:
  attempts: 8
  window: ~42 hours
  source: https://www.jurisign.fr/developpeurs
  statement: '"Signes HMAC-SHA256, 8 tentatives sur ~42 h. Une panne chez vous ne perd pas l''evenement."'
  documentation_conflict:
    description: >-
      The integration guide states an older, smaller policy - 3 automatic attempts at 1 min, 5 min and 30 min.
      The developer page states 8 attempts over roughly 42 hours. Both are published; the 8/42h figure is the one
      the provider markets as current and is corroborated by the WebhookLog schema, which carries `attempts` and
      `next_retry_at` fields.
    integration_guide: 3 attempts (1 min, 5 min, 30 min)
    developer_page: 8 attempts over ~42 hours
observability:
  operation: getWebhookLogs
  path: /webhooks/{id}/logs
  log_fields: [id, event, status, response_status, attempts, next_retry_at, created_at]
  log_status_enum: [success, pending, failed]
  endpoint_stats: 'WebhookEndpoint carries a stats object: success, failed, pending counts.'
sandbox_behaviour:
  webhooks_fire: true
  note: >-
    Webhooks are delivered for real even with a sandbox_ token, deliberately - "un webhook qu'on ne recoit pas ne
    prouve rien."

Work with this as data

Every AsyncAPI spec here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for asyncapi

4 MCP tools reach this
  • find_asyncapisBrowse and filter every AsyncAPI spec in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This AsyncAPI spec
curl "https://apis.io/api/v1/asyncapis/jurisign-webhooks"
All asyncapi
curl "https://apis.io/api/v1/asyncapis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.