Overflow Webhooks API

The Webhooks API from Overflow — 3 operation(s) for webhooks.

OpenAPI Specification

overflow-webhooks-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Overflow Open Campaigns Webhooks API
  description: '

    The documentation for the Overflow Open APIs.


    To access the OpenAPI spec in JSON/YAML format, navigate to:


    * `/api/docs/openapi.json`

    * `/api/docs/openapi.yaml`

    '
  version: '3.0'
  contact: {}
servers:
- url: https://server.stage.overflow.co
  description: API server
tags:
- name: Webhooks
paths:
  /api/v3/webhooks:
    get:
      description: Returns webhook subscriptions for the authenticated nonprofit. Results are paginated using limit and page.
      operationId: OpenApiWebhooksController_getWebhooks
      parameters:
      - name: limit
        required: false
        in: query
        description: The number of webhook subscriptions to return.
        schema:
          minimum: 1
          maximum: 100
          default: 25
          type: number
      - name: page
        required: false
        in: query
        description: The page number of webhook subscriptions to return.
        schema:
          minimum: 1
          default: 1
          type: number
      - name: sortDirection
        required: false
        in: query
        description: Sort direction by webhook subscription created date. Defaults to descending.
        schema:
          example: DESC
          enum:
          - ASC
          - DESC
          type: string
      - name: status
        required: false
        in: query
        description: Filter by webhook subscription status.
        schema:
          example: enabled
          enum:
          - enabled
          - disabled
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetWebhooksResponse'
      security:
      - ClientId: []
        ApiKey: []
      summary: Get Webhooks
      tags:
      - Webhooks
  /api/v3/webhooks/{webhookId}:
    get:
      description: Returns a single webhook subscription by id for the authenticated nonprofit.
      operationId: OpenApiWebhooksController_getWebhookById
      parameters:
      - name: webhookId
        required: true
        in: path
        schema:
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetWebhookResponse'
        '404':
          description: Webhook subscription not found
      security:
      - ClientId: []
        ApiKey: []
      summary: Get Webhook
      tags:
      - Webhooks
  /api/v3/webhooks/{webhookId}/event-logs:
    get:
      description: Returns webhook delivery logs for a webhook subscription owned by the authenticated nonprofit. Results are cursor paginated.
      operationId: OpenApiWebhooksController_getWebhookEventLogs
      parameters:
      - name: webhookId
        required: true
        in: path
        schema:
          type: string
      - name: limit
        required: false
        in: query
        description: The number of webhook event logs to return.
        schema:
          minimum: 1
          maximum: 50
          type: number
      - name: cursor
        required: false
        in: query
        description: Cursor for loading the next page of webhook event logs.
        schema:
          type: string
      - name: sortDirection
        required: false
        in: query
        description: Sort direction by webhook event log attempt order. Defaults to descending.
        schema:
          example: DESC
          enum:
          - ASC
          - DESC
          type: string
      - name: status
        required: false
        in: query
        description: Filter by webhook delivery status.
        schema:
          example: failed
          enum:
          - delivered
          - failed
          - pending
          type: string
      - name: webhookEventName
        required: false
        in: query
        description: Filter by webhook event name.
        schema:
          example: contribution.approved
          enum:
          - '*'
          - contribution.approved
          - contribution.declined
          - contribution.paid_out
          - contribution.processing
          - contribution.chargeback_lost
          - contribution.chargeback_pending
          - contribution.chargeback_won
          - contribution.refund_approved
          - contribution.refund_canceled
          - contribution.refund_failed
          - contribution.refund_requested
          - contribution.refund_requires_action
          - contribution.refunded
          - contribution.voided
          - donor.archived
          - donor.created
          - donor.merged
          - donor.updated
          - deposit.paid_out
          - recurring_gift.active
          - recurring_gift.cycle_failed
          - recurring_gift.failed
          - recurring_gift.inactive
          - recurring_gift.paused
          - recurring_gift.updated
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetWebhookEventLogsResponse'
        '404':
          description: Webhook subscription not found
      security:
      - ClientId: []
        ApiKey: []
      summary: Get Webhook Event Logs
      tags:
      - Webhooks
components:
  schemas:
    GetWebhookResponse:
      type: object
      properties:
        data:
          type: object
          properties:
            id:
              type: string
              description: Webhook subscription id.
              example: 6817cec907243f2d3a1130df
            name:
              type: string
              description: Webhook subscription name.
              example: Main webhook endpoint
            description:
              type: string
              nullable: true
              description: Webhook subscription description.
              example: Receives contribution events for reporting.
            destinationUrl:
              type: string
              format: uri
              description: Subscription destination URL.
              example: https://example.org/webhooks/overflow
            enabledEvents:
              type: array
              items:
                type: string
                enum:
                - '*'
                - contribution.approved
                - contribution.declined
                - contribution.paid_out
                - contribution.processing
                - contribution.chargeback_lost
                - contribution.chargeback_pending
                - contribution.chargeback_won
                - contribution.refund_approved
                - contribution.refund_canceled
                - contribution.refund_failed
                - contribution.refund_requested
                - contribution.refund_requires_action
                - contribution.refunded
                - contribution.voided
                - donor.archived
                - donor.created
                - donor.merged
                - donor.updated
                - deposit.paid_out
                - recurring_gift.active
                - recurring_gift.cycle_failed
                - recurring_gift.failed
                - recurring_gift.inactive
                - recurring_gift.paused
                - recurring_gift.updated
              description: Event names that trigger this subscription.
              example:
              - contribution.approved
            status:
              type: string
              enum:
              - enabled
              - disabled
              description: Subscription status.
              example: enabled
            createdAt:
              type: string
              format: date-time
              description: Date the subscription was created.
              example: '2026-05-19T00:00:00.000Z'
            updatedAt:
              type: string
              format: date-time
              description: Date the subscription was last updated.
              example: '2026-05-20T00:00:00.000Z'
          required:
          - id
          - name
          - description
          - destinationUrl
          - enabledEvents
          - status
          - createdAt
          - updatedAt
          description: Webhook subscription.
      required:
      - data
    GetWebhookEventLogsResponse:
      type: object
      properties:
        data:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                description: Webhook attempt id.
                example: 018f7349-6db2-7d07-9c15-cd7b9f671111
              eventId:
                type: string
                description: Originating domain event id.
                example: 018f7349-6db2-7d07-9c15-cd7b9f670000
              webhookEventName:
                type: string
                enum:
                - '*'
                - contribution.approved
                - contribution.declined
                - contribution.paid_out
                - contribution.processing
                - contribution.chargeback_lost
                - contribution.chargeback_pending
                - contribution.chargeback_won
                - contribution.refund_approved
                - contribution.refund_canceled
                - contribution.refund_failed
                - contribution.refund_requested
                - contribution.refund_requires_action
                - contribution.refunded
                - contribution.voided
                - donor.archived
                - donor.created
                - donor.merged
                - donor.updated
                - deposit.paid_out
                - recurring_gift.active
                - recurring_gift.cycle_failed
                - recurring_gift.failed
                - recurring_gift.inactive
                - recurring_gift.paused
                - recurring_gift.updated
                description: Webhook event type.
                example: contribution.approved
              subscriptionId:
                type: string
                description: Webhook subscription id.
                example: 6817cec907243f2d3a1130df
              status:
                type: string
                enum:
                - delivered
                - failed
                - pending
                description: Delivery status.
                example: delivered
              attemptNumber:
                type: number
                description: Attempt number for this delivery job.
                example: 1
              deliverySource:
                type: string
                enum:
                - automated
                - manual
                description: Whether the delivery was triggered automatically or via a manual dashboard resend.
                example: automated
              originatedAt:
                type: string
                format: date-time
                description: Date the originating event occurred.
                example: '2026-05-19T00:00:00.000Z'
              attemptedAt:
                type: string
                format: date-time
                description: Date this webhook delivery attempt was made.
                example: '2026-05-19T00:00:01.000Z'
              request:
                type: object
                properties:
                  url:
                    type: string
                    format: uri
                    description: Request URL.
                    example: https://example.org/webhooks/overflow
                  body:
                    type: string
                    description: Request body payload.
                    example: '{"id":"evt_1","type":"contribution.approved"}'
                required:
                - url
                - body
                description: Webhook request details.
              response:
                type: object
                properties:
                  code:
                    type: number
                    description: HTTP status code returned by the destination.
                    example: 200
                  body:
                    type: string
                    description: Response body returned by the destination.
                    example: ok
                  durationMs:
                    type: number
                    description: Delivery duration in milliseconds.
                    example: 50
                  errorMessage:
                    type: string
                    description: Transport or HTTP error message when delivery failed.
                    example: connection timeout
                nullable: true
                description: Webhook response details.
            required:
            - id
            - eventId
            - webhookEventName
            - subscriptionId
            - status
            - attemptNumber
            - deliverySource
            - originatedAt
            - attemptedAt
            - request
            - response
          description: List of webhook event logs.
        pageInfo:
          type: object
          properties:
            hasNextPage:
              type: boolean
              description: Whether more rows are available after this page.
              example: true
            nextCursor:
              type: string
              nullable: true
              description: Cursor token for the next page, or null when exhausted.
              example: eyJwayI6Ik5PTlBST0ZJVCM2ODE3Y2VjOTA3MjQzZjJkM2ExMTMwZGYifQ==
          required:
          - hasNextPage
          - nextCursor
          description: Cursor pagination details.
      required:
      - data
      - pageInfo
    GetWebhooksResponse:
      type: object
      properties:
        data:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                description: Webhook subscription id.
                example: 6817cec907243f2d3a1130df
              name:
                type: string
                description: Webhook subscription name.
                example: Main webhook endpoint
              description:
                type: string
                nullable: true
                description: Webhook subscription description.
                example: Receives contribution events for reporting.
              destinationUrl:
                type: string
                format: uri
                description: Subscription destination URL.
                example: https://example.org/webhooks/overflow
              enabledEvents:
                type: array
                items:
                  type: string
                  enum:
                  - '*'
                  - contribution.approved
                  - contribution.declined
                  - contribution.paid_out
                  - contribution.processing
                  - contribution.chargeback_lost
                  - contribution.chargeback_pending
                  - contribution.chargeback_won
                  - contribution.refund_approved
                  - contribution.refund_canceled
                  - contribution.refund_failed
                  - contribution.refund_requested
                  - contribution.refund_requires_action
                  - contribution.refunded
                  - contribution.voided
                  - donor.archived
                  - donor.created
                  - donor.merged
                  - donor.updated
                  - deposit.paid_out
                  - recurring_gift.active
                  - recurring_gift.cycle_failed
                  - recurring_gift.failed
                  - recurring_gift.inactive
                  - recurring_gift.paused
                  - recurring_gift.updated
                description: Event names that trigger this subscription.
                example:
                - contribution.approved
              status:
                type: string
                enum:
                - enabled
                - disabled
                description: Subscription status.
                example: enabled
              createdAt:
                type: string
                format: date-time
                description: Date the subscription was created.
                example: '2026-05-19T00:00:00.000Z'
              updatedAt:
                type: string
                format: date-time
                description: Date the subscription was last updated.
                example: '2026-05-20T00:00:00.000Z'
            required:
            - id
            - name
            - description
            - destinationUrl
            - enabledEvents
            - status
            - createdAt
            - updatedAt
          description: List of webhook subscriptions.
        totalCount:
          type: number
          description: Total number of webhook subscriptions matching the provided filters.
          example: 2
      required:
      - data
      - totalCount
  securitySchemes:
    ApiKey:
      type: apiKey
      in: header
      name: x-api-key
      description: API Key for API authentication
    ClientId:
      type: apiKey
      in: header
      name: x-client-id
      description: Client ID for API authentication