DataLoop · AsyncAPI Specification

Dataloop Platform Events

Version

View Spec View on GitHub Artificial IntelligenceMachine LearningData ManagementData AnnotationMLOpsComputer VisionGenerative AIData LabelingPipelinesServerlessEnterprise SoftwareCompanyAsyncAPIWebhooksEvents

AsyncAPI Specification

dataloop-platform-events.yml Raw ↑
generated: '2026-08-04'
method: searched
source: https://docs.dataloop.ai/docs/triggers
sources:
- https://docs.dataloop.ai/docs/triggers
- https://docs.dataloop.ai/docs/pipeline-trigger
- https://github.com/dataloop-ai/dtlpy/blob/master/dtlpy/entities/trigger.py
- https://github.com/dataloop-ai/dtlpy/blob/master/dtlpy/entities/webhook.py
- https://github.com/dataloop-ai/dtlpy/blob/master/dtlpy/repositories/webhooks.py
spec_type: none
asyncapi_published: false
notes: >-
  Dataloop publishes no AsyncAPI document, but it does ship two real event
  surfaces. (1) Event Triggers: a consumer registers a trigger on a resource +
  action, optionally narrowed by a DQL filter, and the platform invokes the
  consumer's deployed FaaS service or pipeline when the event occurs. (2) Webhooks:
  a first-class platform entity with its own CRUD API at /webhooks, holding an
  outbound hookUrl and httpMethod scoped to a project, callable as a pipeline node.
  This artifact records the published event and webhook surface as found in the
  provider's own documentation and first-party SDK; nothing here is fabricated.
surface:
  name: Dataloop Event Triggers and Webhooks
  delivery:
  - platform-invoked FaaS service or pipeline node (Event/Cron triggers)
  - outbound HTTP call to a registered hookUrl (Webhook entity)
  outbound_http_webhooks: true
  consumer_registers: trigger (resource + action + DQL filter + execution mode), or a webhook (name + hookUrl + httpMethod)
  managed_via: [UI Triggers tab, Python SDK dl.triggers / dl.webhooks, 'dlp triggers CLI', REST API]
webhooks:
  entity: Webhook
  api_base: https://gate.dataloop.ai/api/v1/webhooks
  operations:
  - {method: POST, path: /webhooks, description: Create a webhook}
  - {method: POST, path: /webhooks/query, description: List/query webhooks (DQL, paged)}
  - {method: GET, path: '/webhooks/{id}', description: Get a webhook}
  - {method: PATCH, path: '/webhooks/{id}', description: Update a webhook}
  - {method: DELETE, path: '/webhooks/{id}', description: Delete a webhook}
  create_payload:
    name: string
    httpMethod: 'GET | POST | DELETE | PATCH'
    hookUrl: string (consumer-supplied target URL)
    project: project id
  fields_returned: [id, name, url, hookUrl, httpMethod, project, creator, createdAt, updatedAt]
  scope: project
  signing: not documented
  retries: not documented
  source: https://github.com/dataloop-ai/dtlpy/blob/master/dtlpy/repositories/webhooks.py
  note: >-
    Derived from the first-party Python SDK, which is the authoritative client for
    this API. The webhook surface is NOT covered on the documentation site — there
    is no webhook page in the docs index (llms.txt) and no event-payload reference.
trigger_types:
- {type: Event, description: Fires when a predefined platform event occurs on a resource}
- {type: Cron, description: Scheduled time-based invocation of a service function}
resources:
- {name: Item, description: A data item (image, video, audio, text, LiDAR frame) in a dataset}
- {name: Dataset, description: A dataset within a project}
- {name: Annotation, description: An annotation on an item}
- {name: Task, description: An annotation/review task}
- {name: Assignment, description: An assignment of a task to an annotator}
- {name: ItemStatus, description: The workflow status of an item within a task}
actions:
- {name: Created}
- {name: Updated}
- {name: Deleted}
- {name: statusChanged}
- {name: Clone}
execution_modes:
- {name: Once, description: Fire the trigger only the first time an entity matches}
- {name: Always, description: Fire every time the event occurs}
filtering:
  language: DQL
  applies_to: Event triggers only
  description: >-
    A DQL filter narrows which entities fire the trigger (e.g. only items in a
    given directory, or only annotations of a given label).
in_platform_notifications:
  description: >-
    Separate from triggers, Dataloop runs a subscriber notification system that
    emits alerts on service and workflow events (service CrashLoopBackOff and
    configuration/authorization/init errors, ImagePullBackOff, Service Execution
    Failed, Pipeline Cycle Failed, Task Created/Completed/Updated/Expired,
    Assignment Created/Canceled/Updated/Expired/Priority Change, QA-flow issue
    and note events). Channels are the in-product inbox and email — not HTTP.
  docs: https://docs.dataloop.ai/docs/notification-system
x-evidence:
- {fetched: '2026-08-04', url: 'https://docs.dataloop.ai/docs/triggers.md', http_status: 200}
- {fetched: '2026-08-04', url: 'https://raw.githubusercontent.com/dataloop-ai/dtlpy/master/dtlpy/entities/trigger.py', http_status: 200}
- {fetched: '2026-08-04', url: 'https://docs.dataloop.ai/docs/notification-system.md', http_status: 200}
gap:
  summary: >-
    The event catalog is real and enumerable (6 resources x 5 actions) and there is
    a genuine outbound Webhook entity, but neither is machine-described — no
    AsyncAPI, no payload schemas for what a triggered function or webhook target
    receives, no signing scheme, no retry/delivery guarantees, and the webhook
    surface is absent from the documentation site entirely (SDK-only).
  recommended:
  - Publish an AsyncAPI 3.x document for the trigger resources/actions with message payload schemas.
  - Document the /webhooks surface, its payload, its signature scheme and its retry policy on docs.dataloop.ai.