SignWell Webhooks API

Subscribe to document lifecycle events via webhook callbacks.

OpenAPI Specification

signwell-webhooks-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: SignWell Developer API Application Webhooks API
  description: API for creating, managing, and tracking electronic signature workflows.
  version: v1
  termsOfService: https://www.signwell.com/terms/
  contact:
    email: support@signwell.com
servers:
- url: https://www.signwell.com
tags:
- name: Webhooks
  description: Subscribe to document lifecycle events via webhook callbacks.
paths:
  /api/v1/hooks:
    get:
      summary: List Webhooks
      description: List all the webhooks in the account.
      tags:
      - Webhooks
      security:
      - api_key: []
      operationId: listWebhooks
      responses:
        '200':
          description: ok
          content:
            application/json:
              example:
              - id: a6b55a29-218d-4766-ad94-8d418c5bda98
                callback_url: http://greenfelder.example/ngoc
              - id: 1afbb05a-42e4-4304-8c11-ec3978c00056
                callback_url: http://olson-ledner.example/mack
              - id: b9b5527b-d2ce-4816-bde0-c0942b5c9d66
                callback_url: http://wyman.test/quintin
              - id: 2677e7fa-de5f-4de0-8e40-c4706923889f
                callback_url: http://spinka.test/athena.gerlach
                api_application_id: 5e544e05-56db-48f5-9b47-061dd985b2c6
              - id: f6be99fa-1dac-487d-a352-994d48c8a158
                callback_url: http://schmidt.example/nanci
                api_application_id: 5e544e05-56db-48f5-9b47-061dd985b2c6
              - id: 84491f67-989d-485d-b46c-44e022fac543
                callback_url: http://cassin-walker.test/kaley
                api_application_id: 5e544e05-56db-48f5-9b47-061dd985b2c6
              - id: c2f3cbd5-7277-42c8-ba99-56436870e9f7
                callback_url: http://schiller-sauer.test/sybil
                api_application_id: 5e544e05-56db-48f5-9b47-061dd985b2c6
              - id: af0e3552-8116-4fc6-80d1-beb8f8e13d1a
                callback_url: http://greenfelder-conroy.example/carmelo.stokes
                api_application_id: 5e544e05-56db-48f5-9b47-061dd985b2c6
              schema:
                $ref: '#/components/schemas/WebhookListResponse'
        '429':
          description: rate limit exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RateLimitErrorResponse'
    post:
      summary: Create Webhook
      description: Register a callback URL that we will post document events to.
      tags:
      - Webhooks
      security:
      - api_key: []
      operationId: createWebhook
      parameters: []
      responses:
        '201':
          description: created
          content:
            application/json:
              example:
                id: 782111c8-f182-4067-8fc0-d7ba8d3e87ae
                callback_url: http://prohaska.test/della
              schema:
                $ref: '#/components/schemas/WebhookResponse'
        '400':
          description: bad request
          content:
            application/json:
              example:
                message: Bad request (bad request data)
                meta:
                  error: invalid_parameter
                  message: 'Invalid parameter: callback_url must be present'
                  messages:
                  - 'Invalid parameter: callback_url must be present'
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: rate limit exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RateLimitErrorResponse'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                callback_url:
                  type: string
                  format: url
                  description: URL that we will post document events to.
                  example: https://example.com/webhook
                api_application_id:
                  type: string
                  format: uuid
                  description: Unique identifier for the API Application.
              required:
              - callback_url
        required: true
  /api/v1/hooks/{id}:
    delete:
      summary: Delete Webhook
      description: Deletes a registered callback URL that we are posting document events to.
      tags:
      - Webhooks
      security:
      - api_key: []
      operationId: deleteWebhook
      parameters:
      - name: id
        in: path
        schema:
          type: string
          format: uuid
          description: Unique identifier for a webhook.
        required: true
      responses:
        '204':
          description: no content
        '404':
          description: not found
          content:
            application/json:
              example:
                message: Not found
                meta:
                  error: record_not_found
                  message: Couldn't find the hook requested
                  messages:
                  - Couldn't find the hook requested
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: rate limit exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RateLimitErrorResponse'
components:
  schemas:
    WebhookResponse:
      type: object
      description: Webhook subscription
      properties:
        id:
          type: string
          format: uuid
        callback_url:
          type: string
          format: url
        api_application_id:
          type: string
          format: uuid
          nullable: true
      required:
      - id
      - callback_url
    WebhookListResponse:
      type: array
      description: List of webhook subscriptions
      items:
        $ref: '#/components/schemas/WebhookResponse'
    RateLimitErrorResponse:
      type: object
      description: Rate limit exceeded error response (HTTP 429)
      properties:
        error:
          type: string
          description: Rate limit error message indicating the limit and reset time
      required:
      - error
    ErrorResponse:
      type: object
      description: Standard error response
      properties:
        message:
          type: string
          description: Human-readable error message
        meta:
          type: object
          properties:
            error:
              type: string
              description: Error code identifier
            message:
              type: string
              description: Detailed error message
            messages:
              type: array
              items:
                type: string
              description: List of error messages
          required:
          - error
          - message
  securitySchemes:
    api_key:
      type: apiKey
      name: X-Api-Key
      in: header