Business v1 / Nomenclatoare
Potrivire semantică CPV
Ia un text liber care descrie ce se cumpără (ex. „laptopuri pentru birou") și întoarce codurile CPV
cele mai apropiate ca SENS, cu scor — nu căutare pe cuvinte, ci pe înțeles (prinde parafraze,
sinonime, formulări diferite). ?text= (obligatoriu), ?limita= (câte, implicit 5, max 20).
GET
https://oneapi.ro/api/business/v1/cpv/potriveste
Parametri de interogare
NumeTipDescriereValori acceptate
limitaopțional
string | null
Câte sugestii să întoarcă (implicit 5, max 20).
ex. 3
textopțional
string | null
Textul liber de clasificat (obligatoriu). Ex.: „laptopuri pentru birou".
ex. laptopuri pentru birouex. servicii de pazaex. lucrari de asfaltare
Cum se comportă
- Ia un text liber care descrie ce se cumpără şi întoarce codurile CPV cele mai apropiate ca sens, fiecare cu un scor. Nu e căutare pe cuvinte (ca
/cpv?q=), ci pe înţeles — prinde parafraze, sinonime şi formulări diferite de denumirea oficială. - Vocabularul CPV are ~9.454 de coduri, greu de navigat pe cod. „laptopuri pentru birou" te duce la codurile de calculatoare portabile fără să ştii numărul exact.
- Sub capotă e aceeaşi infrastructură ca la CAEN: textul e transformat într-un vector de sens (bge-m3, self-hosted) şi comparat cu indexul precalculat al codurilor CPV. Rezultatul e o listă ordonată de sugestii, nu un verdict — foloseşte scorul şi ia top câteva.
?text=e obligatoriu.?limita=alege câte sugestii (implicit 5, max 20).
La ce folosește
- Alegerea codului CPV la publicarea unei achiziţii, pornind de la descriere.
- Clasificarea automată a obiectului unor contracte în coduri CPV.
- Căutare în vocabularul CPV când nu ştii codul exact.
Structura răspunsului
Toate câmpurile de mai jos sunt în data.
CâmpTipDescriere
text
string
Textul.
potriviri[].cod
string
Codul.
potriviri[].denumire
string
Denumirea.
potriviri[].scor
number
Scorul de potrivire (0–1).
Exemple de răspuns
GEThttps://oneapi.ro/api/business/v1/cpv/potriveste?text=laptopuri+pentru+birou&limita=3
{
"data": {
"text": "laptopuri pentru birou",
"potriviri": [
{
"cod": "30141200-1",
"denumire": "Calculatoare de birou",
"scor": 0.7954199436056661
}
]
}
}
GEThttps://oneapi.ro/api/business/v1/cpv/potriveste?text=servicii+de+paza&limita=3
{
"data": {
"text": "servicii de paza",
"potriviri": [
{
"cod": "79713000-5",
"denumire": "Servicii de pază",
"scor": 0.9444392008912329
}
]
}
}
GEThttps://oneapi.ro/api/business/v1/cpv/potriveste?text=lucrari+de+asfaltare&limita=3
{
"data": {
"text": "lucrari de asfaltare",
"potriviri": [
{
"cod": "45233142-6",
"denumire": "Lucrări de reparare a drumurilor",
"scor": 0.8324728508277461
}
]
}
}
Coduri de eroare
| Cod | Slug | Când apare |
|---|---|---|
| 401 | neautentificat | Token lipsă, invalid, expirat sau revocat. |
| 403 | feature_indisponibil | Planul curent nu include funcţia de care ţine ruta. |
| 422 | validare | Lipseşte parametrul text. |
| 429 | cota_depasita | Cota lunară a planului a fost depăşită (vezi Retry-After). |
| 503 | mentenanta | Indexul semantic CPV nu e construit, sau serviciul de embeddings e temporar indisponibil. |
Toate erorile au aceeași formă. eroare.cod e stabil și e cel după care trebuie să ramifici în cod — nu după textul din mesaj, care se poate schimba.
{
"eroare": {
"cod": "validare",
"mesaj": "Lipseşte parametrul text.",
"detalii": {
"limita": [
"Valoarea trimisă nu respectă regula parametrului."
]
}
}
}