Current section
Files
Jump to
Current section
Files
lib/agentmail/webhooks.ex
defmodule Agentmail.Webhooks do
@moduledoc """
Manage webhooks for receiving email events.
## Event Types
* `message.received` - New email processed in inbox
* `message.sent` - Message successfully dispatched
* `message.delivered` - Delivery confirmed
* `message.bounced` - Failed delivery
* `message.complained` - Recipient marked as spam
* `message.rejected` - Rejected before sending
* `domain.verified` - Custom domain verification complete
## Examples
client = Agentmail.client()
{:ok, webhook} = Agentmail.Webhooks.create(client, %{
url: "https://myapp.fly.dev/webhooks/agentmail",
event_types: ["message.received"]
})
{:ok, webhooks} = Agentmail.Webhooks.list(client)
"""
import Agentmail.Request
@doc """
Creates a webhook.
## Params
* `url` - Public URL to receive POST requests (required)
* `event_types` - List of event types to subscribe to (required)
* `inbox_ids` - Filter to specific inboxes (optional)
"""
def create(%Agentmail{} = client, params) do
request(client, :post, "/webhooks", params)
end
@doc "Lists all webhooks."
def list(%Agentmail{} = client) do
request(client, :get, "/webhooks")
end
@doc "Gets a specific webhook."
def get(%Agentmail{} = client, webhook_id) do
request(client, :get, "/webhooks/#{webhook_id}")
end
@doc "Updates a webhook."
def update(%Agentmail{} = client, webhook_id, params) do
request(client, :patch, "/webhooks/#{webhook_id}", params)
end
@doc "Deletes a webhook."
def delete(%Agentmail{} = client, webhook_id) do
request(client, :delete, "/webhooks/#{webhook_id}")
end
end