Sincronizare
Acest capitol explică ordinea recomandată a operațiilor pentru publicarea și menținerea ofertelor în Imopedia.ro.
Principii
- Folosește același
ID_LOCALpentru aceeași ofertă din sistemul sursă. - Trimite
AGENTIAîn payload pentru oferta sau fișierul sincronizat. ID_LOCALeste numeric. Dacă sistemul sursă are ID-uri alfanumerice sau nu poate furniza un număr stabil, salveazăID_LOCALnumeric returnat de API și folosește-l la următoarele operații.- Verifică agentul înainte de ofertă:
AGENT_IDtrebuie să aparțină agenției și poate fi creat sau actualizat prinsaveAgent. - Actualizează oferta înainte de a sincroniza fișierele asociate.
- Verifică răspunsurile API și tratează separat erorile față de warnings.
- Nu folosi
deletePropertyca verificare de existență; un apel de ștergere poate răspunde cu statusOKși pentru o ofertă deja absentă.
Flux pentru creare ofertă
- Apelează
loginși păstreazăsession_id. - Apelează
getAgentssausaveAgentca să te asiguri căAGENT_IDexistă pentruAGENTIA. - Construiește payload-ul ofertei cu
AGENTIA,AGENT_ID, tipul imobilului, tranzacția, prețul și datele de localizare. IncludeID_LOCALdoar dacă ai deja un identificator numeric stabil; dacă nu, trimite doar datele necesare, iarsavePropertyva alocaID_LOCALși îl vei folosi ulterior. - Apelează
saveProperty. - Salvează
ID_LOCALnumeric din răspuns dacă API-ul l-a alocat. - Continuă cu fișierele doar dacă răspunsul la
savePropertyeste valid și oferta a fost creată sau actualizată. - Dacă oferta are imagini, verifică fiecare fișier prin
existsFile. - Încarcă fișierele lipsă prin
addFile. - Apelează
syncFilesdacă vrei ca lista finală de fișiere să rămână exact cea transmisă. - Apelează
logout.
După publicare, linkul public al ofertei se poate salva în CRM folosind formula:
https://www.imopedia.ro/anunt/proprietate-{AGENTIA}RUN{ID_LOCAL}
De exemplu, pentru AGENTIA = 123 și ID_LOCAL = 67654, URL-ul este:
https://www.imopedia.ro/anunt/proprietate-123RUN67654
Pagina poate să nu fie accesibilă imediat după saveProperty dacă oferta este încă în procesare, validare sau indexare.
Flux pentru actualizare ofertă
Pentru actualizare, retrimite oferta prin saveProperty folosind același ID_LOCAL numeric salvat după creare. API-ul tratează payload-ul ca actualizare a ofertei existente în contextul agenției.
Actualizează apoi media separat:
- Verifică fișierele existente prin
existsFile. - Încarcă fișierele noi prin
addFile. - Trimite lista finală prin
syncFiles, dacă fișierele eliminate din sistemul sursă trebuie eliminate și din Imopedia.ro.
Flux pentru ștergere ofertă
Pentru eliminarea unei oferte publicate, folosește deleteProperty cu identificatorul ofertei. După ștergere, nu mai trimite fișiere pentru acea ofertă.
Dacă ai nevoie să confirmi existența înainte de ștergere, verifică separat prin getProperty sau getProperties. deleteProperty poate fi tratat ca operație de cleanup idempotentă.
Sincronizarea fișierelor
syncFiles păstrează pe ofertă doar fișierele transmise în lista FILE_IDS. Operația este utilă când sistemul sursă este considerat sursa finală de adevăr pentru galeria ofertei.
Folosește syncFiles cu atenție: fișierele care nu apar în lista transmisă pot fi eliminate din galeria ofertei.
FILE_IDS se transmite ca string. Serverul acceptă array PHP serializat, JSON array, obiect JSON cu cheia ids sau listă text separată prin virgulă, punct și virgulă, bară verticală ori spații.
Dacă răspunsul conține _success.0.result.trebuie_trimise, retrimite fișierele indicate prin addFile, apoi repetă reconcilierea dacă este necesar.
Dacă răspunsul conține _warnings.FILE_IDS, verifică lista transmisă: API-ul poate marca apelul valid, dar să nu găsească niciun identificator de fișier acceptat pentru ofertă.
Retrimiterea datelor
Pentru o sincronizare stabilă, retrimiterile trebuie să păstreze aceiași identificatori:
- același
ID_LOCALnumeric pentru ofertă; - același
FILE_IDpentru același fișier; - aceeași valoare
AGENTIApentru agenția autorizată.
Dacă identificatorii se schimbă, API-ul poate interpreta datele ca entități noi, nu ca actualizări. Schimbarea AGENTIA sau ID_LOCAL schimbă și URL-ul public construit pentru ofertă.
Dacă sistemul sursă are ID nenumeric, salvează ID_LOCAL numeric returnat de API și păstrează maparea. Nu încerca să reconstruiești ulterior oferta doar dintr-un ID CRM nenumeric și nu folosi property_id ca înlocuitor pentru ID_LOCAL.
Pentru operațiile disponibile, vezi Operații API. Pentru formatul fișierelor, vezi Fișiere media.