All notable changes to this project will be documented in this file.
The format is based on Common Changelog, and this project adheres to Semantic Versioning.
[0.1.4] - 2026-02-17
Changed
- Exclude code generator and
mix polar_express.generatetask from hex package — the package is regenerated weekly from the latest Polar OpenAPI spec, so end users only need the generated output; contributors who need immediate regeneration can usemix polar_express.generatefrom the repo. This also drops therustyjsontransitive dependency
[0.1.3] - 2026-02-16
Fixed
- Use
String.to_existing_atom/1instead ofString.to_atom/1when parsing API error type strings to prevent atom table exhaustion from unexpected error types
[0.1.2] - 2026-02-12
Added
- Support for
oneOf/anyOfpolymorphism (e.g.,BenefitCreate), generating Union types - Support for
prefixItems(tuple arrays) in OpenAPI schemas, resolving to Union lists (e.g.,Customer.tax_id)
Fixed
- Correctly generate typed maps for
additionalProperties(e.g.,CheckoutPublicConfirmed.prices) instead of genericmap() - Add missing
CustomerPortalOAuthAccountschema to supportoauth_accountsfield throughout the API - Fix
Enummodule generation to prevent truncation of large value lists (e.g.,CountryAlpha2) - Resolve all compiler warnings in generator logic
[0.1.1] - 2026-02-11
Changed
- Wire webhook event deserialization through generated
EventTypesregistry instead of hardcoded map inWebhook - Add
@type t,@typedoc, and@specto all generated per-event modules - Type the
datafield on event structs to the correct schema (e.g.,Order.t()instead ofmap()) - Replace
event_type_to_data_refstring registry withevent_type_to_schemareturning full module atoms - Populate
event_type_to_modulemapping for all 35 webhook event types
Removed
- Remove
ObjectTypesregistry module (Stripe-ism, unused by Polar API) - Remove Stripe dead code from generator:
x-stripeEventparsing, thin event support,lookup_type/0 - Remove
webhook_data_schemasfrom spec struct (now derived fromevent_types)
Fixed
- Fix package description exceeding Hex.pm 300-character limit
- Remove missing
.formatter.exsfrom package file list - Fix generator outputting registry files to
lib/stripe/instead oflib/polar_express/ - Fix
EventTypes.event_type_to_data_refmapping all events tonil - Fix doctest in
Naming.module_to_path/1referencinglib/stripe/
v0.1.0
Initial release.
Features
- Full API coverage (31 service modules matching the JavaScript SDK layout)
- Auto-generated from the Polar OpenAPI spec
- Typed Elixir structs for 30 resource types with inner type deserialization
- List pagination (
ListObject.auto_paging_stream/3) - Webhook signature verification via standardwebhooks (
Webhook.construct_event/4) WebhookPlugfor Plug/Phoenix integration- OAuth support (
authorize_url,token,deauthorize) - Multipart file uploads
- Streaming response support (
Client.stream_request/6) - Raw request support (
Client.raw_request/4) - Per-event typed modules (36 event types with nested data structs)
- Ownership-based test stubs (
PolarExpress.Test) - Retry with exponential backoff and jitter
- Telemetry events for request lifecycle
- Finch HTTP client (Mint + NimblePool)
- RustyJSON for fast JSON parsing (Rust NIF)
- 1:1 feature parity with the official JavaScript SDK