Search documentation of polar_express

# Changelog

Copy Markdown View Source

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.generate` task 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 use `mix polar_express.generate` from the repo. This also drops the `rustyjson` transitive dependency

## [0.1.3] - 2026-02-16

### Fixed

- Use `String.to_existing_atom/1` instead of `String.to_atom/1` when parsing API error type strings to prevent atom table exhaustion from unexpected error types

## [0.1.2] - 2026-02-12

### Added

- Support for `oneOf` / `anyOf` polymorphism (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 generic `map()`
- Add missing `CustomerPortalOAuthAccount` schema to support `oauth_accounts` field throughout the API
- Fix `Enum` module 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 `EventTypes` registry instead of hardcoded map in `Webhook`
- Add `@type t`, `@typedoc`, and `@spec` to all generated per-event modules
- Type the `data` field on event structs to the correct schema (e.g., `Order.t()` instead of `map()`)
- Replace `event_type_to_data_ref` string registry with `event_type_to_schema` returning full module atoms
- Populate `event_type_to_module` mapping for all 35 webhook event types

### Removed

- Remove `ObjectTypes` registry module (Stripe-ism, unused by Polar API)
- Remove Stripe dead code from generator: `x-stripeEvent` parsing, thin event support, `lookup_type/0`
- Remove `webhook_data_schemas` from spec struct (now derived from `event_types`)

### Fixed

- Fix package description exceeding Hex.pm 300-character limit
- Remove missing `.formatter.exs` from package file list
- Fix generator outputting registry files to `lib/stripe/` instead of `lib/polar_express/`
- Fix `EventTypes.event_type_to_data_ref` mapping all events to `nil`
- Fix doctest in `Naming.module_to_path/1` referencing `lib/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`)
- `WebhookPlug` for 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

← Previous Page PolarExpress
Next Page → Getting Started