> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.coperniq.io/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.coperniq.io/_mcp/server.

## New catalog categories and DELETE behavior change

### Envelope product categories

17 new `ProductCategory` values are now available when creating or updating a catalog item with `type=PRODUCT`:

`ROOF_COVERING`, `ROOF_UNDERLAYMENT`, `ROOF_MEMBRANE`, `ROOF_FLASHING`, `ROOF_VENT`, `WALL_CLADDING`, `WALL_TRIM`, `WEATHER_BARRIER`, `WINDOW`, `EXTERIOR_DOOR`, `SKYLIGHT`, `OPENING_FLASHING`, `GUTTER`, `DOWNSPOUT`, `INSULATION`, `SEALANT`, `SHEATHING`.

`tradeGroup` remains optional. When provided, it must be `ENVELOPE` for these categories. For `PATCH /catalog-items/{catalogItemId}`, this validation is enforced when both `category` and `tradeGroup` are included in the patch payload (consistent with the current PATCH validation behavior).

### Permitting service category

`PERMITTING` has been added to `ServiceCategory` (between `OPTIMIZATION` and `RELOCATION`) and is available when `type=SERVICE`.

### DELETE /catalog-items/\{catalogItemId} now returns 204 No Content

`DELETE /catalog-items/{catalogItemId}` previously returned `200` or `204` (sometimes with a body). It now always returns `204 No Content`. Clients should no longer expect a response body on successful deletion.