Documentation développeur · API REST JSON v1

Pour les agences immobilières et les clients particuliers : créez une clé dans votre compte et connectez votre CRM ou votre site web. L'API accepte et renvoie du JSON. Les nouvelles annonces sont créées en tant que brouillons ; les photos et la publication disposent d'endpoints séparés.

URL de base : https://doomio.cz/api/v1. Envoyez votre clé uniquement depuis votre serveur via HTTPS, dans l'en-tête Authorization: Bearer <key>. Les clés fonctionnent indépendamment des sessions de navigateur. Choisissez un accès en lecture seule ou en lecture/écriture ; révoquez les clés dans votre compte. Une clé ne peut accéder qu'à vos annonces personnelles ou aux annonces de votre agence actuelle. Quitter l'agence, la désactivation du compte, l'expiration ou la révocation la désactive.

1. Créer un brouillon

Chaque nouvelle annonce nécessite un externalId stable provenant de votre CRM, unique dans votre compte personnel ou votre agence. Un doublon renvoie 409 ; récupérez l'annonce existante et PATCH-la. Les ID restent réservés lorsqu'une annonce est retirée.

curl https://doomio.cz/api/v1/properties \
  -H "Authorization: Bearer $DOOMIO_API_KEY" \
  -H 'Content-Type: application/json' \
  --data '{
    "externalId": "CRM-12345",
    "title": "Apartment in Valencia",
    "description": "A bright two-bedroom apartment near the park.",
    "sourceLocale": "en",
    "country": "es", "city": "Valencia",
    "address": "Valencia, Spain",
    "type": "apartment", "transactionType": "sale",
    "price": "245000.00", "currency": "EUR",
    "bedrooms": 2, "usableArea": 78.5
  }'

La réponse est 201 Created, {"data": {...}}, avec l'ID de l'annonce, un en-tête Location et un ETag. Le texte est fourni en sourceLocale ; le flux de traduction existant prépare les autres langues du site web.

2. Téléverser les photos et publier

curl https://doomio.cz/api/v1/properties/123/images \
  -H "Authorization: Bearer $DOOMIO_API_KEY" -F '[email protected]'

curl -X POST https://doomio.cz/api/v1/properties/123/publish \
  -H "Authorization: Bearer $DOOMIO_API_KEY"

Téléchargez des fichiers JPEG, PNG ou WebP, jusqu'à 8 MiB et 40 mégapixels par image, 30 images maximum. Les photos passent par la même vérification que les envois web. La publication nécessite un titre, une adresse, un pays, un type de bien, au moins une photo approuvée et un droit de publication. Les annonces d'agence suivent les règles de visibilité existantes de l'agence ; les annonces personnelles nécessitent une publication active achetée dans le compte Doomio. Les offres promotionnelles conservent leurs limites et la confirmation des droits existantes. Les clés API n'achètent pas de forfaits ni de promotion sociale.

Vérifiez publiclyVisible, status et photoReviewError dans la réponse. Une annonce expirée ou une photo dont la vérification a échoué n'est pas visible publiquement. DELETE retire une annonce dans un brouillon ; cela conserve son ID et son historique. Supprimer la dernière photo retire également l'annonce.

Endpoints

Méthode et cheminComportement
GET /propertiesVos annonces, y compris les brouillons. limit facultatif (1–100, par défaut 50), after (curseur d'ID), externalId, status (brouillon/publiée).
POST /propertiesCréer un brouillon. Obligatoire : externalId, title, sourceLocale, country, type, transactionType, price, currency.
GET /properties/{id}Une annonce et ses ETag.
PATCH /properties/{id}Met à jour les champs fournis ; les champs omis restent inchangés. externalId est immuable. La propriété, la facturation, la promotion sociale et la validité ne peuvent pas être modifiées via cet endpoint.
DELETE /properties/{id}Retire l'annonce ; les appels répétés sont sans danger.
POST /properties/{id}/publishValide et publie ; les règles de publication existantes s'appliquent.
POST /properties/{id}/imagesTéléversement multipart, champ file. Renvoie l'annonce avec l'ID de l'image.
DELETE /properties/{id}/images/{imageId}Supprime une des images de cette annonce.

Champs et réponses

Champs modifiables : title, description, sourceLocale, type, transactionType, price, currency, country, address, city, postalCode, latitude, longitude, rooms, bedrooms, bathrooms, usableArea, landArea, contactEmail, contactPhone. externalId est attribué à la création. Les champs inconnus renvoient 422. Voir OpenAPI pour les limites exactes et les pays/langues pris en charge. Les prix sont des chaînes décimales, les surfaces sont en mètres carrés, les coordonnées sont des WGS84 numériques. Valeurs de devise : CZK, EUR, USD, GBP, PLN. Types : apartment, house, land, commercial, other, development. Transactions : sale, rent.

Les listes renvoient {"data": [...], "pagination": {"limit": 50, "nextAfter": 123}}. Répétez avec ?after=123 ; nextAfter: null signifie la fin. Vous pouvez récupérer une annonce CRM avec ?externalId=CRM-12345.

curl -X PATCH https://doomio.cz/api/v1/properties/123 \
  -H "Authorization: Bearer $DOOMIO_API_KEY" \
  -H 'Content-Type: application/json' \
  -H 'If-Match: "ETAG-FROM-LAST-GET"' \
  --data '{"price":"239000.00"}'

Le If-Match facultatif sur PATCH, publish, withdraw et les opérations d'image empêche de remplacer une annonce modifiée depuis votre dernier GET. Une divergence renvoie 412 ; récupérez l'annonce et résolvez le conflit. Requête JSON maximale : 128 KiB. Limite : 120 requêtes authentifiées par minute et par compte/agence sur l'ensemble de ses clés ; les requêtes excédentaires renvoient 429 et Retry-After: 60. Consultez X-RateLimit-Remaining. Aucun accès navigateur inter-origines n'est requis : les intégrations doivent résider sur votre serveur.

Les erreurs utilisent {"error":{"code":"validation_failed","message":"..."}}. Statuts : 400 requête mal formée, 401 clé manquante/invalide/expirée, 403 clé en lecture seule ou droit de publication manquant, 404 annonce/image hors de votre périmètre ou absente, 405 méthode, 409 externalId en double, 412 ETag obsolète, 413 envoi/corps trop volumineux, 415 Content-Type, 422 champs invalides/validation de photo/de publication, 429 limite de débit, 500 erreur serveur temporaire. Chaque réponse inclut un X-Request-ID ; fournissez-le lors du signalement d'une erreur, jamais votre clé secrète.

Installer le client

Nécessite Python 3.10 ou une version plus récente, sans paquet tiers. Téléchargez le client et le fichier de clé .env, conservez-les tous deux en dehors d'un répertoire web public, puis exécutez :

chmod 600 doomio-api-key.env
python3 doomio_client.py --env doomio-api-key.env list
python3 doomio_client.py --env doomio-api-key.env sync listings.json
python3 doomio_client.py --env doomio-api-key.env upload 123 living-room.jpg
python3 doomio_client.py --env doomio-api-key.env publish 123
python3 doomio_client.py --env doomio-api-key.env withdraw 123

listings.json est un tableau d'objets d'annonce au format de création. sync recherche les ID externes, crée les brouillons manquants et met à jour les annonces existantes. Il ne supprime pas les annonces absentes du fichier, ne téléverse pas automatiquement les photos et ne les publie pas. Les commandes upload/publish/withdraw sont explicites. Il s'agit d'un client d'intégration JSON générique ; les produits CRM existants nécessitent toujours leur propre mappage de champs ou connecteur.