Atelier (piese & pontaj)
Operațiunile de pe platforma atelierului, în jurul unei comenzi de service: cererile de piese de la mecanic către tejghea și pontajul mecanicilor.
Notă despre utilizator. Aceste endpoint-uri acționează în numele unui utilizator (mecanic). Când cererea este autentificată cu sesiune, utilizatorul este cel autentificat. Cu o cheie API completă (fără sesiune de utilizator), trimite
user_idîn body ca să indici mecanicul.
Cereri de piese
Mecanicul de la boxă cere o piesă; tejgheaua vede cererile deschise (ordonate după urgență) și le avansează statusul.
| Metodă | Cale | Descriere |
|---|---|---|
| GET | /api/v1/service/parts-requests | Listă (nepaginată); filtre open, work_order_id. |
| POST | /api/v1/service/work-orders/{id}/parts-requests | Creează o cerere pentru o comandă. |
| PUT | /api/v1/service/parts-requests/{id}/status | Avansează statusul cererii. |
Listare
| Parametru | Tip | Note |
|---|---|---|
open | boolean | Implicit true — doar cererile încă deschise. |
work_order_id | integer | Filtrează după comandă. |
Rezultatele sunt ordonate după urgență (now → today → this_week), apoi după momentul cererii.
Creare cerere
| Câmp | Tip | Obligatoriu | Note |
|---|---|---|---|
description | string ≤ 255 | da | Ce piesă se cere. |
quantity | numeric ≥ 0 | nu | Implicit 1. |
urgency | enum | nu | now | today | this_week. Implicit today. |
wo_parts_line_id | integer | nu | Leagă cererea de o linie de piese a comenzii. |
curl -X POST https://tenant.notsowms.ro/api/v1/service/work-orders/901/parts-requests \
-H "Authorization: Bearer tenant.7c4a8d09ca3762af61e59520943dc26494f8941b" \
-H "Content-Type: application/json" \
-d '{ "description": "Set plăcuțe frână față MT-07", "quantity": 1, "urgency": "now" }'Avansarea statusului
curl -X PUT https://tenant.notsowms.ro/api/v1/service/parts-requests/210/status \
-H "Authorization: Bearer tenant.7c4a8d09ca3762af61e59520943dc26494f8941b" \
-H "Content-Type: application/json" \
-d '{ "status": "delivered_to_bay" }'| Câmp | Tip | Obligatoriu | Valori |
|---|---|---|---|
status | enum | da | pending | picked | delivered_to_bay | ordered | unavailable | cancelled. |
Trecerea în delivered_to_bay setează automat delivered_at.
Pontaj mecanic (time clock)
Cronometrarea lucrului unui mecanic. Există cel mult o singură pontare deschisă per utilizator în orice moment.
| Metodă | Cale | Descriere |
|---|---|---|
| GET | /api/v1/service/time-clock/current | Pontarea deschisă curentă (sau null). |
| POST | /api/v1/service/time-clock/start | Pornește o pontare. |
| POST | /api/v1/service/time-clock/stop | Oprește pontarea curentă. |
Pornire
| Câmp | Tip | Note |
|---|---|---|
user_id | integer | Mecanicul, dacă cererea nu e autentificată cu sesiune. |
work_order_id | integer | Comanda la care se lucrează. |
wo_labor_line_id | integer | Linia de manoperă cronometrată. |
notes | text |
curl -X POST https://tenant.notsowms.ro/api/v1/service/time-clock/start \
-H "Authorization: Bearer tenant.7c4a8d09ca3762af61e59520943dc26494f8941b" \
-H "Content-Type: application/json" \
-d '{ "user_id": 12, "work_order_id": 901 }'Dacă mecanicul are deja o pontare deschisă, răspunsul este 422:
{ "error": "User already has an open time clock entry." }Oprire
curl -X POST https://tenant.notsowms.ro/api/v1/service/time-clock/stop \
-H "Authorization: Bearer tenant.7c4a8d09ca3762af61e59520943dc26494f8941b" \
-H "Content-Type: application/json" \
-d '{ "user_id": 12 }'Setează stopped_at și calculează duration_minutes. Dacă nu există o pontare deschisă pentru acel utilizator, răspunsul este 422.