# `WhatsApp.Response`
[🔗](https://github.com/jeffhuen/whatsapp_sdk/blob/main/lib/whatsapp/response.ex#L1)

HTTP response metadata from a WhatsApp Cloud API call.

Extracts named fields from the response headers defined in the
OpenAPI spec (`v23.0`). Raw headers are also preserved for any additional values.

## Named Header Fields

| Response Header | Struct Field | Description (from OpenAPI spec) |
|---|---|---|
| `x-fb-trace-id` | `trace_id` | Facebook trace identifier for request tracking |
| `x-fb-request-id` | `request_id` | Unique identifier for the request for debugging purposes |
| `X-FB-Debug` | `debug` | Facebook debug information for troubleshooting |
| `facebook-api-version` | `api_version` | Facebook Graph API version used for the request |
| `x-business-use-case-usage` | `business_use_case_usage` | Business use case usage metrics and rate limiting information (parsed JSON) |
| `x-app-usage` | `app_usage` | Application usage metrics (parsed JSON) |
| `x-fb-rlafr` | `rate_limit_status` | Facebook rate limiting and feature restriction status |
| `X-FB-Connection-Quality` | `connection_quality` | Facebook connection quality metrics |
| `x-fb-rev` | `rev` | Facebook internal revision number |

# `t`

```elixir
@type t() :: %WhatsApp.Response{
  api_version: String.t() | nil,
  app_usage: map() | nil,
  business_use_case_usage: map() | nil,
  connection_quality: String.t() | nil,
  debug: String.t() | nil,
  headers: [{String.t(), String.t()}],
  rate_limit_status: String.t() | nil,
  request_id: String.t() | nil,
  rev: String.t() | nil,
  status: non_neg_integer(),
  trace_id: String.t() | nil
}
```

# `from_fields`

```elixir
@spec from_fields(non_neg_integer(), [{String.t(), String.t()}]) :: t()
```

Build a Response from HTTP status and headers.

Extracts named header fields and parses JSON-encoded headers
(`x-business-use-case-usage`, `x-app-usage`) into maps.

---

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