Catalog
Catalog items, per-currency prices, and bundle contents.
The catalog is the library of purchasable things — durable items, consumables, bundles. Prices live in a separate table (one row per item+currency); bundles map a bundle-type item to its child content items.
Source: apps/api/src/routes/admin/catalog.ts.
Endpoints
| Method | Path | Description |
|---|---|---|
| POST | /admin/projects/:projectId/catalog | Create a catalog item. |
| GET | /admin/projects/:projectId/catalog | List, optional ?category=. Includes catalog_item_prices. |
| GET | /admin/projects/:projectId/catalog/:itemId | Full item including prices + bundle contents. |
| PATCH | /admin/projects/:projectId/catalog/:itemId | Partial update. |
| DELETE | /admin/projects/:projectId/catalog/:itemId | Delete. |
| POST | /admin/projects/:projectId/catalog/:itemId/prices | Upsert a per-currency price. |
| DELETE | /admin/projects/:projectId/catalog/:itemId/prices/:currencyCode | Remove a price. |
| POST | /admin/projects/:projectId/catalog/:itemId/bundle | Upsert bundle content. |
| DELETE | /admin/projects/:projectId/catalog/:itemId/bundle/:contentItemId | Remove bundle content. |
POST /admin/projects/:projectId/catalog
Request (CreateCatalogItemInput)
| Field | Type | Required | Default |
|---|---|---|---|
key | string | yes | — |
name | string | yes | — |
description | string | no | null |
icon_url | string | no | null |
category | string | no | null |
tags | string[] | no | [] |
item_type | "durable" | "consumable" | "bundle" | no | "durable" |
metadata | object | no | {} |
Response 201
Try it:
POST
developer auth/admin/projects/%7B%7BprojectId%7D%7D/catalogcurl -X POST 'https://api.amba.dev/admin/projects/%7B%7BprojectId%7D%7D/catalog'Loading auth… Configure auth in the settings drawer (top-right) to run this request.
Curl:
GET /admin/projects/:projectId/catalog
Query
| Param | Description |
|---|---|
category | Filter to a single category. |
Response 200
Try it:
GET
developer auth/admin/projects/%7B%7BprojectId%7D%7D/catalogcurl -X GET 'https://api.amba.dev/admin/projects/%7B%7BprojectId%7D%7D/catalog'Loading auth… Configure auth in the settings drawer (top-right) to run this request.
Curl:
GET /admin/projects/:projectId/catalog/:itemId
Response 200
Errors
404 NOT_FOUND.
Try it:
GET
developer auth/admin/projects/%7B%7BprojectId%7D%7D/catalog/%7B%7BitemId%7D%7Dcurl -X GET 'https://api.amba.dev/admin/projects/%7B%7BprojectId%7D%7D/catalog/%7B%7BitemId%7D%7D'Loading auth… Configure auth in the settings drawer (top-right) to run this request.
Curl:
PATCH /admin/projects/:projectId/catalog/:itemId
Allowed fields: name, description, icon_url, category, tags, item_type, metadata, is_active.
Try it:
PATCH
developer auth/admin/projects/%7B%7BprojectId%7D%7D/catalog/%7B%7BitemId%7D%7Dcurl -X PATCH 'https://api.amba.dev/admin/projects/%7B%7BprojectId%7D%7D/catalog/%7B%7BitemId%7D%7D'Loading auth… Configure auth in the settings drawer (top-right) to run this request.
Curl:
DELETE /admin/projects/:projectId/catalog/:itemId
Try it:
DELETE
developer auth/admin/projects/%7B%7BprojectId%7D%7D/catalog/%7B%7BitemId%7D%7Dcurl -X DELETE 'https://api.amba.dev/admin/projects/%7B%7BprojectId%7D%7D/catalog/%7B%7BitemId%7D%7D'Loading auth… Configure auth in the settings drawer (top-right) to run this request.
Curl:
POST /admin/projects/:projectId/catalog/:itemId/prices
Upsert a price for a specific currency. ON CONFLICT (catalog_item_id, currency_code) DO UPDATE.
Request
| Field | Type | Required |
|---|---|---|
currency_code | string | yes |
price | number | yes |
Response 201
Errors
500 SET_PRICE_FAILED.
Try it:
POST
developer auth/admin/projects/%7B%7BprojectId%7D%7D/catalog/%7B%7BitemId%7D%7D/pricescurl -X POST 'https://api.amba.dev/admin/projects/%7B%7BprojectId%7D%7D/catalog/%7B%7BitemId%7D%7D/prices'Loading auth… Configure auth in the settings drawer (top-right) to run this request.
Curl:
DELETE /admin/projects/:projectId/catalog/:itemId/prices/:currencyCode
Try it:
DELETE
developer auth/admin/projects/%7B%7BprojectId%7D%7D/catalog/%7B%7BitemId%7D%7D/prices/%7B%7BcurrencyCode%7D%7Dcurl -X DELETE 'https://api.amba.dev/admin/projects/%7B%7BprojectId%7D%7D/catalog/%7B%7BitemId%7D%7D/prices/%7B%7BcurrencyCode%7D%7D'Loading auth… Configure auth in the settings drawer (top-right) to run this request.
Curl:
POST /admin/projects/:projectId/catalog/:itemId/bundle
Add or update bundle content. ON CONFLICT (bundle_item_id, content_item_id) DO UPDATE SET quantity.
Request
| Field | Type | Required | Default |
|---|---|---|---|
content_item_id | uuid | yes | — |
quantity | number | no | 1 |
Response 201
Errors
500 ADD_BUNDLE_FAILED.
Try it:
POST
developer auth/admin/projects/%7B%7BprojectId%7D%7D/catalog/%7B%7BitemId%7D%7D/bundlecurl -X POST 'https://api.amba.dev/admin/projects/%7B%7BprojectId%7D%7D/catalog/%7B%7BitemId%7D%7D/bundle'Loading auth… Configure auth in the settings drawer (top-right) to run this request.
Curl:
DELETE /admin/projects/:projectId/catalog/:itemId/bundle/:contentItemId
Try it:
DELETE
developer auth/admin/projects/%7B%7BprojectId%7D%7D/catalog/%7B%7BitemId%7D%7D/bundle/%7B%7BcontentItemId%7D%7Dcurl -X DELETE 'https://api.amba.dev/admin/projects/%7B%7BprojectId%7D%7D/catalog/%7B%7BitemId%7D%7D/bundle/%7B%7BcontentItemId%7D%7D'Loading auth… Configure auth in the settings drawer (top-right) to run this request.
Curl: