Lire les biens

GF

HUSSTEER team · updated 2026-09-16 · 6 min

Les biens que votre site peut afficher, et les seuls : ceux de votre agence, couverts par un mandat en vigueur et encore à vendre.

Quels biens sortent de Hussteer

Trois conditions, toutes reprises des règles internes de Hussteer — aucune n'est propre à l'API :

  • le statut du bien n'est ni « vendu » ni « retiré » ;
  • un mandat EN VIGUEUR le couvre — c'est une obligation légale (loi Hoguet), pas un réglage ;
  • il est encore à vendre : un bien sous compromis ou sous offre en sort automatiquement.
Un bien qui disparaît de la liste n'a pas été supprimé : il n'est simplement plus publiable. Prévoyez de le retirer de votre site plutôt que de conserver la dernière version connue.

Lister

GET/api/v1/properties

Les biens de **votre agence** qui peuvent être affichés publiquement : statut non terminal, mandat en vigueur (loi Hoguet) et bien encore à vendre. ⚠️ Une page peut contenir **moins** d'éléments que `limit` : les règles de publiabilité s'appliquent après la lecture. C'est `has_more` qui fait foi, jamais `data.length`.

Paramètres

  • limit (query) — Taille de page. Plafonnée à 100 : une valeur plus grande est ramenée à 100, sans erreur.
  • cursor (query) — Valeur opaque reçue dans `next_cursor`. À renvoyer telle quelle ; ne la fabriquez pas.
  • updated_since (query) — Ne rendre que les biens modifiés depuis cet instant (ISO 8601). Pour une synchronisation incrémentale.

Réponses

  • 200 — Page de biens.
  • 400
  • 401
  • 403
  • 429
curl 'https://hussteer.com/api/v1/properties?limit=50' \
  -H 'Authorization: Bearer hus_at_example'

Pagination

Toujours paginée, taille de page plafonnée à 100. Tant que `next_cursor` n'est pas null, il reste des pages : renvoyez-le tel quel dans `cursor`.

let cursor = null;
const biens = [];

do {
  const url = new URL("https://hussteer.com/api/v1/properties");
  url.searchParams.set("limit", "100");
  if (cursor) url.searchParams.set("cursor", cursor);

  const res = await fetch(url, { headers: { Authorization: `Bearer ${token}` } });
  const page = await res.json();

  biens.push(...page.data);
  cursor = page.next_cursor;
} while (cursor);
Une page peut contenir MOINS d'éléments que `limit` : les règles de publiabilité s'appliquent après la lecture. Ne vous arrêtez jamais sur `data.length < limit` — arrêtez-vous sur `next_cursor === null`.

Pour une synchronisation incrémentale, ajoutez `updated_since` (ISO 8601) : seuls les biens modifiés après cet instant sont rendus.

Lire un bien

GET/api/v1/properties/{id}

⚠️ Rend `404` dans trois cas indistinguables : le bien n'existe pas, il appartient à une autre agence, ou il n'est pas publiable. Les distinguer permettrait d'énumérer les portefeuilles des autres agences.

Paramètres

  • id (path, requis)

Réponses

  • 200 — Le bien.
  • 401
  • 403
  • 404
  • 429

Photos

Les photos sont servies depuis le domaine public de Hussteer (Cloudflare R2). Les URLs sont stables et sans expiration : vous pouvez les référencer directement dans vos pages. L'ordre est celui de la fiche Hussteer — `position: 0` est la photo principale.

Le prix

Quand l'agence a demandé que le prix ne soit pas affiché sur ses supports commerciaux, `price` vaut null et `priceOnRequest` vaut true : affichez « Prix sur demande ». Les honoraires, eux, viennent du mandat signé et doivent apparaître dans l'annonce — c'est une obligation d'affichage.

Ce que l'API ne rendra jamais

  • le propriétaire et ses coordonnées ;
  • le prix net vendeur et les données financières internes ;
  • les notes internes, le digicode, les clés, les conditions de visite ;
  • les données de conformité (KYC, Tracfin) et les documents du dossier ;
  • le mandat lui-même et son état contractuel ;
  • l'adresse exacte, sauf si l'agent a explicitement autorisé sa diffusion.

Was this article helpful?