Skip to content

Artisan Commands

This page lists every custom command in backend/app/Console/Commands. Use it to find the right command, then follow the link for the details. Queue commands (queue:*) are covered in Queue Commands.

  • Locally: cd backend && ./vendor/bin/sail artisan <command>
  • Staging / production: open a shell on the ops-runner instance and run sudo docker exec -it app-php-fpm-1 php artisan <command> — see Server Access.

Legend for Mode: 🔍 read-only · --apply / --force = dry-run until you pass that flag · --dry-run = writes by default · ✍️ always writes · ⏰ also runs on the schedule.

Command What it does Mode Docs
offers:auto-generate Generate offers from completed flight-cache entries. ✍️ ⏰ every 15 min Offers
offers:diagnose --product=ID Explain why a product is not generating offers (weekday mismatch, blackout, route/cache/land-price gates). First thing to run when offers are missing. 🔍 Offers
offers:audit-cache-gaps List the domestic-leg cache gaps that stop auto-offers from being created. --product=, --show-creatable. 🔍 Offers
offers:audit-domestic-dates Report domestic legs off the tour date or outside their departure window. --notify alerts admins. 🔍 ⏰ 06:45 Madrid Offers
offers:fix-domestic-dates Rebind drifted domestic legs to the tour-correct date and reprice. Queues missing cache searches even without --apply. --apply Offers
offers:fix-domestic-windows Re-point off-window domestic legs to the in-window flight of the same fare (no price change). --apply Offers
offers:rebind-unbound Rebind orphaned offer_flights to the best correct cache row (pairs with flights:cleanup-wrong-nights). --dry-run —
offers:queue-departure-rules Expand active departure rules and queue their flight searches. --dry-run —
offers:draft-released Move active offers inside the supplier release-days window to Draft (booked ones stay). --dry-run ⏰ daily Offers
offers:draft-blacked-out Move active offers whose trip runs into a supplier blackout to Draft. --dry-run Offers
offers:recalculate-prices Recalculate land prices with each supplier’s current currency and exchange rate. --apply Offers History
offers:migrate-margin-basis Convert cost-basis offers to margin-on-sale. Run market by market with the business. --apply Offers History
offers:classify-package-alternatives Propose which of a tour’s packages are alternatives of each other. --apply Suppliers
offers:verify-flights Walk activated offers and ask whether to verify each against live search. Interactive. ✍️ Flight Search
Command What it does Mode Docs
flights:mark-stale-searching-as-failed Flip cache rows stuck in SEARCHING to FAILED so they can be retried. ✍️ ⏰ every 5 min Dynamic Flight Cache
flights:protect-expiring-fares Re-price reservations whose fare is about to expire. ✍️ ⏰ hourly AerTicket
flight-cache:ensure-pending-entries Create missing routes and pending cache rows for every active route and in-window date. --dry-run Dynamic Flight Cache
flight-cache:recompute-primary Backfill primary-itinerary snapshots on old cache rows. --dry-run Dynamic Flight Cache
flight-cache:cleanup-routes Deactivate cache routes no active flight config uses. --force —
flights:rerank-cache Recompute fare_position with the current ranking policy. No AerTicket calls. --dry-run —
flights:cleanup-wrong-nights Invalidate cache rows that give the wrong number of nights at destination. --route=. --dry-run —
flights:repair-overnight-deltas Unstick routes caught in the cold-start overnight deadlock. --route=*, --product=. --dry-run —
aerticket:test-connection Guide for testing the AerTicket connection. 🔍 AerTicket
aerticket:fixtures:capture / :list / :purge Record real AerTicket responses as local fixtures, list or delete them. ✍️ local only AerTicket
Command What it does Mode Docs
bookings:send-balance-reminders Chase outstanding balances before departure and escalate overdue ones. ✍️ ⏰ 08:00 Madrid Payment
bookings:send-pre-departure Send the pre-departure email for trips leaving in the next 15 days. ✍️ ⏰ 09:00 Madrid Notifications
bookings:replace-domestic-legs {booking} Replace drifted domestic legs in a booking’s flight selection. --apply Offers
bookings:repair-domestic-flight-selection Repair corrupted domestic legs in bookings.flight_selection. --booking=. --apply —
Command What it does Mode Docs
products:check-leading-price Snapshot each product’s “desde” price and alert marketing when it rises. ✍️ ⏰ 07:00 Madrid Notifications
products:backfill-slug-aliases Create 301 aliases for old product slugs from the activity log. --apply —
products:import-slug-aliases {file} Import slug aliases from a GA-derived CSV. --apply —
tours:clear-orphan-assignments Remove hotel/activity assignments left on 0-night days of reshaped tours. --dry-run Suppliers
suppliers:contracts:generate Generate a supplier contract from a tour’s service assignments. ✍️ Suppliers
last-seats:sync-prices Re-price Last Seats departures whose discount changed. --dry-run ⏰ every 15 min Last Seats
Command What it does Mode Docs
pipedrive:* Set up, sync, retry, reconcile and clean up the Pipedrive CRM sync. varies Pipedrive
netsuite:* Sync, retry and reconcile records with NetSuite. varies NetSuite
activecampaign:sync-subscribers Queue newsletter subscribers that have no ActiveCampaign contact yet. ✍️ Newsletter Subscriptions
currency:sync-rates Pull the latest exchange rates. ✍️ ⏰ daily Currency Exchange
emails:sync-resend-status Store Resend’s delivery status on sent emails. ✍️ ⏰ hourly Email Copies
intermundial:test-connection Authenticate against Intermundial and list policies. 🔍 Insurance
Command What it does Mode Docs
db:prune [target] Delete garbage rows from high-churn tables. --list shows targets. --force —
internal:generate-token Create the Sanctum token the Web uses to call the API. ✍️ Client Auth
mcp:agent-token Issue or revoke a token for an AI agent using the Arkana MCP. ✍️ Arkana MCP
mcp:revoke-oauth Revoke a person’s Arkana MCP OAuth sessions. ✍️ Arkana MCP
activity-log:check Check activity-log configuration across models. 🔍 Activity Log
notification:test Send a test email notification. ✍️ Notifications
Command What it does
products:generate Create test product templates and products by market.
suppliers:hotels:generate, suppliers:activities:generate, suppliers:services:generate Create test supplier data.
airports:download Download airport seed data from S3.
app:diagnose-supplier-utf8 Find non-UTF-8 data that would break json_encode.

Scheduled entries live in backend/routes/console.php and run on the ops-runner host. The full list, with cadences and the daily database backup, is in Docker Health Monitoring › Scheduler Container.