All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[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 429s) 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.