Closed (fixed)
Project:
Acquia DAM
Version:
1.1.x-dev
Component:
Code
Priority:
Normal
Category:
Task
Assigned:
Unassigned
Reporter:
Created:
16 Jul 2026 at 03:25 UTC
Updated:
25 Aug 2026 at 04:50 UTC
Jump to comment: Most recent
Implement a POST /acquia-dam/webhook endpoint that processes key DAM webhook events synchronously and immediately. This keeps media entities in Drupal aligned with DAM state within seconds.
The endpoint must handle the three key event types inline in the controller, not through a queue. This removes dependency on cron frequency for actionable events and avoids duplicate queue entries between the webhook path and the cron polling path.
acquia_dam_webhooks.webhook_receiver at POST /acquia-dam/webhook with _access: TRUE, _auth: []FLOOD_EVENT = 'acquia_dam_webhooks.webhook_receive')event_type → 400webhook_signature_required = TRUE: HMAC validated → 401 on failure (optional)webhook_signature_required = FALSE: HMAC skipped; notice logged on every request (optional)ping → 200 immediately, no queue itemasset_id → 400asset_deleted + webhook_unpublish_on_delete = TRUE → unpublish referencing media entities inline, return 200 (no queue)asset_deleted + webhook_unpublish_on_delete = FALSE → log + no-op, return 200asset_metadata_value_updated → call AssetMediaSyncService::syncAsset() for each referencing media entity inline, return 200 (no queue)asset_version_added → same as asset_metadata_value_updatedasset_created and all other known/unknown events → pushed to acquia_dam_webhook_events queue → 200acquia_dam.asset_media_sync service; no dependency on queue worker plugin manageracquia_dam_webhooks.settings (not acquia_dam.settings)hook_install: auto-registers if parent token already set and webhook_enabled = TRUEhook_uninstall: best-effort deregisterAll() + deletes all acquia_dam_webhooks.* State keysStart within a Git clone of the project using the version control instructions.
Or, if you do not have SSH keys set up on git.drupalcode.org:
Comments
Comment #4
rajeshreeputraMR merged!