Revision history for HTTP-API-Client

0.11  2026-08-16
    - Add transport-independent idempotency-key support.
    - Accept per-request idempotency key and header name configuration.
    - Preserve explicitly supplied request headers instead of overwriting them.
    - Keep service-specific idempotency header naming outside the core.
    - Add validation, documentation, and regression tests.

0.10  2026-08-16
    - Stabilize the structured error model and document public error categories.
    - Define encode, decode, transport, http, and hook as machine-readable categories.
    - Add body, text, json, headers, and header accessors on error objects.
    - Document response availability and stringification behavior.
    - Add compatibility-focused regression tests for error semantics.

0.09  2026-08-16
    - Refine response API ergonomics and documentation.
    - Add text, has_content, content_type, and is_json helpers.
    - Return undef from json() for empty or whitespace-only bodies.
    - Keep explicit JSON decoding independent of Content-Type.
    - Preserve structured decode errors for invalid non-empty JSON.
    - Document defensive header copies and response body behavior.

0.08  2026-08-16
    - Add lightweight request observability metadata.
    - Add elapsed transport time to responses and errors.
    - Normalize common request ID headers on responses.
    - Expose started_at, elapsed, and request_id in lifecycle hook context.
    - Keep logging, metrics, tracing, and telemetry backends outside the core.

0.07  2026-08-16
    - Add HTTP::API::Client::Auth authentication hook helpers.
    - Add Bearer token and HTTP Basic authentication helpers.
    - Add API-key authentication via headers or query parameters.
    - Keep authentication composable through before_request lifecycle hooks.
    - Declare MIME::Base64 for Basic authentication encoding.

0.06  2026-08-16
    - Add first-class query parameter encoding to all requests.
    - Support repeated keys with array references and omit undefined values.
    - Preserve existing query strings and URL fragments when appending parameters.
    - Expose the fully encoded URL to request lifecycle hooks.

0.05  2026-08-16
    - Add client-level and per-request lifecycle hooks.
    - Add before_request, after_response, and on_error hooks.
    - Allow before_request hooks to modify the outgoing request context.
    - Wrap hook failures as structured non-retryable hook errors.

0.04  2026-08-16
    - Add normalized rate-limit metadata on responses and errors.
    - Parse RateLimit-* and X-RateLimit-* quota headers.
    - Expose limit, remaining, used, resource, reset, and wait_seconds helpers.
    - Treat exhausted 403/429 responses as retryable and use reset metadata as a fallback delay.

0.03  2026-08-16
    - Add unified next-URL, page-number, and cursor pagination.

0.02  2026-08-16
    - Add conservative automatic retry support.
    - Retry GET/HEAD/PUT/DELETE/OPTIONS by default, but not POST/PATCH.
    - Add exponential backoff with jitter and numeric Retry-After support.
    - Allow retry policy overrides per client and per request.

0.01  2026-08-16
    - Initial release.
    - Add base URL and headers.
    - Add JSON request/response helpers.
    - Add structured errors and injectable transport.
