defmodule ItsfoundPostage.Webhooks do @moduledoc """ This module processes the Easyhip webhook payloads. """ @doc """ When your label has been created. """ def process_event( %{ "event_type"=> "shipment.label.created", "resource_type"=> "shipment", "resource_id"=> _resource_id, "label"=> %{ "easyship_shipment_id"=> _easyship_shipment_id, "platform_order_number"=> _platform_order_number, "status"=> _status, "label_url"=> _label_url, "tracking_number"=> _tracking_number, "tracking_page_url"=> _tracking_page_url } } = payload ) do %{data: payload} end @doc """ When your shipment's checkpoints increased. """ def process_event( %{ "event_type"=> "shipment.label.created", "resource_type"=> "shipment", "resource_id"=> _resource_id, "tracking"=> %{ "easyship_shipment_id"=> _easyship_shipment_id, "platform_order_number"=> _platform_order_number, "origin"=> _origin, "destination"=> _destination, "company_order_number"=> _company_order_number, "status"=> _status, "tracking_number"=> _tracking_number, "tracking_page_url"=> _tracking_page_url, "checkpoints"=> _checkpoints } } = payload ) do %{data: payload} end @doc """ When your shipment's tracking status changed """ def process_event( %{ "event_type"=> "shipment.label.created", "resource_type"=> "shipment", "resource_id"=> _resource_id, "tracking"=> %{ "easyship_shipment_id"=> _easyship_shipment_id, "platform_order_number"=> _platform_order_number, "origin"=> _origin, "destination"=> _destination, "company_order_number"=> _company_order_number, "status"=> _status, "tracking_number"=> _tracking_number, "tracking_page_url"=> _tracking_page_url } } = payload ) do %{data: payload} end @doc """ When your shipment's tracking status changed. """ def process_event( %{ "event_type"=> "shipment.label.failed", "resource_type"=> "shipment", "resource_id"=> _resource_id, "label"=> %{ "easyship_shipment_id"=> _easyship_shipment_id, "platform_order_number"=> _platform_order_number, "status"=> "failed" } } = payload ) do %{data: payload} end @doc """ When your shipment's tracking status changed. """ def process_event( %{ "event_type"=> "shipment.cancelled", "resource_type"=> "shipment", "resource_id"=> _resource_id, "shipment"=> %{ "easyship_shipment_id"=> _easyship_shipment_id, "platform_order_number"=> _platform_order_number, "status"=> "cancelled" } } = payload ) do %{data: payload} end @doc """ When your shipment's warehouse state has been updated. """ def process_event( %{ "event_type"=> "shipment.warehouse.state.updated", "resource_type"=> "shipment", "resource_id"=> _resource_id, "shipment"=> %{ "easyship_shipment_id"=> _easyship_shipment_id, "platform_order_number"=> _platform_order_number, "warehouse_state"=> _warehouse_state } } = payload ) do %{data: payload} end def process_event(_), do: {:error, :invalid_event} end