Arhiva clasei RarAutoPass (VFP) care declara prestatiile la RAR AUTOPASS, ca baza pentru rescrierea ca gateway central Python/FastAPI. Include: - sursa VFP (.prg) + datele necesare migrarii (mapare_prestatii, prestatii_rar) - spec-ul oficial RAR (txt) - docs/plans/: plan-design-review + plan-eng-review - docs/CONTEXT.md: handoff pentru continuarea in alta sesiune - .gitignore specific Visual FoxPro (ignora artefacte compilate + credentiale) settings.xml (cu parola de test in clar) EXCLUS; vezi settings.xml.example. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
414 lines
12 KiB
Plaintext
414 lines
12 KiB
Plaintext
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
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
|
||
|