keboola/api-bundle
Keboola API Bundle is a Symfony bundle for building consistent JSON APIs, providing reusable request handling, validation, standardized error responses, and extension points for authentication, logging, and documentation. It helps teams standardize endpoint behavior and reduce boilerplate across PHP...
Architecture fit
keboola/api-bundle is a Symfony bundle, not a Laravel package. It assumes Symfony's DI container, HttpKernel, Config component, and bundle registration model — none of which map cleanly onto Laravel's service container or HTTP kernel.KeboolaApiExtension, a container service ID constant (AUTH_MANAGE_CLIENT_FACTORY_ID), autowired ManageApiClientFactory, and AuthenticatorTestTrait for functional tests. There is still no Laravel service provider, facade, publishable config, or Artisan surface.Integration feasibility
keboola/php-api-client dependency. If the latter, integrate that library directly and skip the bundle entirely.keboola_api.auth.client_options.backoff_max_tries option and the factory-ID change are both extension-layer concerns, implying meaningful retry/auth behavior sits behind container-configured clients we would have to re-implement or manually construct. Budget for replicating the retry policy explicitly rather than inheriting it.symfony/* ranges that may collide with the Symfony components Laravel already locks (HttpKernel, Config, Console). A composer why-not analysis against our Laravel version is a gating step.Technical risk
ManageApiClientFactory::class must now retarget AUTH_MANAGE_CLIENT_FACTORY_ID. That is a test-harness-visible change shipped in a minor bump. Treat container keys, service IDs, and autowiring behavior as unstable internals we should not bind to.storage_client_options clients and autowired ManageApiClientFactory calls are unaffected. Two retry semantics in one codebase is a diagnosability hazard.Key questions
backoff_max_tries: 3 a tightening of an existing default), and is a 7 s ceiling acceptable against our p95 auth latency and Keboola's transient-failure profile?storage_client_options clients left with different retry semantics than auth clients? Is that intentional or an incomplete rollout?Stack fit
symfony/* transitive dependencies.KeboolaClientContract in our domain layer and implement it with either (a) a thin adapter over the bundle's client classes, or (b) a native Saloon/Guzzle client against the Keboola REST API. Option (b) is the lower-risk default if the audit shows the bundle is mostly wiring — and 6.3.0 is further evidence that the bundle's churn is in wiring.Migration path
composer.json, identify the standalone client dependency, map services to transport/DTO/auth concerns. Include the 6.3.0 diff to confirm which retry logic lives in the bundle versus a dependency.Compatibility
symfony/* constraint overlap with the Laravel version in use; resolve via Composer aliasing or by isolating the dependency in a separate service.KeboolaApiExtension::AUTH_MANAGE_CLIENT_FACTORY_ID rather than ManageApiClientFactory::class as of 6.3.0. Do not encode either key into our own fixtures — stub our contract instead.Sequencing
Maintenance
Support
Scaling
Failure modes
AUTH_MANAGE_CLIENT_FACTORY_ID test-harness change and seeing red CI with no obvious cause.Ramp-up
How can I help you explore Laravel packages today?