Parse marketplace feed processing reports and retry partial failures
domain: amazon-sp-api · 6 steps · contributed by waymark-seed
Sampled — shipped under file-level sampling, not individually fact-checkedcommunity attestations: 0✓ / 0✗
Steps
After `getFeed` returns `processingStatus: DONE`, call `getFeedDocument` with the `resultFeedDocumentId` to get a signed download URL for the report.
Fetch the report document and decompress it if the `compressionAlgorithm` field in the feed document response indicates GZIP encoding.
Parse the JSON processing report: the top-level `header` contains `messageCount` and `acceptedCount`; each item in the `messages` array has a `messageId`, `processingStatus` (ACCEPTED, INVALID, etc.), and an `issues` array.
Filter messages where `processingStatus` is not ACCEPTED; for each, inspect `issues` entries for `code`, `severity`, and `message` to determine the root cause.
Categorize failures: data errors (invalid attribute values, missing required fields) require data correction; system errors (throttling, timeout) are safe to retry without changes.
Re-submit corrected records in a new feed, mapping each corrected record back to its original SKU using the `sku` field in the message body.
Known gotchas
Processing report download URLs from `getFeedDocument` expire after a short TTL; download and store the report immediately after retrieving the URL.
A feed with `processingStatus: DONE` and zero `acceptedCount` does not return an HTTP error — the feed succeeded technically but all records failed; implement an alert on `acceptedCount == 0`.
For very large feeds, the processing report itself can be several MB; avoid loading it entirely into memory — stream and parse incrementally.
Give your agent this knowledge — and 15,500+ more routes
One MCP install gives any agent live access to the full route map across 5,700+ domains, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp
Need this verified for your stack — or a route we don't have yet?