# converger_client v0.1.0 - Table of Contents

> Elixir client for Converger: REST (Req), Protocol v1 WebSocket client with resume (Mint.WebSocket) and webhook signature verification.

## Pages

- [ConvergerClient](readme.md)

## Modules

- [ConvergerClient](ConvergerClient.md): Elixir client for [Converger](https://converger.aimtune.dev).
- [ConvergerClient.Ack](ConvergerClient.Ack.md): The server ack of a socket send with a `clientId`.
- [ConvergerClient.Activity](ConvergerClient.Activity.md): The canonical activity (tenant API, delivery payloads and outbound webhook bodies, which add `timestamp`). Timestamps are ISO 8601 strings.
- [ConvergerClient.ActivityPage](ConvergerClient.ActivityPage.md): A watermark page of `ConvergerClient.TenantAPI.list_activities/3`.
- [ConvergerClient.ChannelAccount](ConvergerClient.ChannelAccount.md): The sender of a client API activity.
- [ConvergerClient.ClientAPI](ConvergerClient.ClientAPI.md): The client API under `/api/v1/converger`, authenticated with converger
tokens (`Authorization: Bearer`). Your backend mints tokens with the
channel secret (`generate_token/2`) and hands conversation-bound tokens to
end users, or uses them itself (for example with `ConvergerClient.Socket`).

- [ConvergerClient.ClientActivity](ConvergerClient.ClientActivity.md): An activity as the client API renders it (camelCase on the wire). Timestamps are ISO 8601 strings.
- [ConvergerClient.ClientActivityPage](ConvergerClient.ClientActivityPage.md): A page of `ConvergerClient.ClientAPI.list_activities/4`.
- [ConvergerClient.Conversation](ConvergerClient.Conversation.md): A conversation as the tenant API renders it. Timestamps are ISO 8601 strings.
- [ConvergerClient.ConversationStatus](ConvergerClient.ConversationStatus.md): Returned by the client API close and reopen calls.
- [ConvergerClient.ConversationToken](ConvergerClient.ConversationToken.md): A conversation-bound token (`ConvergerClient.ClientAPI.create_conversation/2`, `get_conversation/4`).
- [ConvergerClient.Model](ConvergerClient.Model.md): Defines response structs from a field list.
- [ConvergerClient.Page](ConvergerClient.Page.md): A keyset page of `ConvergerClient.TenantAPI.list_conversations/2` (`data` holds `ConvergerClient.Conversation` structs).
- [ConvergerClient.Participant](ConvergerClient.Participant.md): The external party of a conversation (for example a WhatsApp number).
- [ConvergerClient.Protocol.Session](ConvergerClient.Protocol.Session.md): Transport-independent Protocol v1 resume state machine.
- [ConvergerClient.ResourceResponse](ConvergerClient.ResourceResponse.md): Returned by `ConvergerClient.ClientAPI.post_activity/4`.
- [ConvergerClient.Socket](ConvergerClient.Socket.md): Protocol v1 WebSocket client for the native endpoint
(`/socket/converger/v1`), built on `Mint.WebSocket`.
- [ConvergerClient.TenantAPI](ConvergerClient.TenantAPI.md): The tenant API under `/api/v1`, authenticated with the tenant API key
(`x-api-key`). For bots, CRMs and other backends.

- [ConvergerClient.TokenResponse](ConvergerClient.TokenResponse.md): Returned by `ConvergerClient.ClientAPI.generate_token/2` and `refresh_token/2`.
- [ConvergerClient.Webhook](ConvergerClient.Webhook.md): Verification of Converger outbound webhook signatures.

- Exceptions
  - [ConvergerClient.Error](ConvergerClient.Error.md): A non-2xx HTTP response, normalized whatever error shape the server used:
the standard envelope `{"error": {"code", "message", "details",
"request_id"}}` (#45) or one of the legacy shapes
(`packages/conformance/errors.json`).

