Clienți
Proprietarii vehiculelor și ai comenzilor de service — persoane fizice (individual) sau firme (business).
Endpoint-uri
| Metodă | Cale | Descriere |
|---|---|---|
| GET | /api/v1/service/customers | Listă paginată; filtre search, customer_type. |
| GET | /api/v1/service/customers/{id} | Citește un client (cu numărul de vehicule și comenzi). |
| POST | /api/v1/service/customers | Creează un client. |
| PUT | /api/v1/service/customers/{id} | Actualizează un client. |
| DELETE | /api/v1/service/customers/{id} | Șterge un client (doar dacă nu are comenzi de service). |
Filtre la listare
| Parametru | Tip | Note |
|---|---|---|
search | string | Caută în first_name, last_name, company_name, phone, email, vat_id. |
customer_type | enum | individual | business. |
per_page | integer | Implicit 50. |
Schema unui client
Câmpuri acceptate la POST / PUT. La POST, customer_type este obligatoriu; restul sunt opționale. La PUT, toate sunt opționale.
| Câmp | Tip | Note |
|---|---|---|
customer_type | enum | individual | business. Obligatoriu la POST. |
first_name | string ≤ 64 | Prenume (persoană fizică). |
last_name | string ≤ 64 | Nume. |
company_name | string ≤ 128 | Denumire firmă. |
phone | string ≤ 32 | Telefon, format liber. |
phone_e164 | string ≤ 16 | Telefon normalizat E.164 (ex. +40712345678). |
email | email ≤ 128 | |
address_line1 | string ≤ 255 | |
address_line2 | string ≤ 255 | |
city | string ≤ 100 | |
county | string ≤ 100 | Județ. |
postal_code | string ≤ 16 | |
country | string (2) | Cod ISO 3166-1 alpha-2 (ex. RO). |
tax_id | string ≤ 32 | CUI / CIF. |
vat_id | string ≤ 32 | Cod TVA. |
preferred_language | string (2) | Cod ISO 639-1 (ex. ro). |
preferred_channel | enum | whatsapp | sms | email | phone | none. |
credit_limit_cents | integer ≥ 0 | Limită de credit, în bani. |
notes | text | |
tags | array | Etichete libere. |
is_blacklisted | boolean | |
blacklist_reason | string ≤ 255 |
La GET /api/v1/service/customers/{id}, răspunsul include în plus vehicles_count și work_orders_count.
Exemplu — creare client
bash
curl -X POST https://tenant.notsowms.ro/api/v1/service/customers \
-H "Authorization: Bearer tenant.7c4a8d09ca3762af61e59520943dc26494f8941b" \
-H "Content-Type: application/json" \
-d '{
"customer_type": "individual",
"first_name": "Andrei",
"last_name": "Popescu",
"phone_e164": "+40712345678",
"email": "andrei@example.com",
"preferred_channel": "whatsapp",
"country": "RO"
}'Răspuns 201:
json
{
"data": {
"id": 42,
"customer_type": "individual",
"first_name": "Andrei",
"last_name": "Popescu",
"phone_e164": "+40712345678",
"email": "andrei@example.com",
"preferred_channel": "whatsapp",
"country": "RO",
"created_at": "2026-05-25T09:14:02.000000Z",
"updated_at": "2026-05-25T09:14:02.000000Z"
}
}Ștergere
bash
curl -X DELETE https://tenant.notsowms.ro/api/v1/service/customers/42 \
-H "Authorization: Bearer tenant.7c4a8d09ca3762af61e59520943dc26494f8941b"Dacă clientul are deja comenzi de service, ștergerea este refuzată cu 422:
json
{ "error": "Cannot delete a customer with work orders." }