2.3.1

(chore): Migrate template engine from lodash to Eta for consistency with other generators.

2.3.0

(feat): Add maxRetries custom config option to override the default maximum number of retries for failed requests. The default remains 2 when not specified.


2.3.2-rc.0

(feat): Upgrade to IR v66 which compresses the IR Name type, reducing IR size and increasing performance.


2.2.6

(fix): Support multiple Basic Auth schemes with AuthSchemesRequirement.Any. When an API defines more than one basic auth scheme (e.g., accountId/authToken and apiKey/apiKeySecret), the generated client now produces conditional if/else if blocks that check which credential pair was provided and sets the Authorization header accordingly. Previously, only the first basic auth scheme was used.


2.2.5

(fix): Wire Basic Auth credentials into the Authorization header. Previously, the generated client accepted username/password constructor parameters but never set the Authorization: Basic <base64> header on outgoing requests. The constructor now encodes the credentials and adds the header automatically.


2.2.4

(fix): Thread endpoint ID through dynamic snippet generator to differentiate generated snippets by endpoint.

2.2.3

(fix): Fix 204 No Content handling for endpoints with a JSON response type. Previously, endpoints returning an empty body (e.g. 204) would throw a BrevoException even on a successful response. Now all JSON response return types are nullable (?Type) and the generated code returns null instead of throwing when the response body is empty.


2.2.2

(fix): Fix JSON deserialization error when API returns an empty response body for endpoints with a declared JSON response type. Previously, a JsonException: Syntax error was thrown because the SDK attempted to JSON-decode an empty string. Now the generated code checks for an empty response body before attempting deserialization and returns null gracefully.


2.2.1

(fix): Fix Wire test files to read WIREMOCK_URL environment variable instead of hardcoding http://localhost:8080. The setUp() method now declares a $wiremockUrl variable that reads from the environment with a fallback, enabling tests to work with dynamically assigned Docker ports in local development and CI/CD environments.


2.2.0

(feat): Add omitFernHeaders configuration option. When enabled, Fern platform headers (X-Fern-Language, X-Fern-SDK-Name, X-Fern-SDK-Version, User-Agent) are omitted from generated SDK requests.

2.1.12

(fix): Fix WireMock datetime mismatch in wire tests. The mock-utils package generates datetime query parameter values with milliseconds (e.g., 2022-01-02T00:00:00.000Z) via Date.toISOString(), but PHP’s DateTimeInterface::RFC3339 format omits fractional seconds (e.g., 2022-01-02T00:00:00Z). Since WireMock’s equalTo is an exact-match, the stubs never fired. Now strips zero milliseconds from WireMock datetime query parameter values to match the PHP SDK’s serialization format.


2.1.11

(chore): Add concurrency configuration to generated CI workflow with cancel-in-progress: false to prevent stacked runs from being cancelled when a newer run starts.


2.1.10

(fix): Fix serialization and deserialization of boolean values in union types. (Matches existing fix for floats.)

2.1.9

(fix): Re-throw errors after logging for README.md and reference.md generation failures. Documentation generation errors now break the generation flow so they are treated as important to fix.

2.1.8

(fix): Fix dynamic snippets to include global headers in generated code examples. Previously, required global headers (e.g., X-Organization-ID) configured via x-fern-global-headers were missing from dynamic snippet output. Also fixes header value lookup to use wire values instead of a non-existent property.