# ExLine v0.1.0 - Table of Contents

> An unofficial Elixir client for the LINE platform (Messaging API), with spec-driven conformance against LINE's official OpenAPI definitions.

## Pages

- [ExLine](readme.md)
- [Channel access tokens](channel_access_token.md)

## Modules

- [ExLine](ExLine.md): An Elixir client for the [LINE](https://developers.line.biz/) platform.
- [ExLine.Api.AccountLink](ExLine.Api.AccountLink.md): Links a LINE user to an account in your own service (account linking).
- [ExLine.Api.Bot](ExLine.Api.Bot.md): Information about the bot / LINE Official Account.
- [ExLine.Api.ChannelAccessToken](ExLine.Api.ChannelAccessToken.md): Issue, verify, and revoke **channel access tokens** for the Messaging API.
- [ExLine.Api.Content](ExLine.Api.Content.md): Download media that users sent (image/video/audio/file) and check its status.
- [ExLine.Api.Coupon](ExLine.Api.Coupon.md): Coupon management API (create / list / detail / close).
- [ExLine.Api.Group](ExLine.Api.Group.md): Group and multi-person room APIs: summary, member counts/ids/profiles, and leaving.
- [ExLine.Api.Insight](ExLine.Api.Insight.md): Aggregation-unit usage for the Messaging API.
- [ExLine.Api.Membership](ExLine.Api.Membership.md): LINE Official Account membership (paid subscription) information.
- [ExLine.Api.Messaging](ExLine.Api.Messaging.md): LINE Messaging API send endpoints.
- [ExLine.Api.Profile](ExLine.Api.Profile.md): Fetch user profiles and follower IDs via the Messaging API.
- [ExLine.Api.RichMenu](ExLine.Api.RichMenu.md): Rich menu API: create/manage rich menus, upload their images, set the default,
link per-user, manage aliases, and run bulk (batch) operations.
- [ExLine.Api.Webhook](ExLine.Api.Webhook.md): Manage the channel's webhook endpoint setting (get / set / test).
- [ExLine.ChannelAccessToken.Assertion](ExLine.ChannelAccessToken.Assertion.md): Builds and signs the JWT assertion used by the JWT-based channel-access-token
endpoints (`ExLine.Api.ChannelAccessToken.issue_jwt/2`,
`issue_stateless_with_jwt/2`, `key_ids/2`).
- [ExLine.ChannelAccessToken.Cache](ExLine.ChannelAccessToken.Cache.md): A GenServer that caches a channel access token and refreshes it before it expires.
- [ExLine.Client](ExLine.Client.md): Holds the Messaging API credentials and HTTP configuration as a plain value.
- [ExLine.Client.Adapter](ExLine.Client.Adapter.md): Behaviour for the HTTP transport used by `ExLine.Client`.
- [ExLine.Client.Req](ExLine.Client.Req.md): Default `ExLine.Client.Adapter` implementation backed by [Req](https://hex.pm/packages/req).

- [ExLine.EventHandler](ExLine.EventHandler.md): Behaviour + convenience macro for implementing LINE event handlers dispatched by
`ExLine.EventRouter`.
- [ExLine.EventRouter](ExLine.EventRouter.md): A DSL for routing **parsed** LINE webhook events (`ExLine.Webhook` structs) to
handlers.
- [ExLine.Message](ExLine.Message.md): Builders for LINE message objects.
- [ExLine.Message.Action](ExLine.Message.Action.md): Builders for LINE action objects (used in templates, quick replies, imagemaps).
- [ExLine.Message.Flex](ExLine.Message.Flex.md): Builders for Flex Message containers and components.
- [ExLine.Message.Imagemap](ExLine.Message.Imagemap.md): Builders for imagemap sub-objects: tappable areas and their actions, plus the
base size, used by `ExLine.Message.imagemap/5`.
- [ExLine.Message.Template](ExLine.Message.Template.md): Builders for LINE template messages.
- [ExLine.Webhook](ExLine.Webhook.md): Parse incoming LINE webhook payloads into event structs.
- [ExLine.Webhook.BodyReader](ExLine.Webhook.BodyReader.md): A custom `Plug.Parsers` body reader that caches the raw request body in
`conn.assigns[:raw_body]`, so `ExLine.Webhook.Plug` can verify the LINE
signature after the JSON parser has consumed the stream.
- [ExLine.Webhook.Event.AccountLink](ExLine.Webhook.Event.AccountLink.md): Result of an account link (link token flow).
- [ExLine.Webhook.Event.Activated](ExLine.Webhook.Event.Activated.md): A module channel was activated (gained chat control).
- [ExLine.Webhook.Event.Beacon](ExLine.Webhook.Event.Beacon.md): A user entered the range of a LINE Beacon.
- [ExLine.Webhook.Event.BotResumed](ExLine.Webhook.Event.BotResumed.md): The bot was resumed.
- [ExLine.Webhook.Event.BotSuspended](ExLine.Webhook.Event.BotSuspended.md): The bot was suspended (e.g. a chat was handed to a human operator).
- [ExLine.Webhook.Event.Deactivated](ExLine.Webhook.Event.Deactivated.md): A module channel was deactivated (lost chat control).
- [ExLine.Webhook.Event.Follow](ExLine.Webhook.Event.Follow.md): A user added the bot as a friend (or unblocked it).
- [ExLine.Webhook.Event.Join](ExLine.Webhook.Event.Join.md): The bot joined a group or room.
- [ExLine.Webhook.Event.Leave](ExLine.Webhook.Event.Leave.md): The bot was removed from a group or room.
- [ExLine.Webhook.Event.MemberJoined](ExLine.Webhook.Event.MemberJoined.md): A user joined a group/room the bot is in. `joined` is `%{members: [Source]}`.
- [ExLine.Webhook.Event.MemberLeft](ExLine.Webhook.Event.MemberLeft.md): A user left a group/room the bot is in. `left` is `%{members: [Source]}`.
- [ExLine.Webhook.Event.Membership](ExLine.Webhook.Event.Membership.md): A change to a user's paid membership for the account.
- [ExLine.Webhook.Event.Message](ExLine.Webhook.Event.Message.md): A user sent a message. `message` is an `ExLine.Webhook.Message` struct.
- [ExLine.Webhook.Event.Module](ExLine.Webhook.Event.Module.md): A module channel event (attach/detach, etc.).
- [ExLine.Webhook.Event.PnpDeliveryCompletion](ExLine.Webhook.Event.PnpDeliveryCompletion.md): Delivery completion for a LINE notification message (PNP).
- [ExLine.Webhook.Event.Postback](ExLine.Webhook.Event.Postback.md): A postback action fired. `postback` is `%{data: ..., params: ...}`.
- [ExLine.Webhook.Event.Unfollow](ExLine.Webhook.Event.Unfollow.md): A user blocked the bot.
- [ExLine.Webhook.Event.Unknown](ExLine.Webhook.Event.Unknown.md): Fallback for an event type ExLine does not model (a less common or newly added type). The envelope is still parsed; full payload is in `raw`.
- [ExLine.Webhook.Event.Unsend](ExLine.Webhook.Event.Unsend.md): A user unsent (withdrew) a message.
- [ExLine.Webhook.Event.VideoPlayComplete](ExLine.Webhook.Event.VideoPlayComplete.md): A user finished playing a video message (with a tracking id).
- [ExLine.Webhook.Message](ExLine.Webhook.Message.md): Parses the message content of an `ExLine.Webhook.Event.Message`.
- [ExLine.Webhook.Message.Audio](ExLine.Webhook.Message.Audio.md): Audio message content.
- [ExLine.Webhook.Message.File](ExLine.Webhook.Message.File.md): File message content.
- [ExLine.Webhook.Message.Image](ExLine.Webhook.Message.Image.md): Image message content.
- [ExLine.Webhook.Message.Location](ExLine.Webhook.Message.Location.md): Location message content.
- [ExLine.Webhook.Message.Sticker](ExLine.Webhook.Message.Sticker.md): Sticker message content.
- [ExLine.Webhook.Message.Text](ExLine.Webhook.Message.Text.md): Text message content (`ExLine.Webhook.Event.Message`).
- [ExLine.Webhook.Message.Unknown](ExLine.Webhook.Message.Unknown.md): Fallback for an unrecognized message content type.
- [ExLine.Webhook.Message.Video](ExLine.Webhook.Message.Video.md): Video message content.
- [ExLine.Webhook.Plug](ExLine.Webhook.Plug.md): Plug that verifies the LINE webhook signature and halts with `401` on failure.
- [ExLine.Webhook.Signature](ExLine.Webhook.Signature.md): Verifies the `x-line-signature` header on incoming webhook requests.
- [ExLine.Webhook.Source](ExLine.Webhook.Source.md): The origin of a webhook event: a user, group, or room.

- Exceptions
  - [ExLine.Error](ExLine.Error.md): Normalized error returned by `ExLine` API calls.

