products capability to let Castro publish and update product
pages (and product_categories for category pages).
Create: POST /products
The payload is copy only: Castro writes titles, descriptions and SEO, and
never touches price, SKU or inventory. Merge the copy into your existing
product records.
201 with { "id": "...", "url": "..." }.
Update: PUT /products/{id}
Partial update. A full product push sends every field above; a content-only
push sends just:
List: GET /products
Used to resolve a product’s id from its URL slug when Castro updates a page it
discovered by crawling your site. Return an array of
{ "id": "...", "slug": "...", "name": "..." }; support per_page/page
pagination.
Delete: DELETE /products/{id}
Respond { "deleted": true, "id": "..." }.
