LeanKit · AsyncAPI Specification
Leankit Automation Webhooks
Version
View Spec
View on GitHub
CompanyKanbanProject ManagementAgileWork ManagementCollaborationEnterprise SoftwarePortfolio ManagementWorkflow AutomationSaaSAsyncAPIWebhooksEvents
AsyncAPI Specification
generated: '2026-07-19'
method: searched
source: https://success.planview.com/Planview_AgilePlace/Cards/Card_Automation/Webhooks
type: Webhooks
name: LeanKit / Planview AgilePlace card automation webhooks
asyncapi_published: false
notes: >-
LeanKit / Planview AgilePlace does not publish an AsyncAPI document. It does publish a real outbound
webhook surface: the "Web service call" card-automation action, which POSTs a contextual payload to a
caller-supplied URL whenever a board automation fires. There is no subscription API — webhooks are
configured per automation in board settings, not over the REST API. Card and board custom events can be
raised programmatically through POST /io/card/{cardId}/automation/customevent and
POST /io/board/{boardId}/automation/customevent, which lets an integration trigger a webhook-bearing
automation from code. A separate first-party polling module (npm leankit-events) exists for consumers
that want board events without configuring automations.
docs:
- https://success.planview.com/Planview_AgilePlace/Cards/Card_Automation/Webhooks
- https://success.planview.com/Planview_AgilePlace/Cards/Card_Automation/Custom_Events
- https://success.planview.com/Planview_AgilePlace/Cards/Card_Automation/GitHub_Actions
delivery:
method: POST
target: URL configured on the automation
content_types:
- application/json
- application/x-www-form-urlencoded
retries: not documented
security:
signature_header: x-lk-signature
algorithm: HMAC-SHA256
encoding: hex
signed_over: the exact raw request body bytes as sent
optional: true
notes: >-
The signature is only present when a secret is configured on the automation. Verify by recomputing the
HMAC over the raw body with the shared secret and comparing in constant time. Planview publishes a
Node.js verification example using crypto.createHmac and crypto.timingSafeEqual.
payload:
fields:
- name: automation.id
description: Identifier of the automation that fired.
- name: automation.description
description: Human description of the automation.
- name: host
description: The AgilePlace account host URL, e.g. https://mycompany.leankit.com
- name: boardId
description: Board identifier.
- name: cardId
description: Card identifier.
- name: laneId
description: Lane identifier relevant to the event.
- name: cardUrl
description: Direct link to the card.
- name: event
description: Name of the event that triggered the automation.
- name: eventData
description: Event-specific details; the fields present vary by event.
- name: eventDate
description: ISO 8601 timestamp of the event.
events:
- name: movedTo
description: Card moved into a lane.
event_data:
- movedFromLaneId
- name: movedFrom
description: Card moved out of a lane.
event_data:
- movedFromLaneId
- name: blocked
description: Card was blocked.
event_data:
- reason
- name: unblocked
description: Card was unblocked.
event_data:
- reason
- name: childConnectionAdded
description: A child connection was added to the card.
event_data:
- childCardId
- parentCardId
- name: childConnectionRemoved
description: A child connection was removed from the card.
event_data:
- childCardId
- parentCardId
- name: parentConnectionAdded
description: A parent connection was added to the card.
event_data:
- childCardId
- parentCardId
- name: parentConnectionRemoved
description: A parent connection was removed from the card.
event_data:
- childCardId
- parentCardId
- name: childBlocked
description: A child card of this card was blocked.
event_data:
- childBlockReason
custom_events:
supported: true
levels:
- card
- board
description: >-
Named custom events extend automations beyond the built-in triggers. A card-level custom event fires
against a single card; a board-level custom event ("Allow Board Event") runs against every card meeting
the criteria. Custom events are raised by name and consumed by a second automation configured with
"Custom Event" as its trigger.
api_operations:
- POST /io/card/{cardId}/automation/customevent
- POST /io/board/{boardId}/automation/customevent
github_actions_dispatch:
supported: true
description: >-
The "Trigger GitHub Action" automation sends a repository_dispatch to a configured owner/repository
with a fixed event_type, delivering the automation, card (including customFields and
customFieldsByLabel), event, eventData, eventDate, and host as client_payload.
auth: GitHub Personal Access Token stored on the automation and never returned to the client.
token_scopes:
- workflow (classic token)
- Contents Read and Write (fine-grained token)
polling_alternative:
package: leankit-events
registry: npm
url: https://github.com/LeanKit/leankit-node-events
description: >-
First-party Node module that polls a board version and emits events such as card-creation, card moves,
assignment, and blocking. Default poll interval is 30 seconds.