Documentação para desenvolvedores · JSON REST API v1

Para imobiliárias e clientes particulares: crie uma chave na sua conta e conecte seu CRM ou site. A API aceita e retorna JSON. Os novos anúncios são criados como rascunhos; fotos e publicação têm endpoints separados.

URL base: https://doomio.cz/api/v1. Envie sua chave apenas do seu servidor por HTTPS, no cabeçalho Authorization: Bearer <key>. As chaves funcionam independentemente das sessões do navegador. Selecione acesso somente leitura ou leitura/gravação; revogue as chaves na sua conta. Uma chave pode acessar apenas seus anúncios pessoais ou os anúncios da sua agência atual. Ao sair da agência, na desativação da conta, no vencimento ou na revogação, ela deixa de funcionar.

1. Criar um rascunho

Todo novo anúncio precisa de um externalId estável do seu CRM, exclusivo na sua conta pessoal ou agência. Uma duplicata retorna 409; recupere o anúncio existente e PATCH. Os IDs permanecem reservados quando um anúncio é retirado.

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
  }'

A resposta é 201 Created, {"data": {...}}, com o ID do anúncio, um cabeçalho Location e um ETag. O texto é fornecido em sourceLocale; o fluxo de tradução existente prepara os outros idiomas do site.

2. Enviar fotos e publicar

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"

Envie JPEG, PNG ou WebP, máximo de 8 MiB e 40 megapixels por imagem, máximo de 30 imagens. As fotos passam pela mesma revisão que os envios pela web. A publicação exige título, endereço, país, tipo de imóvel, pelo menos uma foto aprovada e direito de publicação. Os anúncios da agência seguem as regras de visibilidade existentes da agência; os anúncios pessoais precisam de uma publicação ativa adquirida na conta Doomio. As ofertas promocionais mantêm seus limites existentes e a confirmação de direitos. As chaves de API não compram planos nem promoção social.

Verifique publiclyVisible, status e photoReviewError na resposta. Um anúncio expirado ou uma revisão de foto reprovada não fica visível publicamente. DELETE retira um anúncio para rascunho; isso preserva o ID e o histórico. Remover a última foto também retira o anúncio.

Endpoints

Método e caminhoComportamento
GET /propertiesSeus anúncios, incluindo rascunhos. limit opcional (1–100, padrão 50), after (cursor de ID), externalId, status (rascunho/publicado).
POST /propertiesCrie um rascunho. Obrigatórios: externalId, título, sourceLocale, país, tipo, transactionType, preço, moeda.
GET /properties/{id}Um anúncio e suas ETag.
PATCH /properties/{id}Atualize os campos enviados; os campos omitidos permanecem inalterados. externalId é imutável. Propriedade, cobrança, promoção social e validade não podem ser alteradas por este endpoint.
DELETE /properties/{id}Retire o anúncio; chamadas repetidas são seguras.
POST /properties/{id}/publishValide e publique; as regras de publicação existentes se aplicam.
POST /properties/{id}/imagesUpload multipart, campo file. Retorna o anúncio com o ID da imagem.
DELETE /properties/{id}/images/{imageId}Remova uma das imagens deste anúncio.

Campos e respostas

Campos graváveis: title, description, sourceLocale, type, transactionType, price, currency, country, address, city, postalCode, latitude, longitude, rooms, bedrooms, bathrooms, usableArea, landArea, contactEmail, contactPhone. externalId é atribuído na criação. Campos desconhecidos retornam 422. Consulte OpenAPI para limites exatos e países/idiomas suportados. Os preços são strings decimais, as áreas são em metros quadrados, as coordenadas são WGS84 numéricas. Valores monetários: CZK, EUR, USD, GBP, PLN. Tipos: apartment, house, land, commercial, other, development. Transações: sale, rent.

As listas retornam {"data": [...], "pagination": {"limit": 50, "nextAfter": 123}}. Repita com ?after=123; nextAfter: null indica o fim. Você pode recuperar um anúncio do CRM com ?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"}'

If-Match opcional em PATCH, publish, withdraw e operações de imagem impede substituir um anúncio alterado desde sua última GET. Uma divergência retorna 412; recupere o anúncio e resolva o conflito. Requisição JSON máxima: 128 KiB. Limite: 120 requisições autenticadas por minuto por conta/agência em todas as suas chaves; requisições excedentes retornam 429 e Retry-After: 60. Verifique X-RateLimit-Remaining. Não é necessário acesso de navegador entre origens: as integrações devem ficar no seu servidor.

Os erros usam {"error":{"code":"validation_failed","message":"..."}}. Status: 400 requisição malformada, 401 chave ausente/inválida/expirada, 403 chave somente leitura ou direito de publicação ausente, 404 anúncio/imagem fora do seu escopo ou ausente, 405 método, 409 externalId duplicado, 412 ETag obsoleto, 413 upload/corpo grande demais, 415 Content-Type, 422 campos inválidos/validação de foto/publicação, 429 limite de taxa, 500 erro temporário do servidor. Toda resposta inclui um X-Request-ID; informe-o ao relatar um erro, nunca sua chave secreta.

Instalar o cliente

Requer Python 3.10 ou mais recente, sem pacotes de terceiros. Baixe o cliente e o arquivo .env da chave, mantenha ambos fora de um diretório público da web e então execute:

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 é uma matriz de objetos de anúncio no formato de criação. sync localiza IDs externos, cria rascunhos ausentes e atualiza anúncios existentes. Ele não exclui anúncios ausentes do arquivo, não envia fotos automaticamente nem os publica. upload/publish/withdraw são comandos explícitos. Este é um cliente genérico de integração JSON; os produtos de CRM existentes ainda precisam de seu próprio mapeamento de campos ou conector.