docs: contract RAR verificat live + plan unic consolidat

Verificat contractul RAR AUTOPASS pe endpoint-ul de test si compilat sursa
de adevar `docs/api-rar-contract.md`. Corectii majore fata de planurile vechi:
- JWT TTL = 30h (nu scurt); worker se re-logheaza, retry neplafonat
- b64Image optional; tipPrestatie generat de server (nu se trimite)
- anulare/corectie prin API inexistente pentru FINALIZATA
- needs_data determinist pe R-ODO/I-ODO; reguli validare exacte (VIN/data/nrInm)

Rulat plan-eng-review + plan-design-review, apoi consolidat ambele intr-un
singur plan executabil `docs/plans/plan.md` (design ca anexa). Outside voice
a prins lost-ack double-submit (P1) -> reconciliere inainte de re-send.
Re-push din ROAAUTO scos din v1 (durabilitate = SQLite persistent + restart).

- mutat fisierele spec oficiale RAR in docs/
- adaugat raspunsul oficial al programatorilor RAR (api-rar-documentatie-oficiala.md)
- sterse plan-eng-review.md + plan-design-review.md (consolidate in plan.md)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Claude Agent
2026-06-15 11:32:11 +00:00
parent 2514a04931
commit 5ea2c4cedb
8 changed files with 757 additions and 535 deletions

View File

@@ -0,0 +1,413 @@
SERVICIU WEB PENTRU SCHIMB DE DATE
R.A.R.-R.A. <20> Diverse institutii
Proprietar :
Registrul Auto Rom<6F>n R.A.
Data:
08.04.2024
Versiunea:
0.0.1
Departament:
D.T.I.C.
?ef Departament:
Manuel Farca?
?ef Dezvoltare:
Cristian Mardare
Analist Programator:
Razvan Chirculescu
Document control
Versiunea
Data
Observa?ii
0.0.1
08.04.2024
Start Proiect
Con?inut:
1. Introducere Pag. 4
2. Mesaje definite si metode de acces Pag. 4
3. Modele de date Pag.10
1. Introducere
General
<EFBFBD>n acest document sunt definite metodele expuse in vederea transmiterii de catre agentii economici autorizati a informatiilor necesare emiterii raportului RAR-Autopass conform Legii 142/2023 si OM 210/2024
Scop
Colecterea de informatiilor despre interventiile asupra anumitor sisteme ale vehiculelor precum si informatiile privind indicatia odometrului, cu ocazia prezentarii vehiculelor in unitati service autorizate RAR
2. Mesaje definite si Metode de acces
2.1. Endpoint: account-controller
a. Metoda addClient - Adaugare utilizator
- Adresa access: /rar-autopass/account/addClient
- Tip apel: POST
- Tip access: Securizat
- Descriere:
Agentul economic (rol ADMIN) poate crea utilizatori cu rol CLIENT, vor primi pe email un link de confirmare a adresei de e-mail si o parola initiala, iar contul va deveni activ doar dupa ce acestia vor accesa linkul.
Linkul de activare al contului este valid 24 de ore.
Daca nu se confirma in acest interval, atunci contul va trebui sa fie creat din nou.
- Payload: PostUtilizatoriDTO
- Response: ApiResponseMessage
b. Metoda changePass - Schimba parola unui utilizator
- Adresa access: /rar-autopass/account/changePass
- Tip apel: POST
- Tip access: Securizat
- Descriere: Se transmite un obiect compus din UserID, parola veche, parola noua, reconfirmare parola noua.
- Payload: RequestChangePassword
- Raspuns: String
c. Metoda getAllUsers - Lista de utilizatori in functie de rolul userului logat
- Adresa access: /rar-autopass/account/getAllUsers
- Tip apel: GET
- Tip access: Securizat
- Descriere:
Raspunde cu o lista de obiecte de tip USER in functie de rolul utilizatorului logat.
Daca utilizatorul este ADMIN atunci lista va contine utilizatorii creati de client.
- Payload/Parametru:
- Raspuns: CustomResponseForMapping
d. Metoda getRoles - Interogare lista roluri
- Adresa access: /rar-autopass/account/getRoles
- Tip apel: GET
- Tip access: Securizat
- Descriere: Intoarce un obiect de roluri de utilizator cu ID-urile corespunzatoare.
- Payload/Parametru:
- Raspuns: GetUtilizatoriDTO
e. Metoda getUserById/{id} - Detalii utilizator
- Adresa access: /rar-autopass/account/getUserById/{id}
- Tip apel: GET
- Tip access: Securizat
- Descriere: Cere un parametru ID si raspunde cu un obiect de tip user.
- Payload/Parametru: id
- Raspuns: GetUtilizatoriDTO
f. Metoda inactivateUser/{id} - Dezactiveaza utilizator
- Adresa access: /rar-autopass/account/inactivateUser/{id}
- Tip apel: PATCH
- Tip access: Securizat
- Descriere:
Endpoint de tip PATCH, care primeste un parametru ID si seteaza utilizatorul ca inactiv.
Raspunde cu un obiect de tip {key:"raspuns", value:"descriere raspuns"}.
Daca utilizatorul a fost inactivat cu success raspunsul va fi "USER_INACTIVE" ("Utilizatorul a fost dezactivat!"), iar cand nu, atunci utilizatorul nu exista:
"USER_NOT_PRESENT" ("Utilizator inexistent!").
- Payload/Parametru: id
- Raspuns: ApiResponseMessage
g. Metoda patchUser/{userId} - Modificare utilizator
- Adresa access: /rar-autopass/account/patchUser/{userId}
- Tip apel: PATCH
- Tip access: Securizat
- Descriere:
Endpoint de tip PATCH pentru modificarea campurilor unui utilizator. Primeste un obiect de tip PostUtilizatorDTO si un parametru ID,
si raspunde cu un obiect de tip {key:"raspuns", value:"descriere raspuns"}.
Daca userul a fost modificat cu succes
raspunsul va fi "USER_UPDATED" ("Utilizatorul a fost actualizat!"),
iar cand nu, atunci utilizatorul nu exista:
"USER_NOT_PRESENT" ("Utilizator inexistent!").
- Payload/Parametru: user
- Raspuns: ApiResponseMessage
h. Metoda reactivateUser/{id} - Reactiveaza utilizator
- Adresa access: /rar-autopass/account/reactivateUser/{id}
- Tip apel: PATCH
- Tip access: Securizat
- Descriere:
Endpoint de tip PATCH, care primeste un parametru ID si seteaza userul ca activ.
Raspunde cu un obiect de tip {key:"raspuns", value:"descriere raspuns"}.
Daca userul a fost reactivat cu succes raspunsul va fi "USER_REACTIVATED" ("Utilizatorul a fost reactivat!"),
iar cand nu, atunci utilizatorul nu exista:
"USER_NOT_PRESENT" ("Utilizator inexistent!").
- Payload/Parametru: id
- Raspuns: ApiResponseMessage
i. Metoda resetPassToDefault - Reseteaza parola unui utilizator
- Adresa access: /rar-autopass/account/resetPassToDefault/{id} - Reseteaza parola unui utilizator
- Tip apel: POST
- Tip access: Securizat
- Descriere: Endpoint de tip POST, care primeste ca parametru ID si trimite utilizatorului o noua parola pe emailul asociat.
- Payload/Parametru: id
- Raspuns: GetUtilizatoriDTO
-
j. Metoda makeAdminClient/{id}
- Adresa access: /rar-autopass/account/makeAdminClient/{id}
- Tip apel: POST
- Tip access: Securizat
- Descriere:
Endpoint de tip POST, care permite userului cu rol ADMIN sa aloce rol ADMIN_CLIENT conturilor cu rol de CLIENT deja existente. Primeste un parametru ID si schimba rolul userului din CLIENT in ADMIN_CLIENT.
Raspunde cu un obiect de tip {key:"raspuns", value:"descriere raspuns"}.
Daca rolul este deja ADMIN_CLIENT raspunsul va fi <20>USER_ALREADY_ADMIN<49>(<28>Userul are deja rol admin<69>)
Daca rolul a fost schimbat cu succes raspunsul va fi "USER_ROLE_UPDATED" ("Rolul a fost modificat in ADMIN_CLIENT!"),
iar cand nu, atunci utilizatorul nu exista:
"USER_UPDATE_FAILED" ("Eroare la actualizarea userului!").
- Payload/Parametru: id
- Raspuns: ApiResponseMessage
2.2. Endpoint: nomenclator-controller
a. Metoda getNomenclatorPrestatii <20> Afiseaza lista prestatiilor
- Adresa access: /rar-autopass/nomenclator/getNomenclatorPrestatii
- Tip apel: GET
- Tip access: Securizat
- Descriere: Afiseaza lista prestatiilor.
- Payload/Parametri: ---
- Response: CustomResponseForMapping
b. Metoda getPrestatieByCodPrestatie <20> Afiseaza prestatie dupa cod
- Adresa access:
/rar-autopass/nomenclator/getPrestatieByCodPrestatie/{cod}
- Tip apel: GET
- Tip access: Securizat
- Descriere: Afiseaza prestatie dupa cod.
- Payload/Parametri: cod
- Response: NomenclatorPrestatii
2.3. Endpoint: prezentari-controller
a. Metoda getAllPrezentari <20> Afiseaza toate prezentarile active ale utilizatorului logat
- Adresa access: /rar-autopass/prezentari/getAllPrezentari
- Tip apel: GET
- Tip access: Securizat
- Descriere: Afiseaza toate prezentarile active ale utilizatorulului logat.
- Payload/Parametri: ---
- Response: CustomResponseForMapping
b. Metoda getPrezentare/{id} <20> Afiseaza prezentare dupa ID
- Adresa access: /rar-autopass/prezentari/getPrezentare/{id}
- Tip apel: GET
- Tip access: Securizat
- Descriere: Afiseaza prezentare dupa ID.
- Payload/Parametri: id
- Response: Prezentari
c. Metoda markPrezentareAnulataById/{id} <20>
Marcheaza o prezentare ca ANULATA
- Adresa access: /rar-autopass/prezentari/getPrezentare/{id}
- Tip apel: PATCH
- Tip access: Securizat
- Descriere: Marcheaza o prezentare ca ANULATA.
- Payload/Parametri: id
- Raspuns: ApiResponseMessage
d. Metoda patchPrezentare/{id} <20>
Modifica fielduri pentru o prezentare deja existenta
- Adresa access: /rar-autopass/prezentari/patchPrezentare/{id}
- Tip apel: PATCH
- Tip access: Securizat
- Descriere: Marcheaza o prezentare ca ANULATA.
- Payload/Parametri: id
- Raspuns: PostPrezentareUpdateDTO
e. Metoda postPrezentare <20> Salveaza o noua prezentare
- Adresa access: /rar-autopass/prezentari/patchPrezentare/{id}
- Tip apel: POST
- Tip access: Securizat
- Descriere: Salveaza o noua prezentare.
- Payload: Prezentari
- Raspuns: CustomResponseForMapping
2.4. Endpoint: public-controller
a. Metoda checkIfEmailExists <20> Verificare async daca email este deja existent
- Adresa access: /rar-autopass/public/checkIfEmailExists/{email}
- Tip apel: GET
- Tip access: Public
- Descriere: Verificare async daca email este deja existent.
- Payload/Parametri: email
- Raspuns: ApiResponseMessage
b. Metoda confirmationEmailAccount <20> Confirmare adresa de email
- Adresa access: /rar-autopass/public/checkIfEmailExists/{email}
- Tip apel: GET
- Tip access: Public
- Descriere: Confirmare adresa de email.
- Payload/Parametri: uuid
- Raspuns: ApiResponse
c. Metoda confirmationPassReset <20>
Resetare parola cu token, parola noua si confirmare parola noua
- Adresa access: /rar-autopass/public/confirmationPassReset
- Tip apel: POST
- Tip access: Public
- Descriere: Resetare parola cu token, parola noua si confirmare parola noua.
- Payload/Parametri: requestForgotPassword
- Raspuns: ApiResponse
d. Metoda forgotPasswordLink/{email} <20> Parola uitata
- Adresa access: rar-autopass/public/forgotPasswordLink/{email}
- Tip apel: POST
- Tip access: Public
- Descriere:
Endpoint pentru setarea unei noi parole in cazul in care parola actuala a fost uitata. Primeste parametru EMAIL si raspunde cu un link pe email pentru resetare.
- Payload/Parametri: email
- Raspuns: ApiResponseMessage
e. Metoda login <20> Endpoint pentru login
- Adresa access: /rar-autopass/public/login
- Tip apel: POST
- Tip access: Public
- Descriere:
Primeste 2 parametri, email si password, genereaza token utilizatorului si autentifica login.
- Payload/Parametri: email, password
- Raspuns: GetUtilizatoriDTO
Nota: Pentru toate metodele cu tip acces securizat se va folosi metoda de autentificare de tip JWT Token.
Tokenul de autentificare se obtine prin apel la metoda LOGIN din controller-ul public. Token-ul primit in raspuns trebuie atasat fiecarui request in HEADER AUTHORIZATION,in forma <20>Bearer: {token}<7D>
3. Models/Modele
(1) ApiResponseMessage{
< * >:
string
}
ApiResponseMessage
(2) ApiResponse{
description
string
details
string
status
stringEnum:
[<5B>INVALID_EMAIL, INVALID_TOKEN, NOT_OK, OK<4F>]
}
(3) CreateAgentEconomicDTO{
codAtelier
string
confirmPassword
string
email
string
key
string
nume
string
password
string
prenume
string
}
(4) CustomResponseForMapping{
data
{
}
message
string
statusCode
integer($int32)
}
(5) GetUtilizatoriDTO{
activ
integer($int64)
authorities
[GrantedAuthority{
authority