V1 vs V2 - Versiuni API
Qarta oferă două versiuni ale punctelor finale de analiză portofoliu. Înțelegerea diferențelor este crucială pentru a alege versiunea potrivită pentru integrarea ta.
Prezentare generală
| Aspect | V1 | V2 |
|---|---|---|
| Cale de bază | /graph/api/v1/ | /graph/api/v2/ |
| Model filtru | Simplu: {field, value} | Recursiv: {field, value, filters[]} |
| Metoda de căutare | GET cu parametri de interogare | POST cu corp JSON |
| Când să utilizezi | Filtre simple | Filtre complexe, imbricați |
| Data lansării | Original | Versiune îmbunătățită |
Diferențe cheie
1. Model filtru
Diferența fundamentală între V1 și V2 este modul în care sunt structurate filtrele.
V1 - Filtre plate simple
{
"source": "portfolio_01",
"filters": [
{"field": "oe_id", "value": "prop_123"},
{"field": "property_type", "value": "residential"},
{"field": "occupancy", "value": "occupied"}
]
}
- Fiecare filtru este o pereche simplă
{field, value} - Toate filtrele sunt combinate cu AND
- Nu poate exprima logică complexă imbricată
V2 - Filtre imbricate recursive
{
"source": "portfolio_01",
"filters_v2": [
{
"field": "property_type",
"value": "residential",
"filters": [
{"field": "occupancy", "value": "occupied"},
{"field": "price", "value": "500000"}
]
},
{"field": "oe_id", "value": "prop_123"}
]
}
- Fiecare filtru poate avea sub-filtre imbricate
filters[] - Suportă combinații logice complexe
- Mai expresiv și mai puternic
2. Metoda HTTP a endpoint-ului de căutare
Punctele finale V1 și V2 de căutare utilizează metode HTTP diferite:
V1 - Cerere GET
GET /graph/api/v1/reports/portfolio/entries/selection/search?filters={...}&columns=name,value&source=portfolio_01
- Cerere GET cu parametri de interogare
- JSON filtru este codat în URL-ul șir de interogare
- Limitat de constrângerile lungimii URL
V2 - Cerere POST
POST /graph/api/v2/reports/portfolio/entries/selection/search
Content-Type: application/json
{
"filters": [...],
"columns": ["name", "value"],
"source": "portfolio_01"
}
- Cerere POST cu corp JSON
- Nu există limitări de lungime URL
- Structură de cerere mai curată
3. Selecția punctelor și intrărilor
Toate punctele finale portofoliu au schimbat formatul filtru dar au păstrat aceleași metode HTTP:
| Endpoint | V1 | V2 | Schimbare |
|---|---|---|---|
| Puncte în selecție | POST | POST | Doar format filtru |
| Puncte în buffer | POST | POST | Doar format filtru |
| Intrări în selecție | POST | POST | Doar format filtru |
| Intrări în buffer | POST | POST | Doar format filtru |
| Căutare puncte | GET → filters param | POST → filters_v2 body | Metoda + format |
| Căutare intrări | GET → filters param | POST → filters_v2 body | Metoda + format |
Când să utilizezi fiecare versiune
Utilizează V1 dacă:
- ✅ Ai cerințe de filtru simple și plate
- ✅ Nu migrezi integrări existente
- ✅ Filtrele tale nu necesită logică imbricată
- ✅ Exemplu: "Arată-mi toate proprietățile rezidențiale din portofoliu"
Utilizează V2 dacă:
- ✅ Ai nevoie de logică filtru imbricată sau complexă
- ✅ Construiești integrări noi
- ✅ Vrei interogări mai expresive
- ✅ Exemplu: "Arată-mi proprietățile rezidențiale ocupate unde preț > $500k ȘI locație în zona de cărări"
Migrare de la V1 la V2
Dacă migrezi de la V1 la V2, iată ce se schimbă:
1. Actualizează calea API
# V1
GET /graph/api/v1/reports/portfolio/points/selection
# V2
POST /graph/api/v2/reports/portfolio/points/selection
2. Actualizează formatul filtru
Înainte (V1):
{
"source": "portfolio_01",
"filters": [
{"field": "oe_id", "value": "abc123"},
{"field": "property_type", "value": "residential"}
]
}
După (V2):
{
"source": "portfolio_01",
"filters_v2": [
{"field": "oe_id", "value": "abc123"},
{"field": "property_type", "value": "residential"}
]
}
- Redenumește
filters→filters_v2 - Formatul filtru individual rămâne același (pentru filtre plate)
- Poți acum adăuga sub-filtre imbricate
filters[]dacă este necesar
3. Actualizează apelurile endpoint-ului de căutare
Înainte (V1):
curl -X GET "https://graph.quarticle.ro/graph/api/v1/reports/portfolio/entries/selection/search" \
-H "Authorization: YOUR_API_KEY" \
-d "filters={\"field\":\"oe_id\",\"value\":\"abc123\"}&columns=name,value&source=portfolio_01"
După (V2):
curl -X POST "https://graph.quarticle.ro/graph/api/v2/reports/portfolio/entries/selection/search" \
-H "Authorization: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"filters": [{"field": "oe_id", "value": "abc123"}],
"columns": ["name", "value"],
"source": "portfolio_01"
}'
- Schimbă la cerere POST
- Mută parametrii de interogare la corpul JSON
Căutarea endpoint-urilor V2 (entries/selection/search și points/selection/search) utilizează filters — nu filters_v2 — în corpul cererii. Aceasta se datorează faptului că filtrele de căutare sunt trimise ca o listă plată în corpul JSON (nu imbricată în wrapper-ul params utilizat de punctele finale de selecție). Toate celelalte puncte finale V2 utilizează filters_v2.
Exemplu filtru complex
Iată un exemplu din lumea reală care arată puterea filtrului imbricat V2:
Scenariu: Găsești proprietăți rezidențiale ocupate în piețe prime cu tranzacții recente
Interogare V2:
{
"source": "portfolio_01",
"filters_v2": [
{
"field": "property_type",
"value": "residential",
"filters": [
{
"field": "market_tier",
"value": "prime",
"filters": [
{"field": "occupancy", "value": "occupied"},
{"field": "transaction_within_months", "value": "12"}
]
}
]
}
]
}
Aceasta ar fi dificil de exprimat în structura filtrului plat V1.
Alte puncte finale
Negrăbit de diviziunea V1/V2:
- Servicii de locație (geocodificare, geocodificare inversă, completare automată)
- Raportare riscuri (utilizează puncte finale separate cu propria versiune)
- Puncte finale îmbogățire
- Servicii WMS/WFS
Compatibilitate înapoi
Punctele finale V1 vor continua să fie susținute. Nu există o dată dură pentru deprecierea V1. Poți migra la propriul ritm.
Ai nevoie de ajutor?
- Colecție Postman - Răsfoiește detaliile endpoint
- Cazuri de utilizare - Vezi exemple V1 și V2
- Contactează suportul - Obțineți asistență la migrare