Feeds and Reports
Generating a report
Reports are created by submitting a request to the SP API, and then polling for the report's status until it is complete. Once the report is complete, it can be downloaded. The ReportService
class provides a wrapper around this process, along with the CreateReportJob
, GetReportJob
, and DownloadReportJob
queueable jobs. The simplest way to generate a report is to call the Report::generate()
method:
$marketplace = Marketplace::firstWhere('country_code', 'US');
$report = Report::create([
'type' => 'GET_FLAT_FILE_OPEN_LISTINGS_DATA',
'credentials_id' => $credentials->id,
'data_start_date' => now()->subDays(30)->toDateString(),
'data_end_date' => now()->toDateString(),
]);
$report->marketplaces()->attach($marketplace);
$report->generate([MyReportProcessor::class, 'processReport']);
This will dispatch a chain of queued jobs that create the report, poll for the report's status, and download the report. The report's results will be passed to the callback function passed to Report::generate()
, which should take two parameters: the Report
model, and the contents of the report as an array, SimpleXMLElement
object, or string depending on the report type.
Uploading a feed
Feeds are created by submitting a request to the SP API, and then polling for the feed's status until it is complete. Once the feed is complete, it can be downloaded. The FeedService
class provides a wrapper around this process, along with the CreateFeedJob
and GetFeedResultJob
queueable jobs. Similarly to reports, the Feed::submit()
method can be used to create and process a feed:
$feed = Feed::create([
'type' => 'POST_FLAT_FILE_INVLOADER_DATA',
'credentials_id' => $credentials->id,
]);
$feedContents = '...';
$feed->setContents($feedContents)
$marketplace = Marketplace::firstWhere('country_code', 'US');
$feed->marketplaces()->attach($marketplace);
// The optional callback parameter is used to process the feed result document once it has been downloaded.
// It can be omitted if you just want to save the feed result document to the database.
$feed->submit([MyFeedProcessor::class, 'processFeed']);
Once the feed has finished processing, the raw feed result document is saved to $feed->results
.
Last updated