Salt la conținutul principal
Un anunț are două identități: codul pe care i-l dă Housera și, opțional, id-ul din sistemul tău. Le poți folosi pe amândouă.

code, codul Housera

Fiecare anunț primește la creare un cod public de 8 caractere, de exemplu HEWPUTA8. E același cod care apare în adresa anunțului de pe site și nu se schimbă niciodată. Îl folosești în toate rutele care se referă la un anunț anume:
Codul nu ține cont de majuscule: hewputa8 și HEWPUTA8 duc la același anunț. În răspunsuri vine mereu cu majuscule.

external_ref, id-ul tău

Dacă sistemul tău are deja un id pentru fiecare proprietate, nu e nevoie să păstrezi și codul Housera. Publici și actualizezi direct după id-ul tău:
  • Prima dată când trimiți un id, anunțul se creează, ca la POST /listings, și primești 201.
  • Următoarele dăți, corpul se aplică pe anunțul existent, ca o editare. Vezi Editarea.
  • Citirea după id-ul tău: GET /account/listings/ref/CRM-10293.
Id-ul apare în fiecare anunț și în fiecare eveniment, în câmpul external_ref (null pentru anunțurile create altfel decât prin PUT /listings/ref/{ref}). Reguli pentru id:
  • între 1 și 100 de caractere: litere, cifre și . _ : / -;
  • e unic în agenția ta (sau în contul tău, dacă nu faci parte dintr-o agenție). Două agenții diferite pot folosi amândouă 123 fără conflict;
  • un id cu alte caractere primește 404.
Folosește un id care nu se schimbă niciodată în sistemul tău, nu un număr de ordine dintr-o listă. Dacă id-ul se schimbă, Housera vede un anunț nou.

Idempotency-Key, cererile repetate

O rețea instabilă poate pierde răspunsul unei cereri care a reușit. Dacă repeți orbește un POST /listings, riști două anunțuri identice. Antetul Idempotency-Key previne asta:
  • O cerere repetată cu aceeași cheie, în următoarele 10 minute, întoarce anunțul creat de prima, fără să creeze altul.
  • Cheia e a contului tău: altcineva care folosește aceeași valoare nu-ți atinge anunțurile.
  • Lungimea maximă e de 64 de caractere. Un UUID generat pentru fiecare anunț nou e alegerea potrivită.
  • Generezi cheia o dată per operație și o refolosești doar la reîncercările acelei operații.
PUT /listings/ref/{ref} nu are nevoie de Idempotency-Key: id-ul tău joacă deja acest rol. Același id trimis de două ori nu creează niciodată două anunțuri.

Reconcilierea

Webhook-urile și evenimentele îți spun ce s-a schimbat. O dată pe zi merită totuși să compari tot ce ai cu ce e pe Housera, ca să prinzi orice diferență. GET /account/listings acceptă parametrul fields, care îți întoarce doar câmpurile de comparat:
  • Lista conține anunțurile tale în orice stare (iar dacă ești owner sau admin al agenției, și pe ale colegilor), ordonate după updated_at.
  • Mergi la pagina următoare cu cursor din meta.next_cursor, până când acesta e null.
  • per_page merge de la 1 la 100 (implicit 50). Poți filtra după stare cu status, de exemplu status=active.
Ce compari:
  • un etag diferit de cel pe care îl știi înseamnă că anunțul s-a schimbat pe Housera (o editare în portal, o moderare): îl citești întreg cu GET /account/listings/{code};
  • un anunț care lipsește din listă a fost șters;
  • un external_ref pe care nu-l găsești pe Housera înseamnă că anunțul n-a ajuns: îl trimiți din nou cu PUT /listings/ref/{ref}.