Propiedades y publicación
Conecta el inventario de tu CRM con los portales.
- Revisa GET /v1/usage (cupo de propiedades del plan) y GET /v1/portals: lista todos los portales con available/status, el cupo de avisos (quota.active, quota.limit, quota.remaining), la cuenta conectada y el estado de sincronización. Valida con POST /v1/properties/validate con property y portals. Crear y publicar son acciones separadas con cupos distintos: puedes tener más propiedades en TochiHub que avisos en un portal y rotar cuáles se publican (despublica una para liberar cupo y publica otra).
- Crea POST /v1/properties con externalId del CRM y al menos 3 fotos por URL pública. Usa Idempotency-Key para reintentos.
- Actualiza por PATCH /v1/properties/:id; agrega fotos por POST /v1/properties/:id/media, reordénalas o cambia su texto con PATCH /v1/properties/:id/media/:mediaId y elimínalas con DELETE /v1/properties/:id/media/:mediaId (el id viene en media[].id). Guardar no publica. Los cambios de propiedades reales ya publicadas sincronizan sus portales activos. GET /v1/properties/:id devuelve todo lo guardado, incluidos amenities y characteristics. PATCH con characteristics reemplaza el objeto completo: lee, combina y envía el objeto entero.
- Publica por POST /v1/properties/:id/publications con { "portals": ["YAPO"] }. Cada portal devuelve su propio accepted/error. Producción responde 202 y procesa en segundo plano. Si incluyes MERCADO_LIBRE y PORTAL_INMOBILIARIO en la misma llamada, ambos comparten un único aviso y un solo cupo; publicarlos en llamadas separadas crea dos avisos. Para reintentar un portal que falló, vuelve a llamar esta ruta con ese portal.
- Consulta GET /v1/properties/:id/publications o recibe PROPERTY_PUBLICATION_COMPLETED. DELETE /v1/properties/:id/publications/:portalCode despublica de un portal.
- Pausa con POST /v1/properties/:id/pause (retira los avisos de todos los portales) y reanuda con POST /v1/properties/:id/resume (vuelve a publicar donde estaba).
- Elimina con DELETE /v1/properties/:id: archiva la propiedad. Antes despublícala de todos los portales; si queda alguno activo responde 400.
- Recibe LEAD_CREATED y recupera GET /v1/leads/:id con leads:read. Consulta GET /v1/properties/:id/metrics para las visitas, contactos y clics de cada portal (valores acumulados del aviso). Mercado Libre y Portal Inmobiliario muestran un único aviso: ambos portales informan las mismas visitas, cada uno lista al otro en sharedViewsWith y totals.views las suma una sola vez. Si guardas visitas por portal, no sumes las de portales que se listan en sharedViewsWith. Contactos y clics son propios de cada portal y sí se suman.
- Suscríbete a PROPERTY_UPDATED y PROPERTY_STATUS_CHANGED para enterarte de los cambios hechos desde el panel de TochiHub. Todos los webhooks de propiedad (PROPERTY_CREATED, PROPERTY_UPDATED, PROPERTY_STATUS_CHANGED y PROPERTY_PUBLICATION_COMPLETED) incluyen externalId, el id de tu CRM, o null si la propiedad no se creó con uno.
Idempotency-Key se conserva 7 días, aislada por corredora y modo. Repetirla con el mismo body devuelve la respuesta original; otro body devuelve 409. Una respuesta en curso también devuelve 409: reintenta después. Los estados DRAFT/READY se calculan (READY requiere título, precio positivo y 3 fotos). Los portales pueden exigir más campos: valida antes de publicar. La validación comprueba el payload, sin enviar solicitudes al portal; una aceptación definitiva depende de sus credenciales, plan y respuesta externa.