---
url: /topics/start-building/catalog.md
---
# Catalog products

The Catalog context is the source of truth for products.

## Create a product

Use `POST /v1/catalog/products` to create a product.

The endpoint requires:

* An authenticated insurer user.
* The `catalog:product:write` permission.
* The `X-Quarzo-Life-Idempotency-Key` header.

The request body accepts only `name` and `productKind`.

```http
POST /v1/catalog/products
X-Quarzo-Life-Idempotency-Key: create-quarzo-life
Content-Type: application/json
```

```json
{
  "name": "Quarzo Life",
  "productKind": "life-insurance"
}
```

The server generates the product ID and sets `instrumentIds` to an empty array.
The endpoint returns the product with `201 Created`.

## Initial products

Create these products manually in each environment:

```json
{ "name": "Quarzo Life", "productKind": "life-insurance" }
{ "name": "Quarzo PER", "productKind": "per" }
{ "name": "Quarzo Capi", "productKind": "capitalization" }
{ "name": "Quarzo PEA", "productKind": "pea" }
```

Do not add these products through a database migration.

## Known obstruction

The `death-settlement` subscriber currently rejects `ProductCreated` events with
`productKind: "pea"`. The subscriber is intentionally unchanged in this ticket;
PEA behavior is deferred to a post-MVP change.
