All endpoints are prefixed with /api/v1/.
| Method | Endpoint | Description |
|---|
| GET | /products | List all products |
| GET | /products/{id} | Get a product |
| POST | /products | Create a product |
| PUT | /products/{id} | Update a product |
| DELETE | /products/{id} | Delete a product |
| GET | /products/{id}/steps | Get product configuration steps |
| Method | Endpoint | Description |
|---|
| GET | /components | List all components |
| GET | /components/{id} | Get a component |
| POST | /components | Create a component |
| PUT | /components/{id} | Update a component |
| DELETE | /components/{id} | Delete a component |
| Method | Endpoint | Description |
|---|
| GET | /customisations | List all customisations |
| POST | /customisations | Create a customisation |
| PUT | /customisations/{id} | Update a customisation |
| DELETE | /customisations/{id} | Delete a customisation |
| Method | Endpoint | Description |
|---|
| GET | /users | List users (admin) |
| POST | /register | Create a user |
| GET | /profile | Get current user profile |
| Method | Endpoint | Description |
|---|
| GET | /typography | List all typographies (paginated, filterable) |
| GET | /typography/{id} | Get a single typography with characters and character sets |
| POST | /typography | Create a typography (Custom Font or Web Font) |
| PATCH | /typography/{id} | Update a typography |
| DELETE | /typography/{id} | Delete a typography |
| DELETE | /typography/mass-delete | Delete multiple typographies |
| Method | Endpoint | Description |
|---|
| GET | /typography/{id}/character | List characters for a typography |
| GET | /typography/{id}/character/{characterId} | Get a single character |
| POST | /typography/{id}/character | Add characters (supports batch creation) |
| PATCH | /typography/{id}/character | Update multiple characters |
| DELETE | /typography/{id}/character/{characterId} | Delete a character |
| DELETE | /typography/{id}/character/mass-delete | Delete multiple characters |
| Method | Endpoint | Description |
|---|
| GET | /typography/{id}/character-set | List character sets for a typography |
| GET | /typography/{id}/character-set/{setId} | Get a single character set |
| POST | /typography/{id}/character-set | Add character sets (supports batch creation) |
| PATCH | /typography/{id}/character-set | Update multiple character sets |
| DELETE | /typography/{id}/character-set/{setId} | Delete a character set |
| DELETE | /typography/{id}/character-set/mass-delete | Delete multiple character sets |
| Method | Endpoint | Description |
|---|
| POST | /sync/products | Trigger product sync |
| GET | /sync/status | Get sync status |
Builda uses Spatie Query Builder conventions:
GET /api/v1/products?filter[name]=watch&sort=-created_at&include=steps
| Parameter | Example | Description |
|---|
filter[field] | filter[name]=watch | Filter by field value |
sort | sort=-created_at | Sort (prefix - for descending) |
include | include=steps,components | Eager load relations |
List endpoints return paginated results:
{
"data": [...],
"meta": {
"current_page": 1,
"last_page": 5,
"per_page": 15,
"total": 72
}
}
Use ?page=2&per_page=25 to control pagination.