Structura datelor
saveProperty creează oferta sau o actualizează parțial. O actualizare este identificată prin AGENTIA + ID_LOCAL, iar câmpurile nemodificate pot lipsi fără să fie șterse.
La creare, trimite câmpurile necesare publicării. La actualizare, trimite identificatorii și numai valorile care trebuie modificate.
| Nume câmp | Tip | Exemplu | Descriere | Obligatoriu |
|---|---|---|---|---|
ID_LOCAL |
integer | 67654 |
Identificatorul numeric canonic al ofertei în contextul agenției. Dacă este transmis, trebuie să fie stabil la retrimiteri. Dacă nu este transmis sau ID-ul CRM nu este numeric, API-ul alocă un ID_LOCAL numeric care trebuie salvat de integrator. Nu este property_id intern Imopedia. |
Recomandat când există ID numeric stabil |
AGENTIA |
integer | 123 |
ID-ul numeric al agenției autorizate pentru publicare, primit de la Imopedia. | Da |
REGION_ID |
integer | 12 |
Identificatorul numeric canonic al regiunii, din nomenclatorul public de regiuni. Acceptă valori întregi de la 1 și, pentru compatibilitate SOAP, stringuri numerice normalizate la integer. |
Recomandat / viitor obligatoriu |
TAGURI |
string | "[\"Sold\"]" |
String JSON-encoded care conține o listă de stringuri (ex.: Sold, Ucraina). |
Opțional |
IMOPEDIA |
integer | 1 |
Flag pentru afișarea ofertei în listingul Imopedia.ro. Folosește 1 pentru publicare. |
Recomandat pentru publicare |
TITLU |
string | "Apartament 2 camere în Giurgiului" |
Titlul anunțului afișat public. | Recomandat pentru publicare |
COMISION / COMISION_I |
string | "2" / "2.5" |
Procentul de comision pentru vânzare, respectiv închiriere. 2 înseamnă 2%, iar 2.5 înseamnă 2,5%. |
Opțional |
VIDEO_INFO |
string | Vezi exemplul JSON de mai jos. | String JSON serializat cu resurse video sau tururi virtuale. | Opțional |
GEO_LAT / GEO_LONG |
string | 44.392663 / 26.089659 |
Coordonate geografice pentru harta Google Maps. | Opțional |
PRET_TEXT_DISCOUNT |
string | "Capacitate 4 persoane..." |
Detalii privind prețurile cu discount, folosit inclusiv în regimuri speciale. | Opțional |
T_I_PRET_DISCOUNT |
float | 200 |
Preț de închiriere cu discount. | Opțional |
T_H_PRET_DISCOUNT |
float | null |
Preț regim hotelier cu discount. | Opțional |
GOLD |
integer | 1 |
Solicită promovarea ofertei ca GOLD, în limita disponibilă pentru agenție. |
Opțional |
COMISION și COMISION_I se transmit prin SOAP ca stringuri numerice, conform WSDL. Folosește punctul ca separator zecimal și nu include semnul % sau o monedă.
TAGURI se transmite ca string, nu ca array SOAP. În PHP, serializează lista de stringuri înainte de apel:
$tags = array('Sold', 'Ucraina');
$options['TAGURI'] = json_encode($tags);
Identificatori și URL public
ID_LOCAL este identificatorul numeric canonic al ofertei în contextul agenției și trebuie păstrat stabil la fiecare retrimitere. Împreună cu AGENTIA, acesta formează identificatorul folosit în URL-ul public al anunțului:
https://www.imopedia.ro/anunt/proprietate-{AGENTIA}RUN{ID_LOCAL}
Exemplu cu date fictive:
https://www.imopedia.ro/anunt/proprietate-123RUN67654
Nu construi linkul public din property_id. Dacă saveProperty returnează property_id, tratează-l ca identificator intern Imopedia, nu ca slug public și nu ca înlocuitor pentru ID_LOCAL.
Dacă ID-ul din CRM este alfanumeric, UUID sau alt format nenumeric, nu îl folosești direct ca ID_LOCAL numeric. Dacă la creare omiți ID_LOCAL, API-ul alocă un ID_LOCAL numeric; salvează această valoare returnată și folosește-o pentru actualizări, media, ștergere, promovare și URL public.
saveProperty poate returna atât identificatori interni, cât și ID_LOCAL numeric. Pentru sincronizare, CRM-ul trebuie să persiste ID_LOCAL și să îl folosească la toate apelurile viitoare de saveProperty pentru aceeași ofertă.
Localizare și compatibilitate legacy
Pentru integrări noi, trimite REGION_ID. O valoare explicită și validă are întotdeauna prioritate. REGION_ID, JUDET_ID și ZONA_ID au roluri distincte și nu sunt interschimbabile; API-ul nu copiază JUDET_ID sau ZONA_ID în REGION_ID.
ORAS și JUDET rămân acceptate pentru compatibilitate, dar sunt deprecated pentru identificarea regiunii și produc warning-ul DEPRECATED_FIELD. Dacă REGION_ID lipsește, este null sau șir gol, API-ul încearcă să determine regiunea întâi din ORAS, apoi din JUDET. Integrarea primește în continuare warning-ul MIGRATION_REQUIRED, chiar dacă fallback-ul găsește regiunea.
La un update parțial, omiterea REGION_ID nu șterge regiunea persistentă. Dacă requestul nu conține nici ORAS sau JUDET din care se poate determina altă regiune, localizarea existentă rămâne neschimbată.
Video și tururi virtuale
VIDEO_INFO se transmite ca string JSON serializat, nu ca array SOAP imbricat. Fiecare element poate include câmpuri precum ID, ID_OFERTA, TITLE, FILE_TYPE și FILE_URL. Pentru YouTube, folosește FILE_TYPE = "youtube" și un URL de embed sau watch valid.
Forma JSON înainte de serializare:
[
{
"TITLE": "Titlu video",
"FILE_TYPE": "youtube",
"FILE_URL": "https://www.youtube.com/embed/example"
}
]
Referințe JSON
Pentru consum programatic, câmpurile și nomenclatoarele sunt disponibile ca fișiere versionate:
- fields.json - lista câmpurilor de ofertă, tipuri MySQL, descrieri, valori posibile și tipuri de imobile asociate.
- field-descriptions.json - descrieri scurte pentru câmpurile API.
- property-types.json - tipurile de imobile acceptate.
- index.json - manifestul tuturor nomenclatoarelor disponibile.
Pentru toate valorile controlate, vezi Nomenclatoare.