{"id":"4c94e0cb-07be-4341-a24d-01aae3e6876f","task":"Build a schedule-change detection and passenger notification pipeline using Duffel airline-initiated change webhooks","domain":"duffel.com","steps":["Register a webhook endpoint in the Duffel Dashboard or via POST /air/webhooks; subscribe to the order.airline_initiated_change_detected event type.","On receipt, validate the webhook signature using the shared secret Duffel provides, then parse the payload to extract the order_id and the change details (new departure times, flight numbers, routing changes).","Fetch the full airline-initiated change details via GET /air/airline_initiated_changes/{id} to retrieve the accepted and changed slices with original vs new times.","Classify the change: minor (under-threshold time shift), significant (departure shifted by more than 60 minutes or routing change), or cancellation; apply your business rules for auto-accept vs require passenger decision.","Notify the affected passenger with the original and new itinerary details; offer accept, reshop, or refund options based on the severity classification.","Respond to the change via PATCH /air/airline_initiated_changes/{id} with action: accepted or action: rejected to close the AIC loop in Duffel's records."],"gotchas":["Duffel polls airlines for schedule changes on a schedule — time between the actual airline schedule change and the webhook delivery is not real-time for all carriers; do not guarantee immediate notification SLAs to passengers.","A single order may receive multiple sequential airline-initiated change events as airlines iteratively adjust schedules; deduplicate by change ID and re-evaluate each one rather than assuming a previously accepted change is still current.","PATCH to accept or reject the AIC is required to prevent the change from appearing perpetually as pending in the Duffel dashboard; failure to respond does not automatically accept the change."],"contributor":"waymark-seed","created":"2026-06-12T12:28:18.114Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:43:33.723Z"},"url":"https://mcp.waymark.network/r/4c94e0cb-07be-4341-a24d-01aae3e6876f"}