application-manager-tools/am-driver
Symfony bundle + framework-agnostic PHP library to connect managed apps to Application Manager: orchestration commands, consumption webhooks, and instance operational state push. Includes OpenAPI 3.1 spec + Swagger UI, plus integration guides.
integrationInstanceId in callbacks (PR #11) improves traceability for multi-tenant or multi-integration scenarios. This aligns with SaaS architectures where:
integrationInstanceId can map to a tenant workspace).captain-learning vs. captain-analytics).CREATE_INSTANCE for tenant X triggered by integrationInstanceId: Y).integrationInstanceId with command UUIDs to avoid duplicate processing).integrationInstanceId distinguishes between productA and productB callbacks).integrationInstanceId addition is backward-compatible (optional field in callbacks). Existing integrations do not require updates unless they rely on callback parsing.vendor/bin/openapi --validate spec/openapi.yaml
am-driver serve command may now log integrationInstanceId in simulated callbacks, aiding local testing.| Risk Area | Updated Mitigation |
|---|---|
| Callback Parsing | Ensure custom handlers account for integrationInstanceId in callback payloads. Use type hints (e.g., CallbackDto) to avoid runtime errors. |
| Tenant Isolation | If integrationInstanceId maps to tenants, validate workspace separation (e.g., FileTenantWorkspace must not mix data). Consider database-backed isolation for shared hosting. |
| Debugging Complexity | The new field may increase log verbosity. Configure structured logging (e.g., JSON) to filter/noise in production. |
| Schema Validation | Verify the OpenAPI spec includes integrationInstanceId in all relevant callback schemas. Use Swagger UI to test edge cases (e.g., null values). |
Callback Handling:
integrationInstanceId be used in custom handlers? Will it replace, extend, or complement existing tenant/workspace identifiers?Tenant/Integration Mapping:
integrationInstanceId static per tenant or dynamic per command? Clarify with AM’s team to avoid misalignment.FileTenantWorkspace vs. database namespaces)?Backward Compatibility:
integrationInstanceId? (e.g., default values, alerts.)Observability:
integrationInstanceId be logged/monitored in production? If so, design filters to avoid cardinality explosions (e.g., high-cardinality metrics).integrationInstanceId values?Testing:
integrationInstanceId in callback assertions. Example:
$this->assertEquals('tenant-123', $callback->getIntegrationInstanceId());
null values, duplicate IDs, and cross-integration conflicts.CallbackDto parsing handles integrationInstanceId. Example:
$callback = new CallbackDto(
$rawPayload['commandId'],
$rawPayload['integrationInstanceId'] ?? null, // Handle optional field
$rawPayload['state']
);
am-driver serve logs). Useful for multi-product AM instances.Validation Phase (1 day):
integrationInstanceId in callback schemas.orchestration:simulate create --integration-instance-id=test-123.Handler Updates (2 days):
integrationInstanceId. Example:
public function handle(CreateInstanceCommand $command, CallbackDto $callback): void {
$this->logger->info('Processing command', [
'integrationInstanceId' => $callback->getIntegrationInstanceId(),
'commandId' => $command->getId(),
]);
}
Observability (1 day):
integrationInstanceId distribution. Example Prometheus metric:
# Metrics for callback processing by integrationInstanceId
am_callbacks_processed_total{integration_instance_id="<ID>"} 1
| Component | Updated Notes |
|---|---|
| PHP Version | No impact. Field is a string; no PHP version constraints. |
| Symfony Version | No changes. Field is parsed via CallbackDto, which remains Symfony-agnostic. |
| AM Protocol | Optional field: Existing AM instances may or may not include integrationInstanceId. Validate with AM’s team on mandatory vs. optional usage. |
| OpenAPI Tools | Update Swagger UI and spec validation to reflect the new field. Use openapi-generator to regenerate clients if needed. |
integrationInstanceId. Implement log sampling or retention policies for high-cardinality IDs.integrationInstanceId in callback examples. Example:
## Handling Callbacks
```php
$callback = $this->amDriver->processCallback($rawPayload);
$integrationId = $callback->getIntegrationInstanceId(); // New in v0.0.16
integrationInstanceId in callbacks. Provide migration guides for pre-v0.0.16 integrations.integrationInstanceId adds negligible overhead (string extraction). No scaling impact expected.integrationInstanceId for tenant isolation, ensure the backend (e.g., Redis, DB) scales with ID cardinality.integrationInstanceId may increase AM’s payload size. Monitor AM’s throughput metrics.| Failure Scenario | Impact | Mitigation |
|---|---|---|
Missing integrationInstanceId |
Callback processing may fail if handlers assume the field exists. | Use optional field handling (e.g., ?? null) and log warnings. |
Duplicate integrationInstanceId |
Ambiguity in tenant/product mapping. | Validate uniqueness in AM’s integration registry or use additional context (e.g., tenantId). |
Malformed integrationInstanceId |
Log parsing errors or incorrect routing. | Implement sanitization (e.g., UUID validation) in CallbackDto. |
| AM Schema Drift | Future AM releases may deprecate/modify the field. | Subscribe to AM’s **release |
How can I help you explore Laravel packages today?