Current section
Files
Jump to
Current section
Files
lib/postage/webhooks.ex
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