1.23.9

(fix): Fix JsonException “No constructor found” for empty object types. Previously, object types with no properties would not generate a constructor, causing JSON deserialization to fail. Now all JsonSerializableType subclasses generate a constructor with the expected array $values parameter signature.

1.23.8

(fix): Normalize UTC datetime serialization to use Z suffix instead of +00:00. The JsonSerializer now converts 2023-01-01T12:34:56+00:00 to 2023-01-01T12:34:56Z for UTC times while preserving RFC3339 format for non-UTC timezones. Query parameters and headers now use JsonSerializer::serializeDateTime() for consistent datetime formatting. Test templates updated to match the new behavior.


1.23.7

(fix): Fix DateTime formatting for optional and nullable query parameters. Previously, optional and nullable DateTime query parameters were passed as raw DateTime objects to Guzzle HTTP client, causing request failures. The fix ensures that Optional<DateTime> and Nullable<DateTime> types are correctly identified and formatted using .format() method with proper date/datetime constants.

1.23.6

(fix): Fix wire tests to pass X-Test-Id header via method call options. Dynamic snippets now pass arbitrary headers from the snippet request as per-request options when generating calls on existing clients (skipClientInstantiation mode). This enables wire tests to properly correlate requests with WireMock verification.

1.23.5

(fix): Fix wire test environment parameter generation and inferred auth parameter handling. Wire tests now properly indent environment parameters and use Environments::custom() instead of raw arrays for type safety. Additionally, required inferred auth parameters no longer use unnecessary null coalescing operators (??), resolving PHPStan static analysis warnings.

1.23.4

(fix): Fix wire test generation for inferred auth by using getInferredAuth() explicitly. The previous fix relied on the visitor pattern which may not correctly identify inferred auth schemes in all cases.

1.23.3

(fix): Fix wire test generation for inferred auth. Wire tests now correctly pass the required auth parameters (e.g., apiKey) extracted from the token endpoint’s request body and headers, matching the root client constructor signature.

1.23.2

(fix): Fix constructor signature mismatches in multi-URL environments. Subpackage clients now consistently use isMultiUrl to determine whether to accept Environments or options as the second constructor parameter, matching the root client’s behavior. Also fixes OAuth and inferred auth client instantiation to pass the environment parameter when in multi-URL mode, and updates wire tests to extend WireMockTestCase and include auth parameters.


1.23.1

(fix): Remove error on null config in README generation.

1.23.0

(feat): Add inferred auth support for PHP SDKs. The SDK now generates an InferredAuthProvider class that handles automatic token retrieval and caching with expiration handling. Root clients accept the token endpoint request parameters for inferred authentication.


1.22.3

(fix): Fix dynamic snippets to properly handle custom URLs in multi-URL environments. Custom URLs now correctly generate Environments::custom(...) calls instead of failing with “Invalid multi url environment” error.

1.22.2

(fix): Add missing <?php opening tag to generated wire test files for proper syntax highlighting.

1.22.1

(fix): Fix PHPStan error for enum string return types by adding @phpstan-ignore-line suppression.

1.22.0

(chore): Upgrade to IR version 62.

1.21.0

(feat): Add OAuth client credentials support for PHP SDKs. The SDK now generates an OAuthTokenProvider class that handles automatic token refresh with expiration handling. Root clients accept clientId and clientSecret parameters for OAuth authentication, and dynamic snippets show proper OAuth instantiation examples.

1.20.0

(feat): Add reference.md generation for PHP SDKs. The reference documentation includes dynamic snippets with example data for all API endpoints, organized by service.


1.19.2

(fix): Fix environment passing in PHP SDK sub-clients for multi-URL environments. Sub-clients now properly receive the environment instance instead of options, ensuring correct URL resolution when APIs have different base URLs per service.


1.19.1

(feat): Add support for multi-URL environments. Generated SDKs now use a class-based Environments with readonly properties for each service URL, enabling APIs with different base URLs per service (e.g., EC2 and S3). Sub-clients receive the full Environments instance and access their specific URL via property access.

1.18.3

(fix): Fix duplicate logging in PHP SDK generator by including class names in log messages. Previously, multiple types in the same directory would log identical “Generating {directory}” messages, causing log spam. Now each type logs a unique “Generating {directory}/{className}” message.

1.18.2

(fix): Fallback to unpaged method for custom pagination instead of hard failing. Endpoints with custom pagination will now generate normal request/response methods instead of throwing an error.




1.17.2

(fix): Fix enum string escaping and PHP reserved keyword handling.

  • Enum values containing quotes are now properly escaped to prevent syntax errors.
  • Class names that conflict with PHP reserved keywords (e.g., “eval”, “list”) automatically receive a trailing underscore (e.g., “Eval_”).