defimpl Poison.Encoder, for: Apostle.Queue do def encode queue, _opts do queue |> Map.get(:emails) |> Enum.reduce(%{recipients: %{}}, fn(mail,r)-> email = Map.get mail, :email recipients = Map.get r, :recipients recipients = Map.put recipients, email, mail Map.put r, :recipients, recipients end) |> Poison.encode! end end