omniconva/laravel
OmniConva for Laravel is a lightweight integration package that brings OmniConva services into Laravel applications, offering simple configuration, familiar Laravel conventions, and a clean starting point to help you add OmniConva-powered functionality quickly.
OmniConva\Laravel\Exceptions\OrderRefused is now the sanctioned way for your order handler to signal a business refusal. That is a contract your code must honour, not plumbing the package can hide.composer update: publish the second migration (--tag=omniconva-migrations), run php artisan migrate, audit the configured webhook URL for scheme and redirects, and review the order handler's exception behaviour. The omniconva:install fixes (reads config rather than env(), never blanks a credential, quotes values, warns when secrets are passed as CLI options) remove a genuine footgun for config-cached deployments and reduce secret leakage into shell history.OMNICONVA_WEBHOOK_URL must now be https except for localhost/127.x, or with OMNICONVA_ALLOW_HTTP=1. Any setup pointing at an internal hostname, a Docker Compose service name, or a TLS-terminating proxy addressed over http:// breaks on composer update. This is the headline risk and it also tells you the project treats patch releases as capable of breaking.http→https redirect, a load-balancer hop, or any URL that 302s will now fail silently. Verify the configured URL resolves directly.OrderRefused messages reach OmniConva; anything else (including a QueryException carrying SQL and customer data) is reported to your handler and answered with a generic 500. That closes a real PII-leak vector, but vendor-side visibility into your failures drops to "500", so your own logging and alerting becomes the only diagnostic channel.SyncsWithOmniConva / SyncsParentWithOmniConva report mapping and encoding problems instead of throwing, and invalid UTF-8 is substituted rather than fatal. Availability improves; catalog drift becomes silent unless you are watching the reported exceptions. Substitution also means product text can be altered in transit without rejection.null (not "inf"), and large numeric ids in order payloads stay strings. Any downstream consumer that assumed the old shapes needs checking, though the blast radius is small.ALLOW_HTTP is required? Multi-store, multi-currency, localization? Test-order filter trigger? License, SLA, data residency?composer require (or update), omniconva:install, verify config is populated correctly under cached config, publish --tag=omniconva-migrations, run php artisan migrate, set the secret and an https webhook URL, implement the product source mapping and attach the traits, implement the order endpoint throwing OrderRefused for business refusals, then mount <x-omniconva-chat />.^1.0 until the release policy is clear. Audit the webhook URL: it must be https and must resolve without a redirect; use OMNICONVA_ALLOW_HTTP=1 only for internal service names and only in non-production environments where possible. Confirm the queue driver is durable and the cache store shared. Ensure the route prefix does not collide and that POST /orders sits in the stateless API middleware group (CSRF-exempt), not web.https URL, then promote. Then products (read-only, low blast radius), orders (staged, exercising the test-order filter so no real fulfilment fires), chat last — it is the only customer-facing surface and carries CSP/consent review. Feature-flag each surface independently.OrderRefused messages verbatim and nothing else, while every unexpected failure lands in your handler. Your on-call owns those alerts.http webhook URL, or an https URL that redirects, now fails delivery silently — catalog desync with no user-visible error.Idempotency-Key; the generic 500 body gives the vendor no signal, so correlation depends entirely on your logs.How can I help you explore Laravel packages today?