# Changelog ## [0.1.0] — unreleased Initial release. ### Added - `Zyfy` client class with `vehicle` and `postcode` resource namespaces - `vehicle.lookup()` — single vehicle lookup by UK registration - `vehicle.bulkLookup()` — synchronous bulk vehicle lookup - `vehicle.submitBulk()` / `vehicle.getJob()` / `vehicle.deleteJob()` — async bulk job workflow - `postcode.lookup()` — single postcode lookup - `postcode.nearest()` — nearest postcode by WGS84 coordinates - `postcode.bulkLookup()` — synchronous bulk postcode lookup - `postcode.submitBulk()` / `postcode.getJob()` / `postcode.deleteJob()` — async bulk job workflow - Automatic enrichment retry on `enrichmentPending: true` (configurable via `maxEnrichmentRetries`) - `quota` object on every response, populated from `X-Quota-*` headers - Typed error hierarchy: `AuthenticationError`, `NotFoundError`, `ValidationError`, `RateLimitError`, `QuotaExhaustedError`, `ApiError`, `NetworkError` - `isVehicleBulkError()` and `isPostcodeBulkError()` type guards for bulk result items - `debug` mode logs requests and responses to stderr (API key always redacted) - ESM + CJS dual build, TypeScript declarations included