Bridge Webhooks API

Manage webhook endpoints that receive real-time POST events from Bridge for listing create/update/delete and other dataset changes, eliminating the need to poll the Web API. Endpoints require an HTTPS URL with a valid X.509 certificate; Bridge issues a PKI public key (PEM) for payload signature verification. Events are delivered as application/json; endpoints must respond 200 quickly. Failed deliveries are retried with exponential backoff for up to two days. Webhooks begin in a disabled state for testing before activation.

Bridge Webhooks API is one of 4 APIs that Bridge publishes on the APIs.io network.

This API exposes 1 machine-runnable capability that can be deployed as REST, MCP, or Agent Skill surfaces via Naftiko.

Tagged areas include Real Estate, Webhooks, Events, and Real-time. The published artifact set on APIs.io includes API documentation and 1 Naftiko capability spec.

OpenAPI Specification

bridge-webhooks-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Bridge Webhooks API
  version: '2.0'
  description: |
    Manage webhook endpoints that receive real-time POST events from Bridge for listing change events.
    Endpoints require an HTTPS URL with a valid X.509 certificate; Bridge issues a PKI public key
    (PEM) for payload signature verification. Failed deliveries retry with exponential backoff for
    up to two days. New endpoints start disabled for testing before activation.
servers:
- url: https://api.bridgedataoutput.com/api/v2
security:
- AccessToken: []
tags:
- name: Webhooks
paths:
  /{dataset}/webhooks:
    get:
      tags: [Webhooks]
      summary: List Webhook Endpoints
      operationId: listWebhooks
      parameters:
      - $ref: '#/components/parameters/Dataset'
      responses:
        '200':
          description: Webhook collection
          content:
            application/json:
              schema: { type: object }
    post:
      tags: [Webhooks]
      summary: Create Webhook Endpoint
      operationId: createWebhook
      parameters:
      - $ref: '#/components/parameters/Dataset'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [url, events]
              properties:
                url: { type: string, format: uri, description: HTTPS endpoint with a valid X.509 certificate. }
                events:
                  type: array
                  items: { type: string, enum: [property.created, property.updated, property.deleted, member.updated, office.updated] }
                description: { type: string }
      responses:
        '201':
          description: Webhook created (disabled state)
          content:
            application/json:
              schema:
                type: object
                properties:
                  id: { type: string }
                  url: { type: string }
                  status: { type: string, enum: [disabled, active] }
                  publicKey: { type: string, description: PEM-encoded PKI public key for verifying event signatures. }
  /{dataset}/webhooks/{webhookId}:
    get:
      tags: [Webhooks]
      summary: Get Webhook Endpoint
      operationId: getWebhook
      parameters:
      - $ref: '#/components/parameters/Dataset'
      - { name: webhookId, in: path, required: true, schema: { type: string } }
      responses:
        '200':
          description: Webhook record
          content:
            application/json:
              schema: { type: object }
    patch:
      tags: [Webhooks]
      summary: Update Webhook Endpoint
      operationId: updateWebhook
      parameters:
      - $ref: '#/components/parameters/Dataset'
      - { name: webhookId, in: path, required: true, schema: { type: string } }
      requestBody:
        content:
          application/json:
            schema: { type: object }
      responses:
        '200':
          description: Updated webhook
          content:
            application/json:
              schema: { type: object }
    delete:
      tags: [Webhooks]
      summary: Delete Webhook Endpoint
      operationId: deleteWebhook
      parameters:
      - $ref: '#/components/parameters/Dataset'
      - { name: webhookId, in: path, required: true, schema: { type: string } }
      responses:
        '204':
          description: Deleted
  /{dataset}/webhooks/{webhookId}/test:
    post:
      tags: [Webhooks]
      summary: Test Webhook Endpoint
      description: Sends a test event to the endpoint while in disabled state to verify reachability and signature handling.
      operationId: testWebhook
      parameters:
      - $ref: '#/components/parameters/Dataset'
      - { name: webhookId, in: path, required: true, schema: { type: string } }
      responses:
        '200':
          description: Test delivery result
          content:
            application/json:
              schema: { type: object }
components:
  securitySchemes:
    AccessToken:
      type: apiKey
      in: query
      name: access_token
  parameters:
    Dataset:
      name: dataset
      in: path
      required: true
      schema: { type: string }