- HMAC verification: Skipped — endpoint accepts any well-formed JSON, no Shopify signature check.
- Data handling: Log the payload to stdout (structured JSON logging), return 200. No persistence, no downstream calls.
- Dockerfile: Production-grade — multi-stage build, non-root user, health check, pinned versions.
- Single endpoint:
POST /webhooks/shopify/product-update - FastAPI app structure:
app/package withmain.py(app factory) androuters/webhooks.py— standard FastAPI layout, not a single-file script - Pydantic model for the incoming payload — validates top-level Shopify product fields but doesn't validate every nested field (Shopify's schema is large and versioned; strict full validation is fragile)
GET /healthendpoint for Docker health checks and load balancer probes- Python 3.12, pip (not Poetry/pdm — keeps the Dockerfile simpler)
- Structured JSON logging via
structlog— each webhook payload logged as a single JSON line for easy ingestion by log shippers - No retry queue, no background tasks — just receive, log, 200
- No database, no docker-compose — single container
- English-only error messages, no i18n