Changelog
Version 10.4
Key changes
- Translations for API groups:
translations/rpc/<group>.<locale>.yaml; the group takes precedence over the language. - Translations from extensions (
translations.paths), the publicRpcLocaleNegotiatorservice. - 10.4.1:
IApiRouteImport: adapter routes can be registered separately for each API group. - 10.4.2:
RpcExecutoris the single entry point for adapters (REST, MCP);rpc.post_responsefires for any request source and for each executed batch item.
What to keep in mind
- Partial base translation: a missing
descriptionis taken from the base translation in thekernel.default_localelanguage, not from the attribute / PHPDoc. - REST calls now get
rpc.post_response: cache relations and async/notification listeners start working for them.
Environment changes
- Unchanged from 10.3.
Version 10.3
Key changes
- 2.4–4.2 times more requests per second for regular calls and documentation.
- Batch configuration:
enabled, inline mode, theprocess_countlimit of parallel processes. - Notifications in a batch per the specification: no response, a batch of only notifications returns
204. - Detached execution of notifications (
notification.process). - Translation of method names and descriptions by
Accept-Language, documentation cache withETag. cache.poolsets a custom cache pool; the response cache key includes the method implementation and the API version.- The token and request body are no longer passed on the command line of child processes.
10.3.1
- XHR requests (
X-Requested-With: XMLHttpRequest) are executed again. #[Autowire]in RPC method arguments works again.#[RPC\Info(concat: …)]is applied again; check your clients ifconcatis set.- Deprecated methods are marked in OpenRPC again.
What to keep in mind
batch.process_countdefaults to 2, so large batches in process mode became slower.- The application's terminate listeners now run after RPC requests.
- The constructors of several services changed (relevant only when creating them manually or extending them);
DocSecurityListenerwas removed.
Environment changes
ufo-tech/rpc-objects:^3.9.1.
Version 10.2
Key changes
- API groups: several entry points (public, internal, BFF) with their own methods, versions and documentation; the
#[RPC\APIGroups]attribute. - Per-group token validation via
security.providers(a validator service or a separate token list). ApiYamlFileLoader/RpcYamlFileLoaderroute loaders for adapters.--api-groupfor the console,apiGroupfor Messenger.- A batch sent to a versioned address executes its items in that version.
What to keep in mind
- Route names got a group prefix (
general_ufo_rpc_api_server); the old names remain aliases forgeneral. SimpleTokenValidatorconstructor:(RpcMainConfig $rpcConfig)->(array $tokens = []).
Environment changes
PHP:>=8.4.ufo-tech/rpc-objects:^3.9.
Version 10.1
Key changes
- Symfony 8 support (
^7.2|^8.0). - JSON-RPC notifications: a request without
idgets204and is executed after the response. - Strict JSON-RPC 2.0 validation:
jsonrpc≠"2.0"and an empty batch are rejected with-32600. - Unified parameter error format: all problems for each parameter in
error.data.
Environment changes
PHP:>=8.3->>=8.4.Symfony:^7.2->^7.2|^8.0;symfony/messengerbecame an explicit dependency.ufo-tech/rpc-exceptions:^1.3->^2;ufo-tech/rpc-objects:^3.8;ufo-tech/dto-transformer:^3.1.
Version 10.0.0
Key changes
- Added/unified API versioning support in the RPC service.
- Normalized the API documentation format and refactored the documentation layer.
- General server refactoring for more stable operation on Symfony 7.x.
ServiceMap and DI
ServiceMapbuilding moved into a compiler pass.- Added support for
#[Autowire]services in RPC methods. - Non-service classes moved out of the service map, and the ServiceLocator chain simplified.
Parameter converters
- Added a Doctrine parameter converter.
- Improved handling of enum definitions in parameters and schemas.
Environment changes
PHP: unchanged (>=8.3).Symfony: unchanged (core components remain at^7.2).ufo-tech:- added
ufo-tech/packages:^1 ufo-tech/dto-transformer:^2->^2.1ufo-tech/rpc-objects: unchanged (^3.4)ufo-tech/rpc-exceptions: unchanged (^1.3)
- added
Version 9.2.1
API documentation
- Added the
infoGET parameter to the doc controller to output basic OpenRPC information without the full document.
Async callback
- Fixed building of the callback response in the asynchronous flow.
Environment changes
PHP: unchanged (>=8.3).Symfony: unchanged.ufo-tech: unchanged.
Version 9.1.5
Caching
- Added invalidation/removal of the relation cache.
- Added support for
ignore cachein requests. - Fixed
RpcCacheServiceand cache warmup scenarios.
Asynchronous processing and configuration
- Added support for multiple async transports in the configuration.
- Updated dependencies and service configuration parts.
Types and DTO
- Added support for default values of DTO properties.
- Fixed handling of union types in return types.
- Improved compatibility with enums and the generation of assert constraints.
Environment changes
PHP: unchanged (>=8.3).Symfony: unchanged (core components remain at^7.2).ufo-tech:ufo-tech/dto-transformer:^1.1->^2ufo-tech/rpc-objects:^3.1->^3.4ufo-tech/rpc-exceptions: unchanged (^1.3)
Version 8.1.14
Documentation and schemas
- Added/reworked the JSON Schema builder in the RPC documentation.
- Improved display of relations (
relations) in the generated documentation. - Fixed generation of enum schemas and markers such as
x-ufo-enum.
DTO and typing
- Fixed DTO reflection and handling of DTO parameters.
- Improved support for
mixedand complex types in format generation. - Fixed handling of
BackedEnumand the enum helper logic.
Runtime and async
- Fixed the asynchronous request handler.
- Stabilized the behavior of
RequestCarrierand special RPC parameters. - Resolved issues with terminate events in the handling lifecycle.
Environment changes
PHP: unchanged (>=8.3).Symfony: addedsymfony/yaml:^7.2andsymfony/uid:^7.2(other Symfony dependencies unchanged from 7.6.0).ufo-tech:ufo-tech/dto-transformer:^1.0->^1.1ufo-tech/rpc-objects:^3.0->^3.1ufo-tech/rpc-exceptions:>=1.0.3->^1.3
Version 7.6.0
General changes
- Extended support for the OpenRPC specification (including improvements to documentation generation).
- Added a Postman collection generator for the RPC API.
- Extended DTO integration (support for
ufo-tech/dto-transformer, transformation fixes). - Brought compatibility with
ufo-tech/rpc-objects3.x.
Events and lifecycle
- Added/updated event listeners in the RPC handling pipeline.
- Improved the asynchronous callback flow.
- Fixed handling of the parameter resolver and autowiring.
Configuration and stability
- Updated dependency requirements and configuration keys.
- Fixed a number of security, stability and deprecation compatibility issues.
- Added logging and improved the reliability of the documentation layer.
Environment changes
PHP: unchanged (>=8.3).Symfony: core components updated from^7.0to^7.2(framework-bundle,serializer,console,http-kernel,validator,security-bundle,http-client,process), addedsymfony/lock:^7.2.ufo-tech:- added
ufo-tech/dto-transformer:^1.0 ufo-tech/rpc-objects:>=2.3.1->^3.0ufo-tech/rpc-exceptions: unchanged (>=1.0.3)
- added
Version 7.0.0
General changes
- The API documentation format updated to the OpenRPC standard.
- The RPC server lifecycle moved to an events-and-subscribers model.
- Substantial refactoring of the v7 request handling pipeline.
Configuration
- The configuration changed significantly and is not fully backward compatible with the 6.x branch.
- In the
securityblock, protection is now configured by action (API calls and documentation separately) rather than by HTTP method. - The nested
responseblock was removed from thedocsblock; its parameters moved to thedocslevel. - Removed outdated parameters (
docs.response.json_schema). docs.project_namedocs.project_descriptiondocs.project_version
Environment changes
PHP: unchanged from 6.4.0 (>=8.3).Symfony: unchanged from 6.4.0 (core components at^7.0).ufo-tech/rpc-objects:>=2.3.1->>=2.4.0.ufo-tech/rpc-exceptions: unchanged (>=1.0.3).
Version 6.4.0
General changes
- Introduced the OpenRPC documentation format and updated the documentation generator.
- Refactored request handling and the error listener.
- Added return data descriptions to method documentation.
- Improved the handling context and the stability of the validation/event flow.
Cache and API behavior
- Added caching for GET requests to the documentation API.
- Fixed a number of bugs in validation and autowiring.
Environment changes
PHP:>=8.1->>=8.3.Symfony: moved from^6.4to^7.0for core components (framework-bundle,serializer,console,http-kernel,validator,security-bundle,http-client,process).ufo-tech:ufo-tech/rpc-objects:1.*->>=2.3.1ufo-tech/rpc-exceptions:1.*->>=1.0.3
Version 5.2.0
General changes
- Strengthened the validation layer: added JSON Schema, type hinting and improved parameter validation.
- Extended method descriptions and RPC metadata in the API documentation.
- Cleaned up outdated parts (including removing the laminas dependency).
- Fixed bugs in the error handler and configuration.
Documentation and stability
- Added security/contributing files (
SECURITY,CONTRIBUTING,CODE_OF_CONDUCT). - A series of bug fixes for more stable operation in production scenarios.
Environment changes
PHP: unchanged (>=8.1).Symfony: requirements narrowed from6.*to^6.4, addedsymfony/expression-language:^6.3.ufo-tech:ufo-tech/rpc-objects: unchanged (1.*)ufo-tech/rpc-exceptions: unchanged (1.*)
Version 4.5.2
General changes
- Global refactoring of the bundle core and the RPC pipeline.
- Added/stabilized support for batch requests and asynchronous processing.
- Added CLI handling for RPC (console processing).
- Exceptions moved into a separate package, and some hard internal dependencies removed.
- Added/improved the security mode and token validation.
Integrations and tools
- Added export for SoapUI integration.
- Improved RPC server logging.
- Updated documentation and recipes for integration into Symfony projects.
Environment changes
PHP: minimum fixed at>=8.1.Symfony: moved to the6.*branch (framework-bundle,serializer,console,http-kernel,validator,http-client,process,security-bundle).ufo-tech:ufo-tech/rpc-objects:1.*ufo-tech/rpc-exceptions:1.*
A full description of each release with examples is in the releases directory of the bundle repository.