# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [1.0.0] - 2026-06-18
### Added
Initial release, covering the full Triple API surface:
- `Triple.Enrich` — structured (`POST /v1/enrich-transaction/`) and
unstructured (`POST /v2/enrich-unstructured-transaction/`) transaction
enrichment, each with local request validation and a typed, fully
nested response struct.
- `Triple.Brands` — brand lookup by id (`GET /v1/brands/{id}/`).
- `Triple.Feedback` — customer feedback reporting
(`POST /v1/customer-feedback/`).
- `Triple.Stocks` — brokerage stock/fund lookup by ISIN, with optional
logo format filtering (`GET /v1/stocks/{isin}/`).
- `Triple.Cryptos` — cryptocurrency lookup by slug
(`GET /v1/cryptos/{slug}/`).
- `Triple.TLS` — mTLS client certificate issuance against the
control-plane host (`POST /v1/tls-certificates/`).
- `Triple.Config` — explicit, process-free client configuration with
automatic sandbox/production environment inference from the API key
prefix (`tr_test_` / `tr_live_`).
- `Triple.Error` — a single structured exception type covering local
validation failures, every documented HTTP error response, and
transport-level failures.
- Automatic retry (with exponential backoff, honoring the `retry-after`
header on `429`s) for `408`/`429`/`5xx` responses and transport errors.
- `[:triple, :request, :start | :stop | :exception]` telemetry events.
- `Triple.RateLimiter` — optional, opt-in client-side token-bucket rate
limiting for bulk workloads.
- `Triple.Util.generate_transaction_id/0` — UUID v4 helper for the
required-and-unique `transaction_id` field.
- `!` (raising) variants for every API call.