Ingest a WooCommerce product webhook (Partner API)
Changed onAccepts a single WooCommerce product webhook event for a partnership using bearer authentication. This endpoint is intended for partnerships and accepts:
- a Cognito bearer token for the partner user linked to the listing source, or
- an Aura Historia access token owned by that partner user.
The caller must provide:
- the bearer token in the Authorization header,
- the WooCommerce topic in x-wc-webhook-topic, and
- the base64-encoded HMAC-SHA256 signature over the exact, untouched request body bytes in x-wc-webhook-signature, and
- optionally, the WooCommerce delivery identifier in x-wc-webhook-delivery-id.
A supplied delivery identifier applies only when an event maps to raw capture. Its provider receipt retains only a canonical semantic source-payload SHA-256 evidence digest for 90 days. A captured-observation retry with the same digest may be deduplicated during downstream capture; reuse with different evidence fails in the consumer, not as an immediate HTTP 409. Logical receipt expiry permits a new receipt but never removes or rewrites a captured raw revision or its provenance. A timestamp-free DELETE establishes a restore barrier. A later UPSERT without a provably newer date_modified_gmt fails during downstream capture (WOOCOMMERCE_PROVIDER_SOURCE_ORDER_AMBIGUOUS), not as an immediate HTTP 409. Admission does not create a provider receipt or raw revision; investigate the failed FIFO command before reconciliation or redrive. The service verifies the signature over untouched body bytes before JSON parsing, then submits mapped observations as CAPTURE_RAW to the shared FIFO after bearer/capability checks and source configuration lookup. The consumer checks the current partner/source grant for mapped observations; ignored no-ops check it immediately. Only a matching, confirmed queue acceptance permits 204; rejected, oversized, unconfirmed, and not-attempted submissions are not acknowledged. The FIFO consumer later commits raw capture with the command receipt; provider receipt and source-order decisions occur during that capture. Authorized ignored create/update events are no-op 204 without queue send or receipt, even when they include a delivery identifier. Retry an uncertain submission with the same signed body, topic, source, actor and delivery identifier where provided; without a delivery identifier, retries cannot recover the original command identity after a lost reply and have no provider receipt-based deduplication guarantee. A lost reply may already have enqueued work; never infer rollback from a non-204.
Topic-specific payload requirements:
- every topic requires id
- product.created and product.updated with status: publish capture an UPSERT and require nonblank name and permalink
- product.created and product.updated with status: trash, draft, pending, or private capture a DELETE and require only id; missing or unsupported statuses are authorized ignored events and also require only id
- product.deleted captures a DELETE and requires only id
The listing source identified by listingSourceId must have a WooCommerce ingestion configuration with a nonblank write-only webhookSecret and a configured language. A nonblank price maps to a SET and requires the listing source to have woocommerceCurrency configured.
Request
- Base URL: https://api.stage.aura-historia.com
- URL: https://api.stage.aura-historia.com/api/v1/webhooks/woocommerce/{listingSourceId}
- Auth: one of:
- HTTP bearer
- HTTP bearer
Path parameters
Unique identifier of the target ListingSource that should receive the WooCommerce webhook
Headers
WooCommerce webhook topic that determines how the payload is interpreted. Only the listed topic values are accepted.
Base64-encoded HMAC-SHA256 signature of the raw HTTP request body, calculated with the WooCommerce ingestion configuration's webhookSecret.
Optional WooCommerce delivery identifier. For an event that maps to raw capture, its downstream provider receipt retains only a canonical semantic source-payload SHA-256 evidence digest for 90 days and deduplicates retries when applied. Reuse with different evidence fails during consumer capture, not as an immediate HTTP conflict. Logical receipt expiry permits a new receipt but never removes or rewrites a captured raw revision or its provenance. Authorized ignored create/update status events persist no receipt and receive no receipt-based retry-deduplication, even when this header is supplied. When absent, no provider receipt or receipt-based retry-deduplication guarantee is made.
Request body
Example request
{
"id": 17,
"name": "Test Produkt Titel",
"permalink": "http://aura-historia-test.local/product/test-produkt-titel/",
"description": "<p>Hayde yallah test beschreibung</p>\n",
"short_description": "<p>Hayde yallah kurze test beschreibung</p>\n",
"price": "42.69",
"status": "publish",
"stock_status": "instock",
"date_modified_gmt": "2026-09-06T12:34:56",
"images": []
}Response
Webhook bearer/capability, source configuration, and exact-body signature are validated. Current partner/source grant authorization for mapped commands happens at consumer execution; ignored no-ops check it before response. A 204 acknowledges either an authorized ignored create/update status (no queue send or receipt) or matching confirmed acceptance of one CAPTURE_RAW command by the shared ProductListing FIFO. It does not confirm raw capture, provider receipt persistence, source-order checks, canonical normalization, or search visibility. Those decisions occur when the consumer executes the command. Ignored events do not parse date_modified_gmt or construct a provider receipt. When a delivery ID or source timestamp is omitted, no corresponding receipt or source-ordering guarantee is made. The backend returns no response body on success.
Changes
- info
added the non-success response with the status
- info
removed the non-success response with the status
- info
- info
added the non-success response with the status
- info
removed the non-success response with the status
- info