Pipedrive · AsyncAPI Specification

Pipedrive Webhooks v2

Version 2.0.0

AsyncAPI description of the Pipedrive Webhooks v2 surface. Pipedrive delivers webhook notifications as HTTP `POST` requests carrying a JSON body. A webhook subscription is identified by combining two parameters, `event_action` and `event_object`, joined with a dot (for example `create.deal`, `change.person`, `delete.organization`). The wildcard `*` is accepted in either position (for example `*.*`, `*.deal`, `create.*`). Delivery semantics are documented at https://pipedrive.readme.io/docs/guide-for-webhooks-v2 : - Pipedrive considers any 2XX response a success. - Requests time out after 10 seconds. - Failed attempts are retried after 3, 30, and 150 seconds (up to 4 attempts). - A webhook is banned for 30 minutes after 10 first-attempt failures. - Subscriptions with no successful deliveries for 3 consecutive days are deleted. Subscribers may register optional HTTP Basic credentials (`http_auth_user`, `http_auth_password`) when creating the subscription; Pipedrive will then include those credentials on the outbound `POST` request. Only event types, object types, payload sections, and delivery rules explicitly documented by Pipedrive are modelled here. The shape of each entity's `data` and `previous` objects is intentionally left open (`additionalProperties: true`) because Pipedrive's guide states that the payload "contains only crucial information about the entity and related / connected entities" and that `previous` "contains only the fields that have changed", without enumerating those fields per entity in the v2 guide.

View Spec View on GitHub CRMSalesPipeline ManagementSoftware-as-a-ServiceSmall BusinessAsyncAPIWebhooksEvents

Channels

create.activity
subscribe onActivityCreated
Activity created (event `create.activity`).
Activity was created.
change.activity
subscribe onActivityChanged
Activity changed (event `change.activity`).
Activity was changed.
delete.activity
subscribe onActivityDeleted
Activity deleted (event `delete.activity`).
Activity was deleted.
create.board
subscribe onBoardCreated
Board created (event `create.board`).
Project board was created.
change.board
subscribe onBoardChanged
Board changed (event `change.board`).
Project board was changed.
delete.board
subscribe onBoardDeleted
Board deleted (event `delete.board`).
Project board was deleted.
create.deal
subscribe onDealCreated
Deal created (event `create.deal`).
Deal was created.
change.deal
subscribe onDealChanged
Deal changed (event `change.deal`).
Deal was changed.
delete.deal
subscribe onDealDeleted
Deal deleted (event `delete.deal`).
Deal was deleted.
create.deal_installment
subscribe onDealInstallmentCreated
Deal installment created (event `create.deal_installment`).
Deal installment was created.
change.deal_installment
subscribe onDealInstallmentChanged
Deal installment changed (event `change.deal_installment`).
Deal installment was changed.
delete.deal_installment
subscribe onDealInstallmentDeleted
Deal installment deleted (event `delete.deal_installment`).
Deal installment was deleted.
create.deal_product
subscribe onDealProductCreated
Deal product created (event `create.deal_product`).
Deal product (line item) was created.
change.deal_product
subscribe onDealProductChanged
Deal product changed (event `change.deal_product`).
Deal product (line item) was changed.
delete.deal_product
subscribe onDealProductDeleted
Deal product deleted (event `delete.deal_product`).
Deal product (line item) was deleted.
create.lead
subscribe onLeadCreated
Lead created (event `create.lead`).
Lead was created.
change.lead
subscribe onLeadChanged
Lead changed (event `change.lead`).
Lead was changed.
delete.lead
subscribe onLeadDeleted
Lead deleted (event `delete.lead`).
Lead was deleted.
create.note
subscribe onNoteCreated
Note created (event `create.note`).
Note was created.
change.note
subscribe onNoteChanged
Note changed (event `change.note`).
Note was changed.
delete.note
subscribe onNoteDeleted
Note deleted (event `delete.note`).
Note was deleted.
create.organization
subscribe onOrganizationCreated
Organization created (event `create.organization`).
Organization was created.
change.organization
subscribe onOrganizationChanged
Organization changed (event `change.organization`).
Organization was changed.
delete.organization
subscribe onOrganizationDeleted
Organization deleted (event `delete.organization`).
Organization was deleted.
create.person
subscribe onPersonCreated
Person created (event `create.person`).
Person was created.
change.person
subscribe onPersonChanged
Person changed (event `change.person`).
Person was changed.
delete.person
subscribe onPersonDeleted
Person deleted (event `delete.person`).
Person was deleted.
create.phase
subscribe onPhaseCreated
Phase created (event `create.phase`).
Project phase was created.
change.phase
subscribe onPhaseChanged
Phase changed (event `change.phase`).
Project phase was changed.
delete.phase
subscribe onPhaseDeleted
Phase deleted (event `delete.phase`).
Project phase was deleted.
create.pipeline
subscribe onPipelineCreated
Pipeline created (event `create.pipeline`).
Pipeline was created.
change.pipeline
subscribe onPipelineChanged
Pipeline changed (event `change.pipeline`).
Pipeline was changed.
delete.pipeline
subscribe onPipelineDeleted
Pipeline deleted (event `delete.pipeline`).
Pipeline was deleted.
create.product
subscribe onProductCreated
Product created (event `create.product`).
Product was created.
change.product
subscribe onProductChanged
Product changed (event `change.product`).
Product was changed.
delete.product
subscribe onProductDeleted
Product deleted (event `delete.product`).
Product was deleted.
create.project
subscribe onProjectCreated
Project created (event `create.project`).
Project was created.
change.project
subscribe onProjectChanged
Project changed (event `change.project`).
Project was changed.
delete.project
subscribe onProjectDeleted
Project deleted (event `delete.project`).
Project was deleted.
create.stage
subscribe onStageCreated
Stage created (event `create.stage`).
Stage was created.
change.stage
subscribe onStageChanged
Stage changed (event `change.stage`).
Stage was changed.
delete.stage
subscribe onStageDeleted
Stage deleted (event `delete.stage`).
Stage was deleted.
create.task
subscribe onTaskCreated
Task created (event `create.task`).
Project task was created.
change.task
subscribe onTaskChanged
Task changed (event `change.task`).
Project task was changed.
delete.task
subscribe onTaskDeleted
Task deleted (event `delete.task`).
Project task was deleted.
create.user
subscribe onUserCreated
User created (event `create.user`).
User was created.
change.user
subscribe onUserChanged
User changed (event `change.user`).
User was changed.
delete.user
subscribe onUserDeleted
User deleted (event `delete.user`).
User was deleted.

Messages

ActivityCreated
Activity created
Emitted when an activity is created (`create.activity`).
ActivityChanged
Activity changed
Emitted when an activity is changed (`change.activity`).
ActivityDeleted
Activity deleted
Emitted when an activity is deleted (`delete.activity`).
BoardCreated
Board created
Emitted when a project board is created (`create.board`).
BoardChanged
Board changed
Emitted when a project board is changed (`change.board`).
BoardDeleted
Board deleted
Emitted when a project board is deleted (`delete.board`).
DealCreated
Deal created
Emitted when a deal is created (`create.deal`).
DealChanged
Deal changed
Emitted when a deal is changed (`change.deal`).
DealDeleted
Deal deleted
Emitted when a deal is deleted (`delete.deal`).
DealInstallmentCreated
Deal installment created
Emitted when a deal installment is created (`create.deal_installment`).
DealInstallmentChanged
Deal installment changed
Emitted when a deal installment is changed (`change.deal_installment`).
DealInstallmentDeleted
Deal installment deleted
Emitted when a deal installment is deleted (`delete.deal_installment`).
DealProductCreated
Deal product created
Emitted when a deal product (line item) is created (`create.deal_product`).
DealProductChanged
Deal product changed
Emitted when a deal product is changed (`change.deal_product`).
DealProductDeleted
Deal product deleted
Emitted when a deal product is deleted (`delete.deal_product`).
LeadCreated
Lead created
Emitted when a lead is created (`create.lead`).
LeadChanged
Lead changed
Emitted when a lead is changed (`change.lead`).
LeadDeleted
Lead deleted
Emitted when a lead is deleted (`delete.lead`).
NoteCreated
Note created
Emitted when a note is created (`create.note`).
NoteChanged
Note changed
Emitted when a note is changed (`change.note`).
NoteDeleted
Note deleted
Emitted when a note is deleted (`delete.note`).
OrganizationCreated
Organization created
Emitted when an organization is created (`create.organization`).
OrganizationChanged
Organization changed
Emitted when an organization is changed (`change.organization`).
OrganizationDeleted
Organization deleted
Emitted when an organization is deleted (`delete.organization`).
PersonCreated
Person created
Emitted when a person is created (`create.person`).
PersonChanged
Person changed
Emitted when a person is changed (`change.person`).
PersonDeleted
Person deleted
Emitted when a person is deleted (`delete.person`).
PhaseCreated
Phase created
Emitted when a project phase is created (`create.phase`).
PhaseChanged
Phase changed
Emitted when a project phase is changed (`change.phase`).
PhaseDeleted
Phase deleted
Emitted when a project phase is deleted (`delete.phase`).
PipelineCreated
Pipeline created
Emitted when a pipeline is created (`create.pipeline`).
PipelineChanged
Pipeline changed
Emitted when a pipeline is changed (`change.pipeline`).
PipelineDeleted
Pipeline deleted
Emitted when a pipeline is deleted (`delete.pipeline`).
ProductCreated
Product created
Emitted when a product is created (`create.product`).
ProductChanged
Product changed
Emitted when a product is changed (`change.product`).
ProductDeleted
Product deleted
Emitted when a product is deleted (`delete.product`).
ProjectCreated
Project created
Emitted when a project is created (`create.project`).
ProjectChanged
Project changed
Emitted when a project is changed (`change.project`).
ProjectDeleted
Project deleted
Emitted when a project is deleted (`delete.project`).
StageCreated
Stage created
Emitted when a stage is created (`create.stage`).
StageChanged
Stage changed
Emitted when a stage is changed (`change.stage`).
StageDeleted
Stage deleted
Emitted when a stage is deleted (`delete.stage`).
TaskCreated
Task created
Emitted when a project task is created (`create.task`).
TaskChanged
Task changed
Emitted when a project task is changed (`change.task`).
TaskDeleted
Task deleted
Emitted when a project task is deleted (`delete.task`).
UserCreated
User created
Emitted when a user is created (`create.user`).
UserChanged
User changed
Emitted when a user is changed (`change.user`).
UserDeleted
User deleted
Emitted when a user is deleted (`delete.user`).

Servers

https
subscriber {subscriberUrl}
Subscriber-supplied HTTPS endpoint registered via `POST /v1/webhooks` with `version=2.0`. Pipedrive does not support self-signed certificates.

AsyncAPI Specification

Raw ↑
asyncapi: 2.6.0
info:
  title: Pipedrive Webhooks v2
  version: 2.0.0
  description: |
    AsyncAPI description of the Pipedrive Webhooks v2 surface.

    Pipedrive delivers webhook notifications as HTTP `POST` requests carrying a
    JSON body. A webhook subscription is identified by combining two parameters,
    `event_action` and `event_object`, joined with a dot (for example
    `create.deal`, `change.person`, `delete.organization`). The wildcard `*` is
    accepted in either position (for example `*.*`, `*.deal`, `create.*`).

    Delivery semantics are documented at
    https://pipedrive.readme.io/docs/guide-for-webhooks-v2 :
      - Pipedrive considers any 2XX response a success.
      - Requests time out after 10 seconds.
      - Failed attempts are retried after 3, 30, and 150 seconds (up to 4 attempts).
      - A webhook is banned for 30 minutes after 10 first-attempt failures.
      - Subscriptions with no successful deliveries for 3 consecutive days are deleted.

    Subscribers may register optional HTTP Basic credentials (`http_auth_user`,
    `http_auth_password`) when creating the subscription; Pipedrive will then
    include those credentials on the outbound `POST` request.

    Only event types, object types, payload sections, and delivery rules
    explicitly documented by Pipedrive are modelled here. The shape of each
    entity's `data` and `previous` objects is intentionally left open
    (`additionalProperties: true`) because Pipedrive's guide states that the
    payload "contains only crucial information about the entity and related /
    connected entities" and that `previous` "contains only the fields that have
    changed", without enumerating those fields per entity in the v2 guide.
  contact:
    name: Pipedrive Developer Documentation
    url: https://pipedrive.readme.io/docs/guide-for-webhooks-v2
  license:
    name: Pipedrive Terms of Service
    url: https://www.pipedrive.com/en/terms-of-service
  tags:
    - name: Pipedrive
    - name: Webhooks
    - name: CRM
    - name: v2
externalDocs:
  description: Guide for Webhooks v2
  url: https://pipedrive.readme.io/docs/guide-for-webhooks-v2
defaultContentType: application/json
servers:
  subscriber:
    url: '{subscriberUrl}'
    protocol: https
    description: |
      Subscriber-supplied HTTPS endpoint registered via `POST /v1/webhooks` with
      `version=2.0`. Pipedrive does not support self-signed certificates.
    variables:
      subscriberUrl:
        description: Fully-qualified HTTPS URL of the subscriber endpoint.
        default: https://example.com/pipedrive/webhooks
    security:
      - httpBasic: []
      - {}
channels:
  create.activity:
    description: Activity was created.
    bindings:
      http:
        type: request
        method: POST
        bindingVersion: 0.3.0
    subscribe:
      operationId: onActivityCreated
      summary: Activity created (event `create.activity`).
      message:
        $ref: '#/components/messages/ActivityCreated'
  change.activity:
    description: Activity was changed.
    bindings:
      http:
        type: request
        method: POST
        bindingVersion: 0.3.0
    subscribe:
      operationId: onActivityChanged
      summary: Activity changed (event `change.activity`).
      message:
        $ref: '#/components/messages/ActivityChanged'
  delete.activity:
    description: Activity was deleted.
    bindings:
      http:
        type: request
        method: POST
        bindingVersion: 0.3.0
    subscribe:
      operationId: onActivityDeleted
      summary: Activity deleted (event `delete.activity`).
      message:
        $ref: '#/components/messages/ActivityDeleted'

  create.board:
    description: Project board was created.
    bindings:
      http: { type: request, method: POST, bindingVersion: 0.3.0 }
    subscribe:
      operationId: onBoardCreated
      summary: Board created (event `create.board`).
      message:
        $ref: '#/components/messages/BoardCreated'
  change.board:
    description: Project board was changed.
    bindings:
      http: { type: request, method: POST, bindingVersion: 0.3.0 }
    subscribe:
      operationId: onBoardChanged
      summary: Board changed (event `change.board`).
      message:
        $ref: '#/components/messages/BoardChanged'
  delete.board:
    description: Project board was deleted.
    bindings:
      http: { type: request, method: POST, bindingVersion: 0.3.0 }
    subscribe:
      operationId: onBoardDeleted
      summary: Board deleted (event `delete.board`).
      message:
        $ref: '#/components/messages/BoardDeleted'

  create.deal:
    description: Deal was created.
    bindings:
      http: { type: request, method: POST, bindingVersion: 0.3.0 }
    subscribe:
      operationId: onDealCreated
      summary: Deal created (event `create.deal`).
      message:
        $ref: '#/components/messages/DealCreated'
  change.deal:
    description: Deal was changed.
    bindings:
      http: { type: request, method: POST, bindingVersion: 0.3.0 }
    subscribe:
      operationId: onDealChanged
      summary: Deal changed (event `change.deal`).
      message:
        $ref: '#/components/messages/DealChanged'
  delete.deal:
    description: Deal was deleted.
    bindings:
      http: { type: request, method: POST, bindingVersion: 0.3.0 }
    subscribe:
      operationId: onDealDeleted
      summary: Deal deleted (event `delete.deal`).
      message:
        $ref: '#/components/messages/DealDeleted'

  create.deal_installment:
    description: Deal installment was created.
    bindings:
      http: { type: request, method: POST, bindingVersion: 0.3.0 }
    subscribe:
      operationId: onDealInstallmentCreated
      summary: Deal installment created (event `create.deal_installment`).
      message:
        $ref: '#/components/messages/DealInstallmentCreated'
  change.deal_installment:
    description: Deal installment was changed.
    bindings:
      http: { type: request, method: POST, bindingVersion: 0.3.0 }
    subscribe:
      operationId: onDealInstallmentChanged
      summary: Deal installment changed (event `change.deal_installment`).
      message:
        $ref: '#/components/messages/DealInstallmentChanged'
  delete.deal_installment:
    description: Deal installment was deleted.
    bindings:
      http: { type: request, method: POST, bindingVersion: 0.3.0 }
    subscribe:
      operationId: onDealInstallmentDeleted
      summary: Deal installment deleted (event `delete.deal_installment`).
      message:
        $ref: '#/components/messages/DealInstallmentDeleted'

  create.deal_product:
    description: Deal product (line item) was created.
    bindings:
      http: { type: request, method: POST, bindingVersion: 0.3.0 }
    subscribe:
      operationId: onDealProductCreated
      summary: Deal product created (event `create.deal_product`).
      message:
        $ref: '#/components/messages/DealProductCreated'
  change.deal_product:
    description: Deal product (line item) was changed.
    bindings:
      http: { type: request, method: POST, bindingVersion: 0.3.0 }
    subscribe:
      operationId: onDealProductChanged
      summary: Deal product changed (event `change.deal_product`).
      message:
        $ref: '#/components/messages/DealProductChanged'
  delete.deal_product:
    description: Deal product (line item) was deleted.
    bindings:
      http: { type: request, method: POST, bindingVersion: 0.3.0 }
    subscribe:
      operationId: onDealProductDeleted
      summary: Deal product deleted (event `delete.deal_product`).
      message:
        $ref: '#/components/messages/DealProductDeleted'

  create.lead:
    description: Lead was created.
    bindings:
      http: { type: request, method: POST, bindingVersion: 0.3.0 }
    subscribe:
      operationId: onLeadCreated
      summary: Lead created (event `create.lead`).
      message:
        $ref: '#/components/messages/LeadCreated'
  change.lead:
    description: Lead was changed.
    bindings:
      http: { type: request, method: POST, bindingVersion: 0.3.0 }
    subscribe:
      operationId: onLeadChanged
      summary: Lead changed (event `change.lead`).
      message:
        $ref: '#/components/messages/LeadChanged'
  delete.lead:
    description: Lead was deleted.
    bindings:
      http: { type: request, method: POST, bindingVersion: 0.3.0 }
    subscribe:
      operationId: onLeadDeleted
      summary: Lead deleted (event `delete.lead`).
      message:
        $ref: '#/components/messages/LeadDeleted'

  create.note:
    description: Note was created.
    bindings:
      http: { type: request, method: POST, bindingVersion: 0.3.0 }
    subscribe:
      operationId: onNoteCreated
      summary: Note created (event `create.note`).
      message:
        $ref: '#/components/messages/NoteCreated'
  change.note:
    description: Note was changed.
    bindings:
      http: { type: request, method: POST, bindingVersion: 0.3.0 }
    subscribe:
      operationId: onNoteChanged
      summary: Note changed (event `change.note`).
      message:
        $ref: '#/components/messages/NoteChanged'
  delete.note:
    description: Note was deleted.
    bindings:
      http: { type: request, method: POST, bindingVersion: 0.3.0 }
    subscribe:
      operationId: onNoteDeleted
      summary: Note deleted (event `delete.note`).
      message:
        $ref: '#/components/messages/NoteDeleted'

  create.organization:
    description: Organization was created.
    bindings:
      http: { type: request, method: POST, bindingVersion: 0.3.0 }
    subscribe:
      operationId: onOrganizationCreated
      summary: Organization created (event `create.organization`).
      message:
        $ref: '#/components/messages/OrganizationCreated'
  change.organization:
    description: Organization was changed.
    bindings:
      http: { type: request, method: POST, bindingVersion: 0.3.0 }
    subscribe:
      operationId: onOrganizationChanged
      summary: Organization changed (event `change.organization`).
      message:
        $ref: '#/components/messages/OrganizationChanged'
  delete.organization:
    description: Organization was deleted.
    bindings:
      http: { type: request, method: POST, bindingVersion: 0.3.0 }
    subscribe:
      operationId: onOrganizationDeleted
      summary: Organization deleted (event `delete.organization`).
      message:
        $ref: '#/components/messages/OrganizationDeleted'

  create.person:
    description: Person was created.
    bindings:
      http: { type: request, method: POST, bindingVersion: 0.3.0 }
    subscribe:
      operationId: onPersonCreated
      summary: Person created (event `create.person`).
      message:
        $ref: '#/components/messages/PersonCreated'
  change.person:
    description: Person was changed.
    bindings:
      http: { type: request, method: POST, bindingVersion: 0.3.0 }
    subscribe:
      operationId: onPersonChanged
      summary: Person changed (event `change.person`).
      message:
        $ref: '#/components/messages/PersonChanged'
  delete.person:
    description: Person was deleted.
    bindings:
      http: { type: request, method: POST, bindingVersion: 0.3.0 }
    subscribe:
      operationId: onPersonDeleted
      summary: Person deleted (event `delete.person`).
      message:
        $ref: '#/components/messages/PersonDeleted'

  create.phase:
    description: Project phase was created.
    bindings:
      http: { type: request, method: POST, bindingVersion: 0.3.0 }
    subscribe:
      operationId: onPhaseCreated
      summary: Phase created (event `create.phase`).
      message:
        $ref: '#/components/messages/PhaseCreated'
  change.phase:
    description: Project phase was changed.
    bindings:
      http: { type: request, method: POST, bindingVersion: 0.3.0 }
    subscribe:
      operationId: onPhaseChanged
      summary: Phase changed (event `change.phase`).
      message:
        $ref: '#/components/messages/PhaseChanged'
  delete.phase:
    description: Project phase was deleted.
    bindings:
      http: { type: request, method: POST, bindingVersion: 0.3.0 }
    subscribe:
      operationId: onPhaseDeleted
      summary: Phase deleted (event `delete.phase`).
      message:
        $ref: '#/components/messages/PhaseDeleted'

  create.pipeline:
    description: Pipeline was created.
    bindings:
      http: { type: request, method: POST, bindingVersion: 0.3.0 }
    subscribe:
      operationId: onPipelineCreated
      summary: Pipeline created (event `create.pipeline`).
      message:
        $ref: '#/components/messages/PipelineCreated'
  change.pipeline:
    description: Pipeline was changed.
    bindings:
      http: { type: request, method: POST, bindingVersion: 0.3.0 }
    subscribe:
      operationId: onPipelineChanged
      summary: Pipeline changed (event `change.pipeline`).
      message:
        $ref: '#/components/messages/PipelineChanged'
  delete.pipeline:
    description: Pipeline was deleted.
    bindings:
      http: { type: request, method: POST, bindingVersion: 0.3.0 }
    subscribe:
      operationId: onPipelineDeleted
      summary: Pipeline deleted (event `delete.pipeline`).
      message:
        $ref: '#/components/messages/PipelineDeleted'

  create.product:
    description: Product was created.
    bindings:
      http: { type: request, method: POST, bindingVersion: 0.3.0 }
    subscribe:
      operationId: onProductCreated
      summary: Product created (event `create.product`).
      message:
        $ref: '#/components/messages/ProductCreated'
  change.product:
    description: Product was changed.
    bindings:
      http: { type: request, method: POST, bindingVersion: 0.3.0 }
    subscribe:
      operationId: onProductChanged
      summary: Product changed (event `change.product`).
      message:
        $ref: '#/components/messages/ProductChanged'
  delete.product:
    description: Product was deleted.
    bindings:
      http: { type: request, method: POST, bindingVersion: 0.3.0 }
    subscribe:
      operationId: onProductDeleted
      summary: Product deleted (event `delete.product`).
      message:
        $ref: '#/components/messages/ProductDeleted'

  create.project:
    description: Project was created.
    bindings:
      http: { type: request, method: POST, bindingVersion: 0.3.0 }
    subscribe:
      operationId: onProjectCreated
      summary: Project created (event `create.project`).
      message:
        $ref: '#/components/messages/ProjectCreated'
  change.project:
    description: Project was changed.
    bindings:
      http: { type: request, method: POST, bindingVersion: 0.3.0 }
    subscribe:
      operationId: onProjectChanged
      summary: Project changed (event `change.project`).
      message:
        $ref: '#/components/messages/ProjectChanged'
  delete.project:
    description: Project was deleted.
    bindings:
      http: { type: request, method: POST, bindingVersion: 0.3.0 }
    subscribe:
      operationId: onProjectDeleted
      summary: Project deleted (event `delete.project`).
      message:
        $ref: '#/components/messages/ProjectDeleted'

  create.stage:
    description: Stage was created.
    bindings:
      http: { type: request, method: POST, bindingVersion: 0.3.0 }
    subscribe:
      operationId: onStageCreated
      summary: Stage created (event `create.stage`).
      message:
        $ref: '#/components/messages/StageCreated'
  change.stage:
    description: Stage was changed.
    bindings:
      http: { type: request, method: POST, bindingVersion: 0.3.0 }
    subscribe:
      operationId: onStageChanged
      summary: Stage changed (event `change.stage`).
      message:
        $ref: '#/components/messages/StageChanged'
  delete.stage:
    description: Stage was deleted.
    bindings:
      http: { type: request, method: POST, bindingVersion: 0.3.0 }
    subscribe:
      operationId: onStageDeleted
      summary: Stage deleted (event `delete.stage`).
      message:
        $ref: '#/components/messages/StageDeleted'

  create.task:
    description: Project task was created.
    bindings:
      http: { type: request, method: POST, bindingVersion: 0.3.0 }
    subscribe:
      operationId: onTaskCreated
      summary: Task created (event `create.task`).
      message:
        $ref: '#/components/messages/TaskCreated'
  change.task:
    description: Project task was changed.
    bindings:
      http: { type: request, method: POST, bindingVersion: 0.3.0 }
    subscribe:
      operationId: onTaskChanged
      summary: Task changed (event `change.task`).
      message:
        $ref: '#/components/messages/TaskChanged'
  delete.task:
    description: Project task was deleted.
    bindings:
      http: { type: request, method: POST, bindingVersion: 0.3.0 }
    subscribe:
      operationId: onTaskDeleted
      summary: Task deleted (event `delete.task`).
      message:
        $ref: '#/components/messages/TaskDeleted'

  create.user:
    description: User was created.
    bindings:
      http: { type: request, method: POST, bindingVersion: 0.3.0 }
    subscribe:
      operationId: onUserCreated
      summary: User created (event `create.user`).
      message:
        $ref: '#/components/messages/UserCreated'
  change.user:
    description: User was changed.
    bindings:
      http: { type: request, method: POST, bindingVersion: 0.3.0 }
    subscribe:
      operationId: onUserChanged
      summary: User changed (event `change.user`).
      message:
        $ref: '#/components/messages/UserChanged'
  delete.user:
    description: User was deleted.
    bindings:
      http: { type: request, method: POST, bindingVersion: 0.3.0 }
    subscribe:
      operationId: onUserDeleted
      summary: User deleted (event `delete.user`).
      message:
        $ref: '#/components/messages/UserDeleted'
components:
  securitySchemes:
    httpBasic:
      type: userPassword
      description: |
        Optional HTTP Basic credentials supplied at subscription time
        (`http_auth_user` and `http_auth_password`). When configured,
        Pipedrive includes them on every outbound webhook request.
  schemas:
    Meta:
      type: object
      description: |
        Webhook v2 meta block. Lists fields documented in the
        "Guide for Webhooks v2" payload reference.
      required:
        - action
        - entity
        - version
      properties:
        action:
          type: string
          description: Event action.
          enum: [create, change, delete]
        entity:
          type: string
          description: Object type the event refers to.
          enum:
            - activity
            - board
            - deal
            - deal_installment
            - deal_product
            - lead
            - note
            - organization
            - person
            - phase
            - pipeline
            - product
            - project
            - stage
            - task
            - user
        version:
          type: string
          description: Webhook payload version. Always `2.0` for v2 webhooks.
          enum: ['2.0']
        company_id:
          type: integer
          description: ID of the Pipedrive company account the event belongs to.
        correlation_id:
          type: string
          description: Correlation identifier for grouping related events.
        entity_id:
          description: Identifier of the affected entity.
          oneOf:
            - type: integer
            - type: string
        id:
          type: string
          description: Unique identifier of this delivery.
        is_bulk_edit:
          type: boolean
          description: True when the event was produced by a bulk edit.
        timestamp:
          type: string
          description: Time the event occurred.
        type:
          type: string
          description: Type qualifier of the event (as set by Pipedrive).
        user_id:
          type: integer
          description: ID of the user who triggered the event.
        webhook_id:
          type: integer
          description: ID of the Pipedrive webhook subscription.
        webhook_owner_id:
          type: integer
          description: ID of the user that owns the webhook subscription.
        change_source:
          type: string
          description: Source of the change (e.g. app, api).
        attempt:
          type: integer
          minimum: 1
          maximum: 4
          description: |
            Delivery attempt counter. Pipedrive retries failed deliveries
            after 3, 30 and 150 seconds, for a maximum of 4 attempts.
        host:
          type: string
          description: Pipedrive host that emitted the event.
        permitted_user_ids:
          type: array
          description: Users permitted to see the affected entity.
          items:
            type: integer
        merged_to_id:
          description: Target entity ID when this event is a merge.
          oneOf:
            - type: integer
            - type: 'null'
        merged_from_id:
          description: Source entity ID when this event is a merge.
          oneOf:
            - type: integer
            - type: 'null'
      additionalProperties: true
    EntityData:
      type: object
      description: |
        Current state of the affected entity. Per the v2 guide, "the standard
        data contains only crucial information about the entity and related /
        connected entities". Field set varies by entity type.
      additionalProperties: true
    EntityPrevious:
      description: |
        Previous state. Per the v2 guide, for change events "the standard data
        contains only the fields that have changed".
      oneOf:
        - type: object
          additionalProperties: true
        - type: 'null'
    WebhookEnvelope:
      type: object
      description: Common Webhooks v2 envelope shared by all events.
      required:
        - meta
        - data
      properties:
        meta:
          $ref: '#/components/schemas/Meta'
        data:
          $ref: '#/components/schemas/EntityData'
        previous:
          $ref: '#/components/schemas/EntityPrevious'
      additionalProperties: false
  messageTraits:
    PipedriveWebhookTrait:
      contentType: application/json
      bindings:
        http:
          headers:
            type: object
            properties:
              Content-Type:
                type: string
                enum: [application/json]
              Authorization:
                type: string
                description: |
                  Present only when the subscription was registered with
                  `http_auth_user` and `http_auth_password`. Encodes those
                  credentials as standard HTTP Basic auth.
          bindingVersion: 0.3.0
      tags:
        - name: Pipedrive
        - name: Webhooks
        - name: v2
  messages:
    ActivityCreated:
      name: ActivityCreated
      title: Activity created
      summary: Emitted when an activity is created (`create.activity`).
      traits:
        - $ref: '#/components/messageTraits/PipedriveWebhookTrait'
      payload:
        allOf:
          - $ref: '#/components/schemas/WebhookEnvelope'
        properties:
          meta:
            properties:
              action: { const: create }
              entity: { const: activity }
    ActivityChanged:
      name: ActivityChanged
      title: Activity changed
      summary: Emitted when an activity is changed (`change.activity`).
      traits:
        - $ref: '#/components/messageTraits/PipedriveWebhookTrait'
      payload:
        allOf:
          - $ref: '#/components/schemas/WebhookEnvelope'
        properties:
          meta:
            properties:
              action: { const: change }
              entity: { const: activity }
    ActivityDeleted:
      name: ActivityDeleted
      title: Activity deleted
      summary: Emitted when an activity is deleted (`delete.activity`).
      traits:
        - $ref: '#/components/messageTraits/PipedriveWebhookTrait'
      payload:
        allOf:
          - $ref: '#/components/schemas/WebhookEnvelope'
        properties:
          meta:
            properties:
              action: { const: delete }
              entity: { const: activity }

    BoardCreated:
      name: BoardCreated
      title: Board created
      summary: Emitted when a project board is created (`create.board`).
      traits: [{ $ref: '#/components/messageTraits/PipedriveWebhookTrait' }]
      payload:
        allOf: [{ $ref: '#/components/schemas/WebhookEnvelope' }]
        properties:
          meta:
            properties:
              action: { const: create }
              entity: { const: board }
    BoardChanged:
      name: BoardChanged
      title: Board changed
      summary: Emitted when a project board is changed (`change.board`).
      traits: [{ $ref: '#/components/messageTraits/PipedriveWebhookTrait' }]
      payload:
        allOf: [{ $ref: '#/components/schemas/WebhookEnvelope' }]
        properties:
          meta:
            properties:
              action: { const: change }
              entity: { const: board }
    BoardDeleted:
      name: BoardDeleted
      title: Board deleted
      summary: Emitted when a project board is deleted (`delete.board`).
      traits: [{ $ref: '#/components/messageTraits/PipedriveWebhookTrait' }]
      payload:
        allOf: [{ $ref: '#/components/schemas/WebhookEnvelope' }]
        properties:
          meta:
            properties:
              action: { const: delete }
              entity: { const: board }

    DealCreated:
      name: DealCreated
      title: Deal created
      summary: Emitted when a deal is created (`create.deal`).
      traits: [{ $ref: '#/components/messageTraits/PipedriveWebhookTrait' }]
      payload:
        allOf: [{ $ref: '#/components/schemas/WebhookEnvelope' }]
        properties:
          meta:
            properties:
              action: { const: create }
              entity: { const: deal }
    DealChanged:
      name: DealChanged
      title: Deal changed
      summary: Emitted when a deal is changed (`change.deal`).
      traits: [{ $ref: '#/components/messageTraits/PipedriveWebhookTrait' }]
      payload:
        allOf: [{ $ref: '#/components/schemas/WebhookEnvelope' }]
        properties:
          meta:
            properties:
              action: { const: change }
              entity: { const: deal }
    DealDeleted:
      name: DealDeleted
      title: Deal deleted
      summary: Emitted when a deal is deleted (`delete.deal`).
      traits: [{ $ref: '#/components/messageTraits/PipedriveWebhookTrait' }]
      payload:
        allOf: [{ $ref: '#/components/schemas/WebhookEnvelope' }]
        properties:
          meta:
            properties:
              action: { const: delete }
              entity: { const: deal }

    DealInstallmentCreated:
      name: DealInstallmentCreated
      title: Deal installment created
      summary: Emitted when a deal installment is created (`create.deal_installment`).
      traits: [{ $ref: '#/components/messageTraits/PipedriveWebhookTrait' }]
      payload:
        allOf: [{ $ref: '#/components/schemas/WebhookEnvelope' }]
        properties:
          meta:
            properties:
              action: { const: create }
              entity: { const: deal_installment }
    DealInstallmentChanged:
      name: DealInstallmentChanged
      title: Deal installment changed
      summary: Emitted when a deal installment is changed (`change.deal_installment`).
      traits: [{ $ref: '#/components/messageTraits/PipedriveWebhookTrait' }]
      payload:
        allOf: [{ $ref: '#/components/schemas/WebhookEnvelope' }]
        properties:
          meta:
            properties:
              action: { const: change }
              entity: { const: deal_installment }
    DealInstallmentDeleted:
      name: DealInstallmentDeleted
      title: Deal installment deleted
      summary: Emitted when a deal installment is deleted (`delete.deal_installment`).
      traits: [{ $ref: '#/components/messageTraits/PipedriveWebhookTrait' }]
      payload:
        allOf: [{ $ref: '#/components/schemas/WebhookEnvelope' }]
        properties:
          meta:
            properties:
              action: { const: delete }
              entity: { const: deal_installment }

    DealProductCreated:
      name: DealProductCreated
      title: Deal product created
      summary: Emitted when a deal product (line item) is created (`create.deal_product`).
      traits: [{ $ref: '#/components/messageTraits/PipedriveWebhookTrait' }]
      payload:
        allOf: [{ $ref: '#/components/schemas/WebhookEnvelope' }]
        properties:
          meta:
            properties:
              action: { const: create }
              entity: { const: deal_product }
    DealProductChanged:
      name: DealProductChanged
      title: Deal product changed
      summary: Emitted when a deal product is changed (`change.deal_product`).
      traits: [{ $ref: '#/components/messageTraits/PipedriveWebhookTrait' }]
      payload:
        allOf: [{ $ref: '#/components/schemas/WebhookEnvelope' }]
        properties:
          meta:
            properties:
              action: { const: change }
              entity: { const: deal_product }
    DealProductDeleted:
      name: DealProductDeleted
      title: Deal product deleted
      summary: Emitted when a deal product is deleted (`delete.deal_product`).
      traits: [{ $ref: '#/components/messageTraits/PipedriveWebhookTrait' }]
      payload:
        allOf: [{ $ref: '#/components/schemas/WebhookEnvelope' }]
        properties:
          meta:
            properties:
              action: { const: delete }
              entity: { const: deal_product }

    LeadCreated:
      name: LeadCreated
      title: Lead created
      summary: Emitted when a lead is created (`create.lead`).
      traits: [{ $ref: '#/components/messageTraits/PipedriveWebhookTrait' }]
      payload:
        allOf: [{ $ref: '#/components/schemas/WebhookEnvelope' }]
        properties:
          meta:
            properties:
              action: { const: create }
              entity: { const: lead }
    LeadChanged:
      name: LeadChanged
      title: Lead changed
      summary: Emitted when a lead is changed (`change.lead`).
      traits: [{ $ref: '#/components/messageTraits/PipedriveWebhookTrait' }]
      payload:
        allOf: [{ $ref: '#/components/schemas/WebhookEnvelope' }]
        properties:
          meta:
            properties:
              action: { const: change }
              entity: { const: lead }
    LeadDeleted:
      name: LeadDeleted
      title: Lead deleted
      summary: Emitted when a lead is deleted (`delete.lead`).
      traits: [{ $ref: '#/components/messageTraits/PipedriveWebhookTrait' }]
      payload:
        allOf: [{ $ref: '#/components/schemas/WebhookEnvelope' }]
        properties:
          meta:
            properties:
              action: { const: delete }
              entity: { const: lead }

    NoteCreated:
      name: NoteCreated
      title: Note created
      summary: Emitted when a note is created (`create.note`).
      traits: [{ $ref: '#/components/messageTraits/PipedriveWebhookTrait' }]
      payload:
        allOf: [{ $ref: '#/components/schemas/WebhookEnvelope' }]
        properties:
          meta:
            properties:
              action: { const: create }
              entity: { const: note }
    NoteChanged:
      name: NoteChanged
      title: Note changed
      summary: Emitted when a note is changed (`change.note`).
      traits: [{ $ref: '#/components/messageTraits/PipedriveWebhookTrait' }]
      payload:
        allOf: [{ $ref: '#/components/schemas/WebhookEnvelope' }]
        properties:
          meta:
            properties:
              action: { const: change }
              entity: { const: note }
    NoteDeleted:
      name: NoteDeleted
      title: Note deleted
      summary: Emitted when a note is deleted (`delete.note`).
      traits: [{ $ref: '#/components/messageTraits/PipedriveWebhookTrait' }]
      payload:
        allOf: [{ $ref: '#/components/schemas/WebhookEnvelope' }]
        properties:
          meta:
            properties:
              action: { const: delete }
              entity: { const: note }

    OrganizationCreated:
      name: OrganizationCreated
      title: Organization created
      summary: Emitted when an organization is created (`create.organization`).
      traits: [{ $ref: '#/components/messageTraits/PipedriveWebhookTrait' }]
      payload:
        allOf: [{ $ref: '#/components/schemas/WebhookEnvelope' }]
        properties:
          meta:
            properties:
        

# --- truncated at 32 KB (43 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/pipedrive/refs/heads/main/asyncapi/pipedrive-webhooks-v2-asyncapi.yml