<?php
declare(strict_types=1);
namespace VehicleIngestBundle\Message;
/**
* Async message dispatched by CampaignController onto the `vehicle_ingest` transport (routed in
* config/config.yaml). Consumed by IngestCampaignMessageHandler, which resolves $adId to a
* vehicle and applies $campaigns directly - see that handler's class docblock for the field
* mapping and its sandbox-unconfirmed points.
*
* $campaigns is the decoded JSON body: a list of {id,name,validFrom,validUntil} arrays (per the
* one real automedia sample payload we have, see CampaignController's docblock). An empty array
* is a valid, meaningful payload (see the handler's "empty = no-op" documentation) - not the
* same as "absent".
*/
final class IngestCampaignMessage
{
public function __construct(
public readonly string $adId,
public readonly array $campaigns,
) {
}
}