SERVICIU WEB PENTRU SCHIMB DE DATE R.A.R.-R.A. – Diverse institutii Proprietar : Registrul Auto Româ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 Î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 “USER_ALREADY_ADMIN”(“Userul are deja rol admin”) 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 – 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 – 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 – 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} – 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} – 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} – 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 – 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 – 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 – 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 – 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} – 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 – 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 “Bearer: {token}” 3. Models/Modele (1) ApiResponseMessage{ < * >: string } ApiResponseMessage (2) ApiResponse{ description string details string status stringEnum: [ INVALID_EMAIL, INVALID_TOKEN, NOT_OK, OK ] } (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 string }] email string idUser integer($int64) nume string prenume string token string } (6) GrantedAuthority{ authority string } (7) NomenclatorPrestatii{ codPrestatie string numePrestatie string } (8) PostPrezentareUpdateDTO{ b64Image string nrInmatriculare string obs string odometruFinal integer($int64) odometruInitial integer($int64) prestatii [PrestatiiPrezentare{ codPrestatie string idPrezentare integer($int64) }] sistemReparat string status stringEnum: [ ANULATA, FINALIZATA, SALVATA, UNDEFINED ] vin string } (9) PostUtilizatoriDTO{ email string nume string prenume string } (10) PrestatiiPrezentare{ codPrestatie string idPrezentare integer($int64) } (11) Prezentari{ b64Image string dataPrestatie string($date) id integer($int64) idAgent integer($int64) idUser integer($int64) nrInmatriculare string obs string odometruFinal integer($int64) odometruInitial integer($int64) prestatii [PrestatiiPrezentare{ codPrestatie string idPrezentare integer($int64) }] sistemReparat string status stringEnum: [ ANULATA, FINALIZATA, SALVATA, UNDEFINED ] tipPrestatie stringEnum: vin string } (12) RequestChangePassword{ confirmNewPass string newPass string oldPass string userId integer($int64) } (13) RequestForgotPassword{ confirmNewPass string newPass string token string } (14) Roluri{ idRol integer($int64) numeRol string } Registrul Auto Român R.A. Direc?ia General? Venituri Buget Local Sector 2 Protocol de colaborare Specificare Mesaje JSON Versiunea 0.0.1 08.04.2024 © Registrul Auto Roman R.A. Pag. 1