- Does carlosgude/integration-engine work with Laravel?
- No. It is a Symfony bundle, not a Laravel package: it self-registers through Symfony Flex, is configured in config/packages/integration_engine.yaml, and ships bin/console commands such as make:integration and debug:integration. Nothing in it targets Laravel's service container, facades or HTTP kernel, so out-of-the-box fit for a Laravel-first estate is zero. Using it in Laravel would mean funding and maintaining a separate bridge.
- What PHP and Symfony versions does IntegrationEngine require?
- It requires PHP 8.2 or newer and Symfony 6.4 or newer, including the 7.x and 8.x lines. The bundle is Symfony-native and auto-registers via Flex, so there is no manual provider registration step. Check this before evaluating, because there is no Laravel or framework-agnostic build of the package.
- How do I install and configure IntegrationEngine?
- Run composer require carlosgude/integration-engine and Symfony Flex registers the bundle automatically. You then scaffold an integration with php bin/console make:integration MyApi GetEmployee, supply the base URL and client type, and register the action in the integration's YAML action map. Bundle configuration lives in config/packages/integration_engine.yaml, and the README, DOCUMENTATION.md and a demo repository cover REST, GraphQL and dynamic OAuth2 setups.
- What does IntegrationEngine actually solve compared with using Symfony HttpClient directly?
- It removes scattered ad-hoc HTTP logic by forcing every external API into one uniform Action, Request, Response and Mapper directory layout. Each endpoint becomes exactly one Action plus a typed Response DTO and a mapper, wired through a YAML action map and exposed by a thin facade. Instead of raw HTTP handling and repeated mapping boilerplate, you get predictable typed integration code that is easy to revisit months later.
- What does the make:integration command generate?
- It scaffolds a complete integration skeleton: the facade class with its NAME constant, the YAML action map, and per-action Request, Response and Mapper classes in the standard directory structure. The command is interactive and asks for base URL, client type, HTTP method and path. Running it again with an existing integration name adds further actions to that integration.
- What is the ACL Gateway in IntegrationEngine?
- The Gateway is an Anti-Corruption Layer and the only class aware of both the vendor-facing response DTOs and your domain model, mapping one to the other. Application code calls something like $gateway->find(123) and receives a domain object, while the facade still exposes typed Response DTOs when raw vendor data is needed. That keeps vendor shapes out of the domain and fits a ports-and-adapters or hexagonal Symfony codebase.
- Does IntegrationEngine support GraphQL and OAuth2, or only REST?
- It supports REST, GraphQL and dynamic OAuth2, and the separate integrationEngine-use-example repository wires all three into a working Symfony application. Client behaviour is pluggable through adapters and middleware, so additional protocols can be added. The per-integration YAML action map simply describes path, method and action class for each endpoint.
- Can I swap the HTTP client, add middleware, or fake responses in tests?
- Yes. Custom adapters implement ClientAdapterInterface, custom middleware extend AbstractClientMiddleware, and a client_service option lets you supply your own client, with built-in adapters overridable per project. Because each endpoint is an isolated Action, Response and Mapper, mappers and DTOs can be unit tested without touching the network, and substituting the client service keeps integration tests hermetic. It is a pattern plus a small runtime rather than a black box.
- How can I tell whether slowness comes from the vendor API or from my own mapping code?
- Since v9.4.0 a ResponseReceived lifecycle event fires once the client returns a response and before mapping runs, for both send() and each sendMany() item. Comparing ResponseMapped and ResponseReceived timestamps gives you mapping time, and a ResponseReceived followed by RequestFailed means the API answered but the mapper failed. That separates vendor latency from your own code without bolting on custom timers.
- Is carlosgude/integration-engine actively maintained and safe to adopt in production?
- It is pre-traction software: roughly 10 GitHub stars, no dependents, a single maintainer and a bus factor of one, with no evidence of a funded entity behind it. The positives are real but small-scale: an ADR practice, upgrade guides, measured documentation and about five tagged releases since v9.0.0, with v9.4.0 published on 2026-09-24. It has also been through three majors with event-surface churn, including the pre-mapping event being dropped and later restored, so budget for upgrades and treat continuity as the main risk.