Options
Options are reusable tenant-scoped choices used by product configuration steps. Examples include colours, openings, handles, glazing, motors, accessories, and other selectable catalogue data.
Endpoints
| Method | Path | Use |
|---|
| POST | /v1/options | Create a reusable option. |
| GET | /v1/options | List options. Supports option_type, active, page, and page_size. |
| GET | /v1/options/types | List option types available for the tenant. |
| GET | /v1/options/{id} | Read one option. |
| PATCH | /v1/options/{id} | Update provided fields. |
| DELETE | /v1/options/{id} | Deactivate the option. |
Create example
curl -X POST https://api.fenestro.io/v1/options \
-H "Authorization: Bearer fen_live_xxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"option_type": "couleurs",
"name": "Anthracite grey",
"description": "RAL 7016",
"image_url": "/images/options/ral-7016.png",
"price_supplement": 25.00,
"supplement_type": "fixed",
"display_order": 10,
"display_price": true,
"metadata": { "ral": "7016", "hex": "#383E42" },
"translations": {
"en": { "name": "Anthracite grey", "description": "RAL 7016" }
}
}'
Important fields
| Field | Notes |
|---|
option_type | Groups options for a configurator step, for example couleurs, ouvertures, or poignees. |
name | Required label shown to users. |
price_supplement | Decimal pricing metadata. It can be positive, zero, or negative. |
supplement_type | Free-form pricing mode such as fixed, percent, per_m2, or tenant-specific values. |
metadata | Optional JSON for visual or domain-specific fields such as RAL, hex colour, SVG key, or supplier code. |
translations | Optional JSON object for localized labels/descriptions. |
Tenant compatibility
Every option belongs to the tenant behind the bearer token. Product steps can attach only active options from the same tenant. Public option identifiers preserve the stable original_id value when it exists, so copied catalogue data can continue to reference existing configurator JSON safely.
Common option errors
| Error | Meaning |
|---|
validation_error | The request body is missing required fields or violates field limits. |
not_found | The option does not exist for the authenticated tenant. |