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 ManagementSaaSSmall 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