Symfony Bundle · PHP 8.2+ · Packagist
Un motor de integración para Symfony que centraliza tus APIs externas bajo contratos claros.
El Problema
Diferentes formatos, autenticaciones inconsistentes, lógica de cache duplicada. El código se fragmenta y cada nueva API es empezar de cero.
Tokens y cache reimplementados en cada integración.
Cada cliente HTTP tiene su propia estructura.
HTTP acoplado al dominio. Imposible aislar.
Cada desarrollador resuelve el problema a su manera.
Sin trazabilidad, sin logs unificados, sin contexto compartido.
Cómo Funciona
Un único punto de entrada. Cada paso tiene una responsabilidad clara.
OAuth, sesiones, API keys. El engine los resuelve y cachea automáticamente.
/orders/{id} se resuelve en tiempo de llamada. Fallo explícito si falta parámetro.
YAML → auth → capa de llamada. Cada capa sobreescribe a la anterior. Sin magia.
Cada acción define su propio Response DTO con contrato garantizado.
Client, cache y config source sustituibles con una línea en YAML.
make:integration genera Mapper, Response DTO y YAML en segundos.
El Call Site
Sin strings mágicos — todo a través de contratos.
// Sin autenticación $registry->get( AcmeIntegration::NAME )->send( GetUsersAction::getName() );
// Con parámetros de ruta — /users/{id} $registry->get( AcmeIntegration::NAME )->send( GetUserAction::getName(), context: DefaultActionContext::create(['id' => 42]) );
// Con body y headers personalizados $registry->get( AcmeIntegration::NAME )->send( CreateOrderAction::getName(), body: $body, headers: new CorrelationHeaders($id) );
Diseño en Capas
Tres niveles que emergen solos. Usa los que necesites.
| Clase | Responsabilidad | Alcance |
|---|---|---|
| CreateChargeAction | Solo declara el método, el path y el DTO de respuesta. Sin lógica HTTP. | Acción concreta |
| StripeAction | Auth, path base y headers comunes de Stripe. Reutilizado por todas sus acciones. | Integración |
| AbstractAction | Contrato base que provee el engine. Extensible sin tocar el core. | Bundle |
El comando make:integration crea el config, las clases y el YAML en un solo paso.
Contacto
Escríbenos y te respondemos lo antes posible.
Sin boilerplate. Sin decisiones arbitrarias. Solo tu lógica de negocio.