Reonic · AsyncAPI Specification

Reonic Webhooks

Version 1

Event surface for the Reonic REST API v3. Reonic POSTs a signed JSON body (HMAC SHA-256, X-Reonic-Signature) to your configured HTTPS endpoint when a selected event occurs. Payloads are thin (ids only); fetch current state via the v3 REST API. Derived from the OpenAPI webhooks object.

View Spec View on GitHub CompanyClimate EnergySolarRenewable EnergyPhotovoltaicHeat PumpsInstaller SoftwareSaaSCRMProject ManagementAsyncAPIWebhooksEvents

Channels

residentialProject_created
Residential project created
commercialProject_created
Commercial project created
residentialOffer_signatureRequested
Residential offer signature requested
residentialOffer_signed
Residential offer signed
residentialOffer_signatureWithdrawn
Residential offer signature withdrawn
residentialProject_kanbanColumnChanged
Residential project Kanban column changed
commercialProject_kanbanColumnChanged
Commercial project Kanban column changed
residentialProject_dealStateChanged
Residential project deal-state changed
commercialProject_dealStateChanged
Commercial project deal-state changed
project_archived
Project archived
projectChecklist_segmentCompletionChanged
Project checklist segment completion changed
projectChecklist_pdfGenerated
Checklist PDF generated
contact_created
Contact created
project_created
Project created
project_kanbanColumnChanged
Project Kanban column changed
project_dealStateChanged
Project deal-state changed
test
Test event

Messages

residentialProject_createdEvent
Residential project created
commercialProject_createdEvent
Commercial project created
residentialOffer_signatureRequestedEvent
Residential offer signature requested
residentialOffer_signedEvent
Residential offer signed
residentialOffer_signatureWithdrawnEvent
Residential offer signature withdrawn
residentialProject_kanbanColumnChangedEvent
Residential project Kanban column changed
commercialProject_kanbanColumnChangedEvent
Commercial project Kanban column changed
residentialProject_dealStateChangedEvent
Residential project deal-state changed
commercialProject_dealStateChangedEvent
Commercial project deal-state changed
project_archivedEvent
Project archived
projectChecklist_segmentCompletionChangedEvent
Project checklist segment completion changed
projectChecklist_pdfGeneratedEvent
Checklist PDF generated
contact_createdEvent
Contact created
project_createdEvent
Project created
project_kanbanColumnChangedEvent
Project Kanban column changed
project_dealStateChangedEvent
Project deal-state changed
testEvent
Test event

AsyncAPI Specification

Raw ↑
generated: '2026-07-20'
x-method: searched
x-source: openapi/reonic-openapi-original.json (webhooks object)
asyncapi: 3.0.0
info:
  title: Reonic Webhooks
  version: '1'
  description: Event surface for the Reonic REST API v3. Reonic POSTs a signed JSON body (HMAC SHA-256,
    X-Reonic-Signature) to your configured HTTPS endpoint when a selected event occurs. Payloads are thin
    (ids only); fetch current state via the v3 REST API. Derived from the OpenAPI webhooks object.
  contact:
    name: Reonic GmbH
    email: kontakt@reonic.de
    url: https://reonic.com
defaultContentType: application/json
channels:
  residentialProject_created:
    address: null
    messages:
      residentialProject_createdEvent:
        $ref: '#/components/messages/residentialProject_createdEvent'
    description: Residential project created
  commercialProject_created:
    address: null
    messages:
      commercialProject_createdEvent:
        $ref: '#/components/messages/commercialProject_createdEvent'
    description: Commercial project created
  residentialOffer_signatureRequested:
    address: null
    messages:
      residentialOffer_signatureRequestedEvent:
        $ref: '#/components/messages/residentialOffer_signatureRequestedEvent'
    description: Residential offer signature requested
  residentialOffer_signed:
    address: null
    messages:
      residentialOffer_signedEvent:
        $ref: '#/components/messages/residentialOffer_signedEvent'
    description: Residential offer signed
  residentialOffer_signatureWithdrawn:
    address: null
    messages:
      residentialOffer_signatureWithdrawnEvent:
        $ref: '#/components/messages/residentialOffer_signatureWithdrawnEvent'
    description: Residential offer signature withdrawn
  residentialProject_kanbanColumnChanged:
    address: null
    messages:
      residentialProject_kanbanColumnChangedEvent:
        $ref: '#/components/messages/residentialProject_kanbanColumnChangedEvent'
    description: Residential project Kanban column changed
  commercialProject_kanbanColumnChanged:
    address: null
    messages:
      commercialProject_kanbanColumnChangedEvent:
        $ref: '#/components/messages/commercialProject_kanbanColumnChangedEvent'
    description: Commercial project Kanban column changed
  residentialProject_dealStateChanged:
    address: null
    messages:
      residentialProject_dealStateChangedEvent:
        $ref: '#/components/messages/residentialProject_dealStateChangedEvent'
    description: Residential project deal-state changed
  commercialProject_dealStateChanged:
    address: null
    messages:
      commercialProject_dealStateChangedEvent:
        $ref: '#/components/messages/commercialProject_dealStateChangedEvent'
    description: Commercial project deal-state changed
  project_archived:
    address: null
    messages:
      project_archivedEvent:
        $ref: '#/components/messages/project_archivedEvent'
    description: Project archived
  projectChecklist_segmentCompletionChanged:
    address: null
    messages:
      projectChecklist_segmentCompletionChangedEvent:
        $ref: '#/components/messages/projectChecklist_segmentCompletionChangedEvent'
    description: Project checklist segment completion changed
  projectChecklist_pdfGenerated:
    address: null
    messages:
      projectChecklist_pdfGeneratedEvent:
        $ref: '#/components/messages/projectChecklist_pdfGeneratedEvent'
    description: Checklist PDF generated
  contact_created:
    address: null
    messages:
      contact_createdEvent:
        $ref: '#/components/messages/contact_createdEvent'
    description: Contact created
  project_created:
    address: null
    messages:
      project_createdEvent:
        $ref: '#/components/messages/project_createdEvent'
    description: Project created
  project_kanbanColumnChanged:
    address: null
    messages:
      project_kanbanColumnChangedEvent:
        $ref: '#/components/messages/project_kanbanColumnChangedEvent'
    description: Project Kanban column changed
  project_dealStateChanged:
    address: null
    messages:
      project_dealStateChangedEvent:
        $ref: '#/components/messages/project_dealStateChangedEvent'
    description: Project deal-state changed
  test:
    address: null
    messages:
      testEvent:
        $ref: '#/components/messages/testEvent'
    description: Test event
operations:
  receive_residentialProject_created:
    action: receive
    channel:
      $ref: '#/channels/residentialProject_created'
    summary: Receive Residential project created webhook
  receive_commercialProject_created:
    action: receive
    channel:
      $ref: '#/channels/commercialProject_created'
    summary: Receive Commercial project created webhook
  receive_residentialOffer_signatureRequested:
    action: receive
    channel:
      $ref: '#/channels/residentialOffer_signatureRequested'
    summary: Receive Residential offer signature requested webhook
  receive_residentialOffer_signed:
    action: receive
    channel:
      $ref: '#/channels/residentialOffer_signed'
    summary: Receive Residential offer signed webhook
  receive_residentialOffer_signatureWithdrawn:
    action: receive
    channel:
      $ref: '#/channels/residentialOffer_signatureWithdrawn'
    summary: Receive Residential offer signature withdrawn webhook
  receive_residentialProject_kanbanColumnChanged:
    action: receive
    channel:
      $ref: '#/channels/residentialProject_kanbanColumnChanged'
    summary: Receive Residential project Kanban column changed webhook
  receive_commercialProject_kanbanColumnChanged:
    action: receive
    channel:
      $ref: '#/channels/commercialProject_kanbanColumnChanged'
    summary: Receive Commercial project Kanban column changed webhook
  receive_residentialProject_dealStateChanged:
    action: receive
    channel:
      $ref: '#/channels/residentialProject_dealStateChanged'
    summary: Receive Residential project deal-state changed webhook
  receive_commercialProject_dealStateChanged:
    action: receive
    channel:
      $ref: '#/channels/commercialProject_dealStateChanged'
    summary: Receive Commercial project deal-state changed webhook
  receive_project_archived:
    action: receive
    channel:
      $ref: '#/channels/project_archived'
    summary: Receive Project archived webhook
  receive_projectChecklist_segmentCompletionChanged:
    action: receive
    channel:
      $ref: '#/channels/projectChecklist_segmentCompletionChanged'
    summary: Receive Project checklist segment completion changed webhook
  receive_projectChecklist_pdfGenerated:
    action: receive
    channel:
      $ref: '#/channels/projectChecklist_pdfGenerated'
    summary: Receive Checklist PDF generated webhook
  receive_contact_created:
    action: receive
    channel:
      $ref: '#/channels/contact_created'
    summary: Receive Contact created webhook
  receive_project_created:
    action: receive
    channel:
      $ref: '#/channels/project_created'
    summary: Receive Project created webhook
  receive_project_kanbanColumnChanged:
    action: receive
    channel:
      $ref: '#/channels/project_kanbanColumnChanged'
    summary: Receive Project Kanban column changed webhook
  receive_project_dealStateChanged:
    action: receive
    channel:
      $ref: '#/channels/project_dealStateChanged'
    summary: Receive Project deal-state changed webhook
  receive_test:
    action: receive
    channel:
      $ref: '#/channels/test'
    summary: Receive Test event webhook
components:
  messages:
    residentialProject_createdEvent:
      name: residentialProject_created
      title: Residential project created
      contentType: application/json
      headers:
        type: object
        properties:
          X-Reonic-Event:
            type: string
            const: residentialProject_created
      payload:
        type: object
        properties:
          version:
            type: number
            const: 1
          type:
            type: string
            const: residentialProject_created
          occurredAt:
            type: string
            format: date-time
          data:
            type: object
            properties:
              projectId:
                type: string
                format: uuid
                description: ID of the project this event relates to. Fetch its current state via [**Residential
                  Projects**](#tag/residential-projects).
                example: 123e4567-e89b-12d3-a456-426614174000
            required:
            - projectId
    commercialProject_createdEvent:
      name: commercialProject_created
      title: Commercial project created
      contentType: application/json
      headers:
        type: object
        properties:
          X-Reonic-Event:
            type: string
            const: commercialProject_created
      payload:
        type: object
        properties:
          version:
            type: number
            const: 1
          type:
            type: string
            const: commercialProject_created
          occurredAt:
            type: string
            format: date-time
          data:
            type: object
            properties:
              projectId:
                type: string
                format: uuid
                description: ID of the project this event relates to. Fetch its current state via [**Commercial
                  Projects**](#tag/commercial-projects).
                example: 123e4567-e89b-12d3-a456-426614174000
            required:
            - projectId
    residentialOffer_signatureRequestedEvent:
      name: residentialOffer_signatureRequested
      title: Residential offer signature requested
      contentType: application/json
      headers:
        type: object
        properties:
          X-Reonic-Event:
            type: string
            const: residentialOffer_signatureRequested
      payload:
        type: object
        properties:
          version:
            type: number
            const: 1
          type:
            type: string
            const: residentialOffer_signatureRequested
          occurredAt:
            type: string
            format: date-time
          data:
            type: object
            properties:
              projectId:
                type: string
                format: uuid
                description: ID of the project this event relates to. Fetch its current state via [**Residential
                  Projects**](#tag/residential-projects).
                example: 123e4567-e89b-12d3-a456-426614174000
              signatureRequestId:
                type: string
                format: uuid
                description: ID of the signature request. Listed under `signatureRequests` on the [**Residential
                  Projects**](#tag/residential-projects) detail response.
                example: 123e4567-e89b-12d3-a456-426614174000
              variantIds:
                type: array
                items:
                  type: string
                  format: uuid
                description: The offer variants presented to the customer for signature.
                example:
                - 123e4567-e89b-12d3-a456-426614174000
                - 123e4567-e89b-12d3-a456-426614174002
              signatureOptions:
                type: array
                items:
                  type: object
                  properties:
                    variantId:
                      type: string
                      format: uuid
                      description: The offer variant this signature option belongs to.
                      example: 123e4567-e89b-12d3-a456-426614174000
                    paymentOptionId:
                      type:
                      - string
                      - 'null'
                      format: uuid
                      description: The payment option this signature option belongs to. `null` for legacy/default-payment
                        documents.
                      example: 123e4567-e89b-12d3-a456-426614174002
                  required:
                  - variantId
                  - paymentOptionId
                description: The variant/payment option combinations presented to the customer for signature.
            required:
            - projectId
            - signatureRequestId
            - variantIds
    residentialOffer_signedEvent:
      name: residentialOffer_signed
      title: Residential offer signed
      contentType: application/json
      headers:
        type: object
        properties:
          X-Reonic-Event:
            type: string
            const: residentialOffer_signed
      payload:
        type: object
        properties:
          version:
            type: number
            const: 1
          type:
            type: string
            const: residentialOffer_signed
          occurredAt:
            type: string
            format: date-time
          data:
            type: object
            properties:
              projectId:
                type: string
                format: uuid
                description: ID of the project this event relates to. Fetch its current state via [**Residential
                  Projects**](#tag/residential-projects).
                example: 123e4567-e89b-12d3-a456-426614174000
              signatureRequestId:
                type: string
                format: uuid
                description: ID of the signature request. Listed under `signatureRequests` on the [**Residential
                  Projects**](#tag/residential-projects) detail response.
                example: 123e4567-e89b-12d3-a456-426614174000
              signedVariantId:
                type: string
                format: uuid
                description: The offer variant the customer signed.
                example: 123e4567-e89b-12d3-a456-426614174000
              signedPaymentOptionId:
                type:
                - string
                - 'null'
                format: uuid
                description: The payment option the customer signed. `null` for legacy/default-payment
                  documents.
                example: 123e4567-e89b-12d3-a456-426614174000
            required:
            - projectId
            - signatureRequestId
            - signedVariantId
    residentialOffer_signatureWithdrawnEvent:
      name: residentialOffer_signatureWithdrawn
      title: Residential offer signature withdrawn
      contentType: application/json
      headers:
        type: object
        properties:
          X-Reonic-Event:
            type: string
            const: residentialOffer_signatureWithdrawn
      payload:
        type: object
        properties:
          version:
            type: number
            const: 1
          type:
            type: string
            const: residentialOffer_signatureWithdrawn
          occurredAt:
            type: string
            format: date-time
          data:
            type: object
            properties:
              projectId:
                type: string
                format: uuid
                description: ID of the project this event relates to. Fetch its current state via [**Residential
                  Projects**](#tag/residential-projects).
                example: 123e4567-e89b-12d3-a456-426614174000
              signatureRequestId:
                type: string
                format: uuid
                description: ID of the signature request. Listed under `signatureRequests` on the [**Residential
                  Projects**](#tag/residential-projects) detail response.
                example: 123e4567-e89b-12d3-a456-426614174000
            required:
            - projectId
            - signatureRequestId
    residentialProject_kanbanColumnChangedEvent:
      name: residentialProject_kanbanColumnChanged
      title: Residential project Kanban column changed
      contentType: application/json
      headers:
        type: object
        properties:
          X-Reonic-Event:
            type: string
            const: residentialProject_kanbanColumnChanged
      payload:
        type: object
        properties:
          version:
            type: number
            const: 1
          type:
            type: string
            const: residentialProject_kanbanColumnChanged
          occurredAt:
            type: string
            format: date-time
          data:
            type: object
            properties:
              projectId:
                type: string
                format: uuid
                description: ID of the project this event relates to. Fetch its current state via [**Residential
                  Projects**](#tag/residential-projects).
                example: 123e4567-e89b-12d3-a456-426614174000
              previousStage:
                type:
                - string
                - 'null'
                enum:
                - request
                - offer
                - installation
                - null
              newStage:
                type:
                - string
                - 'null'
                enum:
                - request
                - offer
                - installation
                - null
              previousKanbanColumnId:
                type:
                - string
                - 'null'
                format: uuid
                description: Reference to [**Kanban Columns**](#tag/kanban-columns).
                example: 123e4567-e89b-12d3-a456-426614174000
              newKanbanColumnId:
                type:
                - string
                - 'null'
                format: uuid
                description: Reference to [**Kanban Columns**](#tag/kanban-columns).
                example: 123e4567-e89b-12d3-a456-426614174000
            required:
            - projectId
            - previousStage
            - newStage
            - previousKanbanColumnId
            - newKanbanColumnId
    commercialProject_kanbanColumnChangedEvent:
      name: commercialProject_kanbanColumnChanged
      title: Commercial project Kanban column changed
      contentType: application/json
      headers:
        type: object
        properties:
          X-Reonic-Event:
            type: string
            const: commercialProject_kanbanColumnChanged
      payload:
        type: object
        properties:
          version:
            type: number
            const: 1
          type:
            type: string
            const: commercialProject_kanbanColumnChanged
          occurredAt:
            type: string
            format: date-time
          data:
            type: object
            properties:
              projectId:
                type: string
                format: uuid
                description: ID of the project this event relates to. Fetch its current state via [**Commercial
                  Projects**](#tag/commercial-projects).
                example: 123e4567-e89b-12d3-a456-426614174000
              previousStage:
                type:
                - string
                - 'null'
                enum:
                - request
                - offer
                - installation
                - null
              newStage:
                type:
                - string
                - 'null'
                enum:
                - request
                - offer
                - installation
                - null
              previousKanbanColumnId:
                type:
                - string
                - 'null'
                format: uuid
                description: Reference to [**Kanban Columns**](#tag/kanban-columns).
                example: 123e4567-e89b-12d3-a456-426614174000
              newKanbanColumnId:
                type:
                - string
                - 'null'
                format: uuid
                description: Reference to [**Kanban Columns**](#tag/kanban-columns).
                example: 123e4567-e89b-12d3-a456-426614174000
            required:
            - projectId
            - previousStage
            - newStage
            - previousKanbanColumnId
            - newKanbanColumnId
    residentialProject_dealStateChangedEvent:
      name: residentialProject_dealStateChanged
      title: Residential project deal-state changed
      contentType: application/json
      headers:
        type: object
        properties:
          X-Reonic-Event:
            type: string
            const: residentialProject_dealStateChanged
      payload:
        type: object
        properties:
          version:
            type: number
            const: 1
          type:
            type: string
            const: residentialProject_dealStateChanged
          occurredAt:
            type: string
            format: date-time
          data:
            type: object
            properties:
              projectId:
                type: string
                format: uuid
                description: ID of the project this event relates to. Fetch its current state via [**Residential
                  Projects**](#tag/residential-projects).
                example: 123e4567-e89b-12d3-a456-426614174000
              previousDealState:
                type:
                - string
                - 'null'
                enum:
                - Open
                - Won
                - Lost
                - null
              newDealState:
                type:
                - string
                - 'null'
                enum:
                - Open
                - Won
                - Lost
                - null
            required:
            - projectId
            - previousDealState
            - newDealState
    commercialProject_dealStateChangedEvent:
      name: commercialProject_dealStateChanged
      title: Commercial project deal-state changed
      contentType: application/json
      headers:
        type: object
        properties:
          X-Reonic-Event:
            type: string
            const: commercialProject_dealStateChanged
      payload:
        type: object
        properties:
          version:
            type: number
            const: 1
          type:
            type: string
            const: commercialProject_dealStateChanged
          occurredAt:
            type: string
            format: date-time
          data:
            type: object
            properties:
              projectId:
                type: string
                format: uuid
                description: ID of the project this event relates to. Fetch its current state via [**Commercial
                  Projects**](#tag/commercial-projects).
                example: 123e4567-e89b-12d3-a456-426614174000
              previousDealState:
                type:
                - string
                - 'null'
                enum:
                - Open
                - Won
                - Lost
                - null
              newDealState:
                type:
                - string
                - 'null'
                enum:
                - Open
                - Won
                - Lost
                - null
            required:
            - projectId
            - previousDealState
            - newDealState
    project_archivedEvent:
      name: project_archived
      title: Project archived
      contentType: application/json
      headers:
        type: object
        properties:
          X-Reonic-Event:
            type: string
            const: project_archived
      payload:
        type: object
        properties:
          version:
            type: number
            const: 1
          type:
            type: string
            const: project_archived
          occurredAt:
            type: string
            format: date-time
          data:
            type: object
            properties:
              projectId:
                type: string
                format: uuid
                description: ID of the project this event relates to. Fetch its current state via [**Residential
                  Projects**](#tag/residential-projects) or [**Commercial Projects**](#tag/commercial-projects),
                  depending on `projectType`.
                example: 123e4567-e89b-12d3-a456-426614174000
              projectType:
                type: string
                enum:
                - residential
                - commercial
                description: Which vertical the project belongs to.
                example: residential
            required:
            - projectId
            - projectType
    projectChecklist_segmentCompletionChangedEvent:
      name: projectChecklist_segmentCompletionChanged
      title: Project checklist segment completion changed
      contentType: application/json
      headers:
        type: object
        properties:
          X-Reonic-Event:
            type: string
            const: projectChecklist_segmentCompletionChanged
      payload:
        type: object
        properties:
          version:
            type: number
            const: 1
          type:
            type: string
            const: projectChecklist_segmentCompletionChanged
          occurredAt:
            type: string
            format: date-time
          data:
            type: object
            properties:
              projectId:
                type: string
                format: uuid
                description: ID of the project this event relates to. Fetch its current state via [**Residential
                  Projects**](#tag/residential-projects).
                example: 123e4567-e89b-12d3-a456-426614174000
              checklistId:
                type: string
                format: uuid
                description: Reference to [**Checklists**](#tag/checklists).
                example: 123e4567-e89b-12d3-a456-426614174000
              segmentId:
                type: string
                format: uuid
                description: ID of the segment within the [**Checklists**](#tag/checklists) response.
                example: 123e4567-e89b-12d3-a456-426614174000
              completed:
                type: boolean
                description: Whether the segment is completed after this change.
                example: true
              changedByUserId:
                type: string
                format: uuid
                description: Reference to [**Users**](#tag/users) — the user who completed or un-completed
                  the segment.
                example: 123e4567-e89b-12d3-a456-426614174000
            required:
            - projectId
            - checklistId
            - segmentId
            - completed
            - changedByUserId
    projectChecklist_pdfGeneratedEvent:
      name: projectChecklist_pdfGenerated
      title: Checklist PDF generated
      contentType: application/json
      headers:
        type: object
        properties:
          X-Reonic-Event:
            type: string
            const: projectChecklist_pdfGenerated
      payload:
        type: object
        properties:
          version:
            type: number
            const: 1
          type:
            type: string
            const: projectChecklist_pdfGenerated
          occurredAt:
            type: string
            format: date-time
          data:
            type: object
            properties:
              projectId:
                type: string
                format: uuid
                description: Reference to [**Residential Projects**](#tag/residential-projects) or [**Commercial
                  Projects**](#tag/commercial-projects) — the project this checklist belongs to.
                example: 123e4567-e89b-12d3-a456-426614174000
              projectType:
                type: string
                enum:
                - residentialProject
                - commercialProject
                description: The type of project the checklist belongs to, indicating which endpoint to
                  use for projectId.
                example: residentialProject
              checklistId:
                type: string
                format: uuid
                description: Reference to [**Checklists**](#tag/checklists).
                example: 123e4567-e89b-12d3-a456-426614174000
              fileId:
                type: string
                format: uuid
                description: Reference to [**Files**](#tag/files) — fetch it to obtain the download URL
                  for the generated PDF.
                example: 123e4567-e89b-12d3-a456-426614174000
            required:
            - projectId
            - projectType
            - checklistId
            - fileId
    contact_createdEvent:
      name: contact_created
      title: Contact created
      contentType: application/json
      headers:
        type: object
        properties:
          X-Reonic-Event:
            type: string
            const: contact_created
      payload:
        type: object
        properties:
          version:
            type: number
            const: 1
          type:
            type: string
            const: contact_created
          occurredAt:
            type: string
            format: date-time
          data:
            type: object
            properties:
              contactId:
                type: string
                format: uuid
                description: Reference to [**Contacts**](#tag/contacts).
                example: 123e4567-e89b-12d3-a456-426614174000
            required:
            - contactId
    project_createdEvent:
      name: project_created
      title: Project created
      contentType: application/json
      headers:
        type: object
        properties:
          X-Reonic-Event:
            type: string
            const: project_created
      payload:
        type: object
        properties:
          version:
            type: number
            const: 1
          type:
            type: string
            const: project_created
          occurredAt:
            type: string
            format: date-time
          data:
            type: object
            properties:
              projectId:
                type: string
                format: uuid
                description: ID of the project this event relates to. Fetch its current state via [**Residential
                  Projects**](#tag/residential-projects) or [**Commercial Projects**](#tag/commercial-projects),
                  depending on `projectType`.
                example: 123e4567-e89b-12d3-a456-426614174000
              projectType:
                type: string
                enum:
                - residential
                - commercial
                description: Which vertical the project belongs to.
                example: residential
            required:
            - projectId
            - projectType
    project_kanbanColumnChangedEvent:
      name: project_kanbanColumnChanged
      title: Project Kanban column changed
      contentType: application/json
      headers:
        type: object
        properties:
          X-Reonic-Event:
            type: string
            const: project_kanbanColumnChanged
      payload:
        type: object
        properties:
          version:
            type: number
            const: 1
          type:
            type: string
            const: project_kanbanColumnChanged
          occurredAt:
            type: string
            format: date-time
          data:
            type: object
            properties:
              projectId:
                type: string
                format: uuid
                description: ID of the project this event relates to. Fetch its current state via [**Residential
                  Projects**](#tag/residential-projects) or [**Commercial Projects**](#tag/commercial-projects),
                  depending on `projectType`.
                example: 123e4567-e89b-12d3-a456-426614174000
              projectType:
                type: string
                enum:
                - residential
                - commercial
                description: Which vertical the project belongs to.
                example: residential
              previousStage:
                type:
                - string
                - 'null'
                enum:
                - request
                - offer
                - installation
                - null
              newStage:
                type:
                - string
                - 'null'
                enum:
                - request
                - offer
                - installation
                - null
              previousKanbanColumnId:
                type:


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