# `A2A.PushNotificationConfig`
[🔗](https://github.com/actioncard/a2a-elixir/blob/main/lib/a2a/push_notification_config.ex#L1)

Webhook configuration for push notifications on a task.

Mirrors the `TaskPushNotificationConfig` object from the A2A v1.0 spec. A
task may carry several configs, each identified by `:id` within the scope of
its `:task_id`.

Registering a config is a declaration of intent only — this library stores
and serves configs but does not yet deliver webhooks. See the "Push
Notifications" section of `SPEC.md`.

## Fields

  * `:id` — identifier, unique per task. Generated when the client omits it.
  * `:task_id` — the task this config belongs to (required)
  * `:url` — webhook endpoint that receives task updates (required)
  * `:token` — opaque token echoed back to the webhook for validation
  * `:authentication` — credentials the server presents when calling the
    webhook: `%{scheme: "Bearer", credentials: "..."}`

## Examples

    %A2A.PushNotificationConfig{
      id: "pcfg-a1B2c3D4e5F6",
      task_id: "tsk-a1B2c3D4e5F6",
      url: "https://example.com/webhook",
      authentication: %{scheme: "Bearer", credentials: "s3cret"}
    }

# `authentication`

```elixir
@type authentication() :: %{
  optional(:scheme) =&gt; String.t(),
  optional(:credentials) =&gt; String.t() | nil
}
```

# `t`

```elixir
@type t() :: %A2A.PushNotificationConfig{
  authentication: authentication() | nil,
  id: String.t() | nil,
  task_id: String.t() | nil,
  token: String.t() | nil,
  url: String.t()
}
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
