Parteneriatul
Parteneriatul se cere și se decide din portalul Housera sau prin API, cu aceleași reguli. Fiecare parte primește notificarea din portal și evenimentulpartnership.* care o privește.
1
Agenția cere
Titularul sau un administrator al agenției cere parteneriatul, cu un mesaj opțional. Cererea se poate face pentru ansamblul activ al oricărei firme aprobate care are un titular sau un administrator.
2
Firma ansamblului decide
Titularul, un administrator sau managerul proiectului din firma ansamblului aprobă ori respinge cererea. Firma ansamblului e dezvoltatorul sau agenția care comercializează ansamblul cu mandat. Cât timp nu s-a decis, agenția își poate retrage cererea.
3
Agenția leagă unitățile
După aprobare, oricare membru al agenției leagă unități de ansamblu, din portal sau prin API.
Parteneriatele prin API
Citirea cere dreptullistings:read, iar cererea și deciziile cer listings:write.
GET /account/partnerships întoarce parteneriatele firmei cheii, cele mai noi primele, pe ambele părți: cele cerute de agenția ta (side: agency) și cele de pe ansamblurile firmei tale (side: developer). Le poți restrânge cu side, cu status și cu complex, codul ansamblului. id-ul unui parteneriat e cel din evenimentele partnership.*.
Parteneriatele cerute de agenție le citește orice membru al firmei. Pe cele de pe ansambluri le citesc doar proprietarul firmei, administratorii și managerul proiectului, pentru proiectele lui. Pentru ceilalți membri, lista nu le cuprinde.
status e pending, approved, rejected, withdrawn, revoked sau ended. note e mesajul agenției. Când dezvoltatorul respinge sau revocă cu un motiv, note devine motivul lui. units numără anunțurile agenției legate de ansamblu. leads e numărul cererilor de clienți aduse de ele și apare doar pe partea dezvoltatorului. Datele clienților rămân la agenție.
Partea agenției
Cu cheia titularului sau a unui administrator al agenției:GET /partnerships/developments?q=copoucaută ansamblurile pentru care poți cere, după nume (cel puțin 2 caractere, cel mult 20 de rezultate). Fiecare rezultat arecode,title,url, localitatea, dezvoltatorul și, înpartnership, cererea sau parteneriatul pe care îl ai deja.POST /partnershipscere parteneriatul, cucomplex(codul ansamblului) și unnoteopțional, de cel mult 500 de caractere. Răspunsul e201, cu parteneriatul înpending.POST /partnerships/{id}/withdrawretrage o cerere care încă așteaptă.
409, cu motivul în code: partnership_unavailable (ansamblul nu primește cereri acum sau e chiar al firmei tale), partnership_already_open (ai deja o cerere în așteptare), partnership_already_partner (ești deja partener), partnership_paused (dezvoltatorul ți-a respins recent mai multe cereri; încearcă mai târziu) sau partnership_too_many (ai prea multe cereri în așteptare). Un cod de ansamblu necunoscut primește 422 complex_not_found.
Partea dezvoltatorului
Cu cheia titularului, a unui administrator sau a managerului proiectului:POST /partnerships/{id}/approveaprobă cererea.POST /partnerships/{id}/rejectrespinge cererea, cu unnoteopțional pe care agenția îl citește.POST /partnerships/{id}/revokeîncheie un parteneriat aprobat. Toate unitățile agenției ies din ansamblu și rămân publicate ca anunțuri obișnuite. Revocarea nu se poate anula. De aceea, ca în portal, o confirmi cu numele agenției înconfirm, scris exact ca înagency.name. Un alt nume primește422 partnership_confirm_mismatchpe/confirm.
409 partnership_closed. La aprobare, 409 partnership_unavailable înseamnă că ansamblul nu mai e activ sau agenția nu mai e aprobată. Cine nu poate decide pe acel parteneriat primește 404. Unitățile unui partener le scoți una câte una din proiect.
Legarea prin API
Cu cheia agenției trimițicomplex, codul ansamblului, și unit_ref, identificatorul unității, la POST /listings, PUT /listings/ref/{ref} sau PATCH /listings/{code}. La unitatea unei agenții partenere, unit_ref e obligatoriu: fără el primești unit_ref_required pe /unit_ref.
complex, cu linked_by: "partner", și identificatorul normalizat în unit_ref. Pe un anunț activ, o cerere care schimbă doar legătura primește 200: legătura se aplică pe loc și nimic nu ajunge la moderare. Fără parteneriat aprobat, ansamblul altei firme răspunde complex_not_linkable, iar un ansamblu pe care cheia nu îl vede, complex_not_found. Regulile complete sunt în Unitățile ansamblului.
Cheia leagă în firma ei, firma contului care a făcut-o. Vezi Ce anunțuri vede fiecare cheie.
Anunțurile importate dintr-un CRM
Anunțurile pe care Housera le preia din CRM-ul agenției se editează doar în CRM. Legătura cu un ansamblu șiunit_ref nu țin însă de conținutul anunțului. Le schimbi prin API cu un PATCH /listings/{code} care trimite doar complex și unit_ref, ca Leagă de ansamblu din portal:
200 cu anunțul. Importurile următoare nu o ating. Un PATCH care trimite și alt câmp primește 403 forbidden și nu se salvează nimic. Dacă legătura vine din import, ea și unit_ref se schimbă doar din CRM: primești 422 complex_link_from_import. Vezi Pentru CRM-uri.
Ce vede cheia agenției
Cheia agenției nu citește ansamblul dezvoltatorului și nici inventarul lui.GET /listings și GET /listings/{code} fac parte din catalogul platformei și cer dreptul catalog:read, deci primești 403 missing_ability. GET /account/listings/{code} întoarce doar anunțurile agenției, așa că pe codul ansamblului răspunde 404.
Agenția își citește unitățile pe care le-a legat, cu GET /account/listings?complex={code}. Fiecare unitate are câmpul complex, cu code, title, url și linked_by. Codul ansamblului îl afli din GET /partnerships/developments, din GET /account/partnerships sau din portal, unde e în adresa paginii ansamblului, imediat după /anunt/. În https://housera.ro/anunt/hewputa8/iasi/..., codul e hewputa8. API-ul îl acceptă cu litere mici sau mari.
Scoaterea din ansamblu
O unitate iese din ansamblu în cinci feluri:- agenția trimite
complex: nullsau o scoate din portal; - dezvoltatorul scoate unitatea din ansamblu, din portal sau prin API;
- dezvoltatorul revocă parteneriatul, din portal sau prin API, iar toate unitățile agenției ies din ansamblu;
- Housera încheie parteneriatul de exemplu fiindcă ansamblul nu mai e activ;
- mandatul agenției care comercializa ansamblul s-a încheiat: dezvoltatorul l-a revocat sau a preluat ansamblul și a scos unitățile agenției (
reason: mandate_revoked).
unit_ref-ul. În afară de cazul în care chiar tu ai trimis complex: null, primești listing.complex_unlinked, cu motivul în reason și noul etag.
Webhook-urile
Evenimentele parteneriatului ajung la titularul și administratorii firmei, prin cheile legate de acea firmă și cu dreptul
listings:read. Forma lor e în Webhook-uri.