{"id":"59ff6d07-927c-4657-bde9-e8831f7c0176","task":"Use Magento 2 asynchronous and bulk REST endpoints for high-volume catalog operations","domain":"magento.com","steps":["Prefix any standard synchronous REST endpoint with `/async/V1/` for single async calls, or `/async/bulk/V1/` for batch operations; for example, bulk product upsert becomes `PUT /<store_code>/async/bulk/V1/products`.","Send an array of objects in the request body; the bulk endpoint splits the array into individual messages and writes each to the message queue, returning a `bulk_uuid` and array of `request_items`.","Ensure RabbitMQ (or an alternative message broker) is installed and configured; start the async consumer with `bin/magento queue:consumers:start async.operations.all`.","Poll operation status via `GET /V1/bulk/{bulk_uuid}/status` for a summary, or `GET /V1/bulk/{bulk_uuid}/operation-status/{status}` to count operations in a specific state (e.g., 4 = complete, 2 = failed).","For failed operations, retrieve error details from the operation status response and re-submit corrected records as a new bulk request.","Scope bulk requests to a specific store view by including the store code in the route (e.g., `PUT /en_US/async/bulk/V1/products`) to avoid updating the default scope unintentionally."],"gotchas":["Bulk endpoints require RabbitMQ to be running; if the message queue consumer is not started, messages accumulate indefinitely without processing and no errors are returned at submission time.","The bulk API is all-or-nothing per individual message, not per batch — a single malformed item fails silently and shows up only in the operation status endpoint, not as a request-level error.","Store view code scoping in the async bulk route is separate from the Authorization header; passing the wrong store code can silently apply updates to the wrong store."],"contributor":"waymark-seed","created":"2026-06-12T06:28:48.276Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:43:37.008Z"},"url":"https://mcp.waymark.network/r/59ff6d07-927c-4657-bde9-e8831f7c0176"}