Instellingen
Base path: /api/settings
GET /settings
Alle instellingen ophalen.
Auth: Admin
Response: Enkel settings object (id=1) met alle configuratiekolommen. Gevoelige velden (smtp_pass, sumup_api_key, mollie_api_key, stripe_secret_key) worden gemaskerd als "********".
PUT /settings
Instellingen bijwerken. Alleen velden in de request body worden bijgewerkt.
Auth: Admin
Request body: Object met te wijzigen velden:
{
"salon_name": "Lumi Salon",
"salon_email": "info@salon.nl",
"currency": "EUR",
"timezone": "Europe/Amsterdam",
"language": "nl",
"dark_mode": "system",
"booking_mode": "direct",
"booking_clients": "all",
"booking_show_prices": 1,
"booking_show_duration": 1,
"booking_allow_staff_choice": 1,
"booking_min_lead_hours": 12,
"booking_max_future_days": 60
}
Wanneer purchase_orders_enabled op 0 wordt gezet, wordt internal_consumption_enabled automatisch ook op 0 gezet. internal_consumption_enabled op 1 zetten terwijl purchase_orders_enabled 0 is, geeft een 400 fout.
POST /settings/upload-logo
Salon logo uploaden.
Auth: Admin
Content-Type: multipart/form-data
| Veld | Type | Verplicht | Beschrijving |
|---|---|---|---|
logo | bestand | Ja | Afbeelding (JPEG, PNG, GIF, SVG, WebP; max 5MB) |
Response: { "url": "/uploads/logo-1234567890.png" }
POST /settings/test-email
Test-e-mail versturen om de SMTP-configuratie te verifiëren.
Auth: Admin
Request body: { "to": "test@example.com" }
Response: { "ok": true } of 400 met foutmelding als SMTP mislukt.
Locaties
Locaties worden beheerd via een aparte route op /api/locations (niet onder /api/settings).
GET /locations
Alle vestigingen ophalen. Ondersteunt ?active=true voor alleen actieve vestigingen.
Auth: Ingelogd
GET /locations/:id
Enkele vestiging ophalen.
Auth: Ingelogd
POST /locations
Nieuwe vestiging aanmaken.
Auth: Admin
| Veld | Type | Verplicht |
|---|---|---|
name | string | Ja |
address | string | Nee |
phone | string | Nee |
email | string | Nee |
is_default | boolean | Nee |
PUT /locations/:id
Vestiging bijwerken.
Auth: Admin
DELETE /locations/:id
Vestiging verwijderen.
Auth: Admin
Feestdagen
GET /settings/holidays
Feestdagen ophalen gesorteerd op datum.
POST /settings/holidays
Feestdag toevoegen.
| Veld | Type | Verplicht |
|---|---|---|
name | string | Ja |
date | string (JJJJ-MM-DD) | Ja |
DELETE /settings/holidays/:id
Feestdag verwijderen.
Openingstijden
Openingstijden worden ingesteld als onderdeel van de initiële setup (POST /api/auth/setup) en worden opgeslagen in de opening_hours tabel. Er is geen apart REST-endpoint om openingstijden na de setup aan te passen.
BTW-tarieven
GET /settings/vat-rates
Alle BTW-tarieven ophalen.
POST /settings/vat-rates
Nieuw BTW-tarief aanmaken.
| Veld | Type | Verplicht | Standaard |
|---|---|---|---|
name | string | Ja | — |
percentage | number | Ja | — |
is_default | 0/1 | Nee | 0 |
is_disabled | 0/1 | Nee | 0 |
PUT /settings/vat-rates/:id
BTW-tarief bijwerken.
DELETE /settings/vat-rates/:id
BTW-tarief verwijderen.
Feature toggles
Optionele functies worden bestuurd via kolommen in de settings tabel.
Algemeen
| Instelling | Type | Standaard | Beschrijving |
|---|---|---|---|
swipe_actions_enabled | boolean | 1 | Veeg-gebaren (mobiel) |
haptic_feedback_enabled | boolean | 1 | Haptische feedback (mobiel) |
longpress_contact_enabled | boolean | 1 | Langindrukken om te bellen/berichten (mobiel) |
offline_mode_enabled | boolean | 1 | Offline caching voor de mobiele app |
staff_personal_agenda_enabled | boolean | 1 | Medewerker ziet alleen eigen agenda |
Voorraad & Inkoop
| Instelling | Type | Standaard | Beschrijving |
|---|---|---|---|
purchase_orders_enabled | boolean | 1 | Inkooporders en leveranciers. Wanneer false wordt quantity_on_hand bewerkbaar |
internal_consumption_enabled | boolean | 1 | Intern verbruik tabblad. Vereist purchase_orders_enabled = true |
Dashboard & Analyses
| Instelling | Type | Standaard | Beschrijving |
|---|---|---|---|
daily_revenue_goal_enabled | boolean | 0 | Dagelijks omzetdoel op dashboard |
daily_revenue_goal | number | 0 | Doelbedrag dagelijkse omzet |
revenue_forecast_enabled | boolean | 0 | Omzetprognose widget |
visit_frequency_alerts_enabled | boolean | 0 | Waarschuwing als klanten te lang wegblijven |
visit_frequency_days | integer | 42 | Drempel in dagen voor bezoekfrequentie-alerts |
CRM & Marketing
| Instelling | Type | Standaard | Beschrijving |
|---|---|---|---|
followup_sequences_enabled | boolean | 0 | Automatische follow-up e-mailreeksen na afspraken |
product_recommendations_enabled | boolean | 0 | Productaanbevelingen voor klanten |
giftcard_qr_enabled | boolean | 0 | QR-codes op cadeaukaart e-mails |
seasonal_promotions_enabled | boolean | 0 | Seizoensgebonden promotie-automatisering |
bulk_campaigns_enabled | boolean | 0 | Bulk e-mailcampagnes |
waitlist_position_enabled | boolean | 0 | Wachtlijstpositie tonen aan klanten |
Meldingen
| Instelling | Type | Standaard | Beschrijving |
|---|---|---|---|
notify_salon_waitlist_join | boolean | 1 | Melding bij aanmelding voor wachtlijst |
notify_salon_slot_available | boolean | 1 | Melding bij beschikbaar plekje |
noshow_email_enabled | boolean | 1 | E-mail bij no-show kosten |
low_stock_email_enabled | boolean | 1 | E-mail bij lage voorraad |
booking_request_notify_email | boolean | 1 | E-mail naar admin bij nieuwe boekingsaanvraag (provisional) |
booking_request_notify_push | boolean | 1 | Pushmelding naar admin bij nieuwe boekingsaanvraag (provisional) |
No-show kosten
| Instelling | Type | Standaard | Beschrijving |
|---|---|---|---|
noshow_enabled | boolean | 0 | Automatische no-show kosten via Stripe |
noshow_fee_type | string | percentage | percentage of fixed |
noshow_fee_value | number | 50 | Percentage (0-100) of vast bedrag |
noshow_min_amount | number | 0 | Minimale no-show vergoeding |
Loyaliteitsinstellingen
De loyaliteitsinstellingen worden beheerd via een aparte route op /api/loyalty. De loyalty_enabled vlag staat in de loyalty_settings tabel, niet in de hoofd settings rij.
GET /loyalty/settings
Loyaliteitsinstellingen ophalen inclusief loyalty_enabled, punten per euro en beloningsdrempels.
PUT /loyalty/settings
Loyaliteitsinstellingen bijwerken.
Auth: Admin