Synup Webhooks/Webhooks API

The Webhooks/Webhooks API from Synup — 0 operation(s) for webhooks/webhooks.

Work with this as data

Every API 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 apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • 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 API
curl "https://apis.io/api/v1/apis/synup-webhooks-webhooks-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

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

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

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

OpenAPI Specification

synup-webhooks-webhooks-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Synup Webhooks Webhooks/Webhooks API
  version: 1.0.0
  description: 'Synup account webhook events. A single account-level HTTPS Webhooks URL receives every event; there is no per-event subscription. Every delivery is signed with X-Synup-Signature: sha256=base64(HMAC-SHA256(signing_secret, raw_request_body)), and deliveries only start after the endpoint.verification challenge-response handshake passes.


    ASSEMBLED BY API EVANGELIST from the per-event OpenAPI 3.1 documents Synup publishes at developer.synup.com; the webhook payload schemas are verbatim provider content. Guide: https://developer.synup.com/synup-webhooks-doc-2259000'
  contact:
    name: Synup Webhooks Guide
    url: https://developer.synup.com/synup-webhooks-doc-2259000
tags:
- name: Webhooks/Webhooks
paths: {}
webhooks:
  social_connection.ad_account_status_changed:
    post:
      summary: Ad account status changed
      deprecated: false
      description: '<span style="font-size: 14px;">


        **Event name:** `social_connection.ad_account_status_changed`


        A connected ad account''s status changed. Scope: brand-scoped (location_id is null). Delivered as a signed HTTP POST to your Webhooks URL.


        </span>'
      tags:
      - Webhooks/Webhooks
      parameters:
      - name: X-Synup-Signature
        in: header
        description: sha256=base64(HMAC-SHA256(signing_secret, raw_request_body)). Verify with your signing secret before processing; reject on mismatch.
        required: true
        example: sha256=Base64Signature==
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                event:
                  type: string
                  description: Dotted event name.
                timestamp:
                  type: string
                  description: ISO-8601 UTC time the event was emitted.
                account_id:
                  type: integer
                  description: Synup account the event belongs to.
                location_id:
                  type: string
                  description: Numeric string for location-scoped events; null for brand-scoped events.
                data:
                  type: object
                  properties:
                    ad_account_id:
                      type: string
                      description: Ad account UUID.
                    previous_status:
                      type: string
                      description: Prior status.
                    current_status:
                      type: string
                      description: New status.
                    platform:
                      type: string
                      description: Ad platform.
                    error_reason:
                      type: string
                      description: Error detail when the new status is an error state.
                  x-apidog-orders:
                  - ad_account_id
                  - previous_status
                  - current_status
                  - platform
                  - error_reason
              x-apidog-orders:
              - event
              - timestamp
              - account_id
              - location_id
              - data
            example:
              event: social_connection.ad_account_status_changed
              timestamp: '2026-07-15T10:30:00Z'
              account_id: 11073
              location_id: null
              data:
                ad_account_id: ad-77
                previous_status: active
                current_status: disabled
                platform: facebook
                error_reason: Payment method failed
      responses:
        '200':
          description: Your endpoint acknowledges receipt with any 2xx. A non-2xx response or a timeout (>10s) is treated as a failed delivery.
          content:
            application/json:
              schema:
                type: object
                properties: {}
                x-apidog-orders: []
          headers: {}
          x-apidog-name: ''
      security: []
      x-apidog-folder: Webhooks/Webhooks
      x-apidog-status: released
      x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-40143155-run
  idea_image.generation_job_completed:
    post:
      summary: AI idea image generated
      deprecated: false
      description: '<span style="font-size: 14px;">


        **Event name:** `idea_image.generation_job_completed`


        An AI image for an idea finished generating. Scope: local or social (see the top-level scope field). Delivered as a signed HTTP POST to your Webhooks URL.


        </span>'
      tags:
      - Webhooks/Webhooks
      parameters:
      - name: X-Synup-Signature
        in: header
        description: sha256=base64(HMAC-SHA256(signing_secret, raw_request_body)). Verify with your signing secret before processing; reject on mismatch.
        required: true
        example: sha256=Base64Signature==
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                event:
                  type: string
                  description: Dotted event name.
                timestamp:
                  type: string
                  description: ISO-8601 UTC time the event was emitted.
                account_id:
                  type: integer
                  description: Synup account the event belongs to.
                location_id:
                  type: string
                  description: Numeric string for location-scoped events; null for brand-scoped events.
                scope:
                  type: string
                  description: 'AI post-idea events only: "local" or "social".'
                data:
                  type: object
                  properties:
                    idea_id:
                      type: string
                      description: Idea the image belongs to.
                    image_url:
                      type: string
                      description: The generated image URL (completed only).
                    flux_job_id:
                      type: string
                      description: Image-job id (null for the synchronous batch path).
                    social_profile_id:
                      type: string
                      description: Brand id (scope:"social" only).
                  x-apidog-orders:
                  - idea_id
                  - image_url
                  - flux_job_id
                  - social_profile_id
              x-apidog-orders:
              - event
              - timestamp
              - account_id
              - location_id
              - scope
              - data
            example:
              event: idea_image.generation_job_completed
              timestamp: '2026-07-15T07:10:00Z'
              account_id: 19598
              location_id: null
              scope: social
              data:
                idea_id: idea-90211
                image_url: https://cdn.example.com/i/90211.jpg
                flux_job_id: flux-3321
                social_profile_id: c81d4e2e-..
      responses:
        '200':
          description: Your endpoint acknowledges receipt with any 2xx. A non-2xx response or a timeout (>10s) is treated as a failed delivery.
          content:
            application/json:
              schema:
                type: object
                properties: {}
                x-apidog-orders: []
          headers: {}
          x-apidog-name: ''
      security: []
      x-apidog-folder: Webhooks/Webhooks
      x-apidog-status: released
      x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-40515006-run
  idea_image.generation_job_failed:
    post:
      summary: AI idea image generation failed
      deprecated: false
      description: '<span style="font-size: 14px;">


        **Event name:** `idea_image.generation_job_failed`


        An AI image for an idea failed generating. Scope: local or social (see the top-level scope field). Delivered as a signed HTTP POST to your Webhooks URL.


        </span>'
      tags:
      - Webhooks/Webhooks
      parameters:
      - name: X-Synup-Signature
        in: header
        description: sha256=base64(HMAC-SHA256(signing_secret, raw_request_body)). Verify with your signing secret before processing; reject on mismatch.
        required: true
        example: sha256=Base64Signature==
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                event:
                  type: string
                  description: Dotted event name.
                timestamp:
                  type: string
                  description: ISO-8601 UTC time the event was emitted.
                account_id:
                  type: integer
                  description: Synup account the event belongs to.
                location_id:
                  type: string
                  description: Numeric string for location-scoped events; null for brand-scoped events.
                scope:
                  type: string
                  description: 'AI post-idea events only: "local" or "social".'
                data:
                  type: object
                  properties:
                    idea_id:
                      type: string
                      description: Idea the image belongs to.
                    error:
                      type: string
                      description: Customer-safe reason, bounded to <=200 chars (failed only).
                    flux_job_id:
                      type: string
                      description: Image-job id (null for the synchronous batch path).
                    social_profile_id:
                      type: string
                      description: Brand id (scope:"social" only).
                  x-apidog-orders:
                  - idea_id
                  - error
                  - flux_job_id
                  - social_profile_id
              x-apidog-orders:
              - event
              - timestamp
              - account_id
              - location_id
              - scope
              - data
            example:
              event: idea_image.generation_job_failed
              timestamp: '2026-07-15T07:12:00Z'
              account_id: 19598
              location_id: null
              scope: social
              data:
                idea_id: idea-90211
                error: Image generation failed
                flux_job_id: flux-3321
                social_profile_id: c81d4e2e-..
      responses:
        '200':
          description: Your endpoint acknowledges receipt with any 2xx. A non-2xx response or a timeout (>10s) is treated as a failed delivery.
          content:
            application/json:
              schema:
                type: object
                properties: {}
                x-apidog-orders: []
          headers: {}
          x-apidog-name: ''
      security: []
      x-apidog-folder: Webhooks/Webhooks
      x-apidog-status: released
      x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-40515007-run
  idea.scheduled_as_post:
    post:
      summary: AI idea scheduled as post
      deprecated: false
      description: '<span style="font-size: 14px;">


        **Event name:** `idea.scheduled_as_post`


        An idea was linked to a published social post (social only). Scope: social (see the top-level scope field). Delivered as a signed HTTP POST to your Webhooks URL.


        </span>'
      tags:
      - Webhooks/Webhooks
      parameters:
      - name: X-Synup-Signature
        in: header
        description: sha256=base64(HMAC-SHA256(signing_secret, raw_request_body)). Verify with your signing secret before processing; reject on mismatch.
        required: true
        example: sha256=Base64Signature==
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                event:
                  type: string
                  description: Dotted event name.
                timestamp:
                  type: string
                  description: ISO-8601 UTC time the event was emitted.
                account_id:
                  type: integer
                  description: Synup account the event belongs to.
                location_id:
                  type: string
                  description: Numeric string for location-scoped events; null for brand-scoped events.
                scope:
                  type: string
                  description: 'AI post-idea events only: "local" or "social".'
                data:
                  type: object
                  properties:
                    idea_id:
                      type: string
                      description: Idea id.
                    social_profile_id:
                      type: string
                      description: Brand/social-profile id.
                    social_post_id:
                      type: string
                      description: The social post the idea was linked to.
                    series_id:
                      type: string
                      description: Content series id, if any.
                  x-apidog-orders:
                  - idea_id
                  - social_profile_id
                  - social_post_id
                  - series_id
              x-apidog-orders:
              - event
              - timestamp
              - account_id
              - location_id
              - scope
              - data
            example:
              event: idea.scheduled_as_post
              timestamp: '2026-07-15T07:30:00Z'
              account_id: 19598
              location_id: null
              scope: social
              data:
                idea_id: idea-90211
                social_profile_id: c81d4e2e-..
                social_post_id: 7f3a1c9e-..
                series_id: series-11
      responses:
        '200':
          description: Your endpoint acknowledges receipt with any 2xx. A non-2xx response or a timeout (>10s) is treated as a failed delivery.
          content:
            application/json:
              schema:
                type: object
                properties: {}
                x-apidog-orders: []
          headers: {}
          x-apidog-name: ''
      security: []
      x-apidog-folder: Webhooks/Webhooks
      x-apidog-status: released
      x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-40143157-run
  idea_pipeline.scrape_completed:
    post:
      summary: AI idea scrape completed
      deprecated: false
      description: '<span style="font-size: 14px;">


        **Event name:** `idea_pipeline.scrape_completed`


        A website-analysis scrape job for idea generation completed. Scope: local or social (see the top-level scope field). Delivered as a signed HTTP POST to your Webhooks URL.


        </span>'
      tags:
      - Webhooks/Webhooks
      parameters:
      - name: X-Synup-Signature
        in: header
        description: sha256=base64(HMAC-SHA256(signing_secret, raw_request_body)). Verify with your signing secret before processing; reject on mismatch.
        required: true
        example: sha256=Base64Signature==
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                event:
                  type: string
                  description: Dotted event name.
                timestamp:
                  type: string
                  description: ISO-8601 UTC time the event was emitted.
                account_id:
                  type: integer
                  description: Synup account the event belongs to.
                location_id:
                  type: string
                  description: Numeric string for location-scoped events; null for brand-scoped events.
                scope:
                  type: string
                  description: 'AI post-idea events only: "local" or "social".'
                data:
                  type: object
                  properties:
                    scrape_job_id:
                      type: string
                      description: Scrape job id.
                    pipeline_status_id:
                      type: string
                      description: Associated pipeline-status id.
                    site_url:
                      type: string
                      description: The scraped URL (completed only).
                    social_profile_id:
                      type: string
                      description: Brand id (scope:"social" only).
                  x-apidog-orders:
                  - scrape_job_id
                  - pipeline_status_id
                  - site_url
                  - social_profile_id
              x-apidog-orders:
              - event
              - timestamp
              - account_id
              - location_id
              - scope
              - data
            example:
              event: idea_pipeline.scrape_completed
              timestamp: '2026-07-15T06:45:00Z'
              account_id: 19598
              location_id: '279381'
              scope: local
              data:
                scrape_job_id: scrape-441
                pipeline_status_id: ps-77
                site_url: https://acmecoffee.com
      responses:
        '200':
          description: Your endpoint acknowledges receipt with any 2xx. A non-2xx response or a timeout (>10s) is treated as a failed delivery.
          content:
            application/json:
              schema:
                type: object
                properties: {}
                x-apidog-orders: []
          headers: {}
          x-apidog-name: ''
      security: []
      x-apidog-folder: Webhooks/Webhooks
      x-apidog-status: released
      x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-40143159-run
  idea_pipeline.scrape_failed:
    post:
      summary: AI idea scrape failed
      deprecated: false
      description: '<span style="font-size: 14px;">


        **Event name:** `idea_pipeline.scrape_failed`


        A website-analysis scrape job for idea generation failed terminally. Scope: local or social (see the top-level scope field). Delivered as a signed HTTP POST to your Webhooks URL.


        </span>'
      tags:
      - Webhooks/Webhooks
      parameters:
      - name: X-Synup-Signature
        in: header
        description: sha256=base64(HMAC-SHA256(signing_secret, raw_request_body)). Verify with your signing secret before processing; reject on mismatch.
        required: true
        example: sha256=Base64Signature==
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                event:
                  type: string
                  description: Dotted event name.
                timestamp:
                  type: string
                  description: ISO-8601 UTC time the event was emitted.
                account_id:
                  type: integer
                  description: Synup account the event belongs to.
                location_id:
                  type: string
                  description: Numeric string for location-scoped events; null for brand-scoped events.
                scope:
                  type: string
                  description: 'AI post-idea events only: "local" or "social".'
                data:
                  type: object
                  properties:
                    scrape_job_id:
                      type: string
                      description: Scrape job id.
                    pipeline_status_id:
                      type: string
                      description: Associated pipeline-status id.
                    error_message:
                      type: string
                      description: Customer-safe reason, bounded to <=200 chars (failed only).
                    social_profile_id:
                      type: string
                      description: Brand id (scope:"social" only).
                  x-apidog-orders:
                  - scrape_job_id
                  - pipeline_status_id
                  - error_message
                  - social_profile_id
              x-apidog-orders:
              - event
              - timestamp
              - account_id
              - location_id
              - scope
              - data
            example:
              event: idea_pipeline.scrape_failed
              timestamp: '2026-07-15T06:50:00Z'
              account_id: 19598
              location_id: '279381'
              scope: local
              data:
                scrape_job_id: scrape-441
                pipeline_status_id: ps-77
                error_message: Website could not be reached
      responses:
        '200':
          description: Your endpoint acknowledges receipt with any 2xx. A non-2xx response or a timeout (>10s) is treated as a failed delivery.
          content:
            application/json:
              schema:
                type: object
                properties: {}
                x-apidog-orders: []
          headers: {}
          x-apidog-name: ''
      security: []
      x-apidog-folder: Webhooks/Webhooks
      x-apidog-status: released
      x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-40515005-run
  idea_series.all_posts_generated:
    post:
      summary: AI idea series completed
      deprecated: false
      description: '<span style="font-size: 14px;">


        **Event name:** `idea_series.all_posts_generated`


        All slots in a content series finished generating. Scope: local or social (see the top-level scope field). Delivered as a signed HTTP POST to your Webhooks URL.


        </span>'
      tags:
      - Webhooks/Webhooks
      parameters:
      - name: X-Synup-Signature
        in: header
        description: sha256=base64(HMAC-SHA256(signing_secret, raw_request_body)). Verify with your signing secret before processing; reject on mismatch.
        required: true
        example: sha256=Base64Signature==
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                event:
                  type: string
                  description: Dotted event name.
                timestamp:
                  type: string
                  description: ISO-8601 UTC time the event was emitted.
                account_id:
                  type: integer
                  description: Synup account the event belongs to.
                location_id:
                  type: string
                  description: Numeric string for location-scoped events; null for brand-scoped events.
                scope:
                  type: string
                  description: 'AI post-idea events only: "local" or "social".'
                data:
                  type: object
                  properties:
                    series_id:
                      type: string
                      description: Content series id.
                    generated_count:
                      type: integer
                      description: Slots that generated successfully.
                    social_profile_id:
                      type: string
                      description: Brand id (scope:"social" only).
                  x-apidog-orders:
                  - series_id
                  - generated_count
                  - social_profile_id
              x-apidog-orders:
              - event
              - timestamp
              - account_id
              - location_id
              - scope
              - data
            example:
              event: idea_series.all_posts_generated
              timestamp: '2026-07-15T07:45:00Z'
              account_id: 19598
              location_id: '279381'
              scope: local
              data:
                series_id: series-11
                generated_count: 8
      responses:
        '200':
          description: Your endpoint acknowledges receipt with any 2xx. A non-2xx response or a timeout (>10s) is treated as a failed delivery.
          content:
            application/json:
              schema:
                type: object
                properties: {}
                x-apidog-orders: []
          headers: {}
          x-apidog-name: ''
      security: []
      x-apidog-folder: Webhooks/Webhooks
      x-apidog-status: released
      x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-40143158-run
  idea.generated:
    post:
      summary: AI post idea generated
      deprecated: false
      description: '<span style="font-size: 14px;">


        **Event name:** `idea.generated`


        A new AI post idea was generated. Scope: local or social (see the top-level scope field). Delivered as a signed HTTP POST to your Webhooks URL.


        </span>'
      tags:
      - Webhooks/Webhooks
      parameters:
      - name: X-Synup-Signature
        in: header
        description: sha256=base64(HMAC-SHA256(signing_secret, raw_request_body)). Verify with your signing secret before processing; reject on mismatch.
        required: true
        example: sha256=Base64Signature==
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                event:
                  type: string
                  description: Dotted event name.
                timestamp:
                  type: string
                  description: ISO-8601 UTC time the event was emitted.
                account_id:
                  type: integer
                  description: Synup account the event belongs to.
                location_id:
                  type: string
                  description: Numeric string for location-scoped events; null for brand-scoped events.
                scope:
                  type: string
                  description: 'AI post-idea events only: "local" or "social".'
                data:
                  type: object
                  properties:
                    idea_id:
                      type: string
                      description: Idea id.
                    source:
                      type: string
                      description: How the idea was generated.
                    idea_summary:
                      type: object
                      description: 'Summary: title, content_excerpt, image_url.'
                      x-apidog-orders: []
                    generation_batch_id:
                      type: string
                      description: Batch this idea belongs to.
                    social_profile_id:
                      type: string
                      description: Brand/social-profile id (scope:"social" only).
                  x-apidog-orders:
                  - idea_id
                  - source
                  - idea_summary
                  - generation_batch_id
                  - social_profile_id
              x-apidog-orders:
              - event
              - timestamp
              - account_id
              - location_id
              - scope
              - data
            example:
              event: idea.generated
              timestamp: '2026-07-15T07:20:00Z'
              account_id: 19598
              location_id: '279381'
              scope: local
              data:
                idea_id: idea-90211
                source: scheduled
                idea_summary:
                  title: Weekend special
                  content_excerpt: Try our new seasonal latte...
                  image_url: https://cdn.example.com/i/90211.jpg
                generation_batch_id: batch-9
      responses:
        '200':
          description: Your endpoint acknowledges receipt with any 2xx. A non-2xx response or a timeout (>10s) is treated as a failed delivery.
          content:
            application/json:
              schema:
                type: object
                properties: {}
                x-apidog-orders: []
          headers: {}
          x-apidog-name: ''
      security: []
      x-apidog-folder: Webhooks/Webhooks
      x-apidog-status: released
      x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-40143156-run
  social_post.boost_active:
    post:
      summary: Boost active
      deprecated: false
      description: '<span style="font-size: 14px;">


        **Event name:** `social_post.boost_active`


        A boost went live and is actively spending. Scope: brand-scoped (location_id is null). Delivered as a signed HTTP POST to your Webhooks URL.


        </span>'
      tags:
      - Webhooks/Webhooks
      parameters:
      - name: X-Synup-Signature
        in: header
        description: sha256=base64(HMAC-SHA256(signing_secret, raw_request_body)). Verify with your signing secret before processing; reject on mismatch.
        required: true
        example: sha256=Base64Signature==
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                event:
                  type: string
                  description: Dotted event name.
                timestamp:
                  type: string
                  description: ISO-8601 UTC time the event was emitted.
                account_id:
                  type: integer
                  description: Synup account the event belongs to.
                location_id:
                  type: string
                  description: Numeric string for location-scoped events; null for brand-scoped events.
                data:
                  type: object
                  properties:
                    ad_run_id:
                      type: string
                      description: Ad-run UUID.
                    is_boost:
                      type: boolean
                      description: Always true for boost events.
                    boost_state:
                      type: string
                      description: Boost state ("active").
                    post_id:
                      type: string
                      description: Boosted social post UUID.
                    social_profile_id:
                      type: string
                      description: Brand UUID.
                    platform:
                      type: string
                      description: Ad platform (e.g. facebook).
                  x-apidog-orders:
                  - ad_run_id
                  - is_boost
                  - boost_state
                  - post_id
                  - social_profile_id
                  - platform
              x-apidog-orders:
              - event
              - timestamp
              - account_id
              - location_id
              - data
            example:
              event: social_post.boost_active
              timestamp: '2026-07-15T13:00:00Z'
              account_id: 11073
              location_id: null
              data:
                ad_run_id: ar_101
                is_boost: true
                boost_state: active
                post_id: 7a1c...
                social_profile_id: b2d4...
                platform: facebook
      responses:
        '200':
          description: Your endpoint acknowledges receipt with any 2xx. A non-2xx response or a timeout (>10s) is treated as a failed delivery.
          content:
            application/json:
              schema:
                type: object
                properties: {}
                x-apidog-orders: []
          headers: {}
          x-apidog-name: ''
      security: []
      x-apidog-folder: Webhooks/Webhooks
      x-apidog-status: released
      x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-40143149-run
  social_post.boost_created:
    post:
      summary: Boost created
      deprecated: false
      description: '<span style="font-size: 14px;">


        **Event name:** `social_post.boost_created

# --- truncated at 32 KB (150 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/synup/refs/heads/main/openapi/synup-webhooks-webhooks-api-openapi.yml