Guía ReadOnly’s

En esta guía, intentaremos mostrar de forma sencilla la manera de asociar avisos a una determinada integración de Solo Lectura, o ReadOnly para ser más específicos. Asimismo, indicaremos la correcta configuración de callbacks para recibir notificaciones acerca de las diversas acciones que se pueden realizar sobre los avisos en el portal. Para la guía utilizaremos dos interface pertenecientes a un integrador, una de Lectura y otra de Lectura y Escritura. La de lectura y escritura ya posee avisos creados y asociados para algunas de sus empresas asociadas.

NOTA: En toda la guía llamaremos LES a la interface de Lectura y Escritura y LEC a la interface de lectura.

Consultando por las inmobiliarias, con la interface de LEC se obtiene:

{
 
"number": 0,
 
"size": 4,
 
"total": 4,
 
"content": [
   {
     
"codigoInmobiliaria": "Prueba_guia_2_e1",
     
"idNavplat": 30345987,
     
"nombre": "Inmobiliaria de Prueba Prueba_guia_2_e1",
     
"habilitadoDesde": 1575547036000
   },
   {
     
"codigoInmobiliaria": "Prueba_guia_2_e2",
     
"idNavplat": 30345989,
     
"nombre": "Inmobiliaria de Prueba Prueba_guia_2_e2",
     
"habilitadoDesde": 1575547037000
   },
   {
     
"codigoInmobiliaria": "Prueba_guia_2_e3",
     
"idNavplat": 30345991,
     
"nombre": "Inmobiliaria de Prueba Prueba_guia_2_e3",
     
"habilitadoDesde": 1575547039000
   },
   {
     
"codigoInmobiliaria": "Prueba_guia_2_e4",
     
"idNavplat": 30345993,
     
"nombre": "Inmobiliaria de Prueba Prueba_guia_2_e4",
     
"habilitadoDesde": 1575547040000
   }
 ]
}

Realizando la misma acción con la interface LES, se obtiene el mismo resultado.

Ahora buscaremos el resumen de los avisos para una inmobiliaria en particular. Tomaremos como ejemplo la empresa “Prueba_guia_2_e2” la cual posee dos avisos.

Consultamos por el resumen de los avisos online de la inmobiliaria con la interface de LES y se obtiene:

{
 
"number": 0,
 
"size": 2,
 
"total": 2,
 
"content": [
   {
     
"idAvisoNavplat": 45491025,
     
"codigoAviso": "15A2D2C2C069BFB3A318FB841FD8FC25_e2_a1",
     
"idDesarrolloNavplat": null,
     
"codigoDesarrollo": null,
     
"tipoDeAviso": "AVISO_CLASIFICADO",
     
"titulo": "Prueba_guia_2 - Casa En Venta",
     
"fechaModificado": "2019-12-05 06:57:18.0",
     
"fechaModificacion": 1575547038000,
     
"publicacion": "SIMPLE",
     
"claveInterna": null,
     
"dataModificacao": 1575547038000,
     
"publicação": "SIMPLE"
   },
   {
     
"idAvisoNavplat": 45491027,
     
"codigoAviso": "15A2D2C2C069BFB3A318FB841FD8FC25_e2_a3",
     
"idDesarrolloNavplat": null,
     
"codigoDesarrollo": null,
     
"tipoDeAviso": "AVISO_CLASIFICADO",
     
"titulo": "Prueba_guia_2 - Edificio En Venta",
     
"fechaModificado": "2019-12-05 06:57:18.0",
     
"fechaModificacion": 1575547038000,
     
"publicacion": "SIMPLE",
     
"claveInterna": null,
     
"dataModificacao": 1575547038000,
     
"publicação": "SIMPLE"
   }
 ]
}

Realizando la misma consulta con la interface de LEC, se obtiene el mismo resultado, pero con los códigos de avisos distintos.

{
 
"number": 0,
 
"size": 2,
 
"total": 2,
 
"content": [
   {
     
"idAvisoNavplat": 45491025,
     
"codigoAviso": null,
     
"idDesarrolloNavplat": null,
     
"codigoDesarrollo": null,
     
"tipoDeAviso": "AVISO_CLASIFICADO",
     
"titulo": "Prueba_guia_2 - Casa En Venta",
     
"fechaModificado": "2019-12-05 06:57:18.0",
     
"fechaModificacion": 1575547038000,
     
"publicacion": "SIMPLE",
     
"claveInterna": null,
     
"dataModificacao": 1575547038000,
     
"publicação": "SIMPLE"
   },
   {
     
"idAvisoNavplat": 45491027,
     
"codigoAviso": null,
     
"idDesarrolloNavplat": null,
     
"codigoDesarrollo": null,
     
"tipoDeAviso": "AVISO_CLASIFICADO",
     
"titulo": "Prueba_guia_2 - Edificio En Venta",
     
"fechaModificado": "2019-12-05 06:57:18.0",
     
"fechaModificacion": 1575547038000,
     
"publicacion": "SIMPLE",
     
"claveInterna": null,
     
"dataModificacao": 1575547038000,
     
"publicação": "SIMPLE"
   }
 ]
}

ATENCIÓN: Aquí es donde comienzan las diferencias entre las interfaces. Ambas tienen asociadas las mismas empresas y, al consultar por el resumen online de los avisos de alguna inmobiliaria, podemos observarlos. La diferencia es que la interface de LEC no tiene asociados sus avisos, y como consecuencia de esto, no recibirá ninguna notificación sobre alguna acción realizada sobre los avisos, o alguna consulta sobre el mismo en el portal. Para esto debemos asociar el aviso a la interface. Para realizar esta acción debemos utilizar el endpoint

PUT /v1/inmobiliarias/{codigoInmobiliaria}/avisos/{codigoAviso}/asociar/{idAviso}

Realizando esta acción, también dejamos asociado el aviso a la interface de LEC.

Tomaremos como ejemplo la inmobiliaria “Prueba_Guia_2_e2” y asociaremos el aviso con idAviso = 45491025 pondremos el código aviso “CodigoPersonalizadoGuia”.

El request URL realizado:

http://api-zp.sandbox.open.navent.com/v1/inmobiliarias/Prueba_guia_2_e2/avisos/CodigoPersonalizadoGuia/asociar/45491025?access_token=*******

Y la respuesta:

{
 
"code": "ok",
 
"respuesta": "El aviso con id 45491025 de la inmobiliaria Prueba_guia_2_e2 se asocio al codigoAviso CodigoPersonalizadoGuia.",
 
"resposta": "El aviso con id 45491025 de la inmobiliaria Prueba_guia_2_e2 se asocio al codigoAviso CodigoPersonalizadoGuia."
}

Aquí el aviso ya quedó asociado y con el código aviso personalizado por el integrador.

Volvemos a consultar el resumen de avisos y ahora obtenemos la siguiente respuesta:

{
 
"number": 0,
 
"size": 2,
 
"total": 2,
 
"content": [
   {
     
"idAvisoNavplat": 45491025,
     
"codigoAviso": "CodigoPersonalizadoGuia",
     
"idDesarrolloNavplat": null,
     
"codigoDesarrollo": null,
     
"tipoDeAviso": "AVISO_CLASIFICADO",
     
"titulo": "Prueba_guia_2 - Casa En Venta",
     
"fechaModificado": "2019-12-05 06:57:18.0",
     
"fechaModificacion": 1575547038000,
     
"publicacion": "SIMPLE",
     
"claveInterna": null,
     
"dataModificacao": 1575547038000,
     
"publicação": "SIMPLE"
   },
   {
     
"idAvisoNavplat": 45491027,
     
"codigoAviso": null,
     
"idDesarrolloNavplat": null,
     
"codigoDesarrollo": null,
     
"tipoDeAviso": "AVISO_CLASIFICADO",
     
"titulo": "Prueba_guia_2 - Edificio En Venta",
     
"fechaModificado": "2019-12-05 06:57:18.0",
     
"fechaModificacion": 1575547038000,
     
"publicacion": "SIMPLE",
     
"claveInterna": null,
     
"dataModificacao": 1575547038000,
     
"publicação": "SIMPLE"
   }
 ]
}

Otra diferencia entre las interfaces es que la interface de LEC no puede realizar ninguna acción sobre los avisos, es decir, nada que los modifique o cambie el estado de los mismos. Pero la interface de LES, sí puede, y el cambio se verá reflejado también para la interface de LEC. Si se intenta realizar una acción indebida con la interface de LEC, se recibirá un error indicando que no se puede realizar la acción indicada. Con un response:

{
 
"code": "error_inesperado",
 
"message": "Access is denied"
}

Un endpoint a tomar en cuenta y que puede ser de utilidad es el de Resumen de Desarrollos, este listara la informacion de todos los desarrollos online de una inmobiliaira y sus unidades:

GET /v1/inmobiliarias/{codigoInmobiliaria}/desarrollos/online/resumen

Continuando con la guía, una vez asociado un aviso, podemos proceder a configurar los callbacks. Esta funcionalidad permite recibir notificaciones sobre distintas acciones que son realizadas sobre los avisos. Por ejemplo, una consulta en el portal por el teléfono, mensaje de un posible cliente.

Para configurar, se debe utilizar el endpoint

PUT /v1/configuracion/callbacks

Este endpoint recibe un objeto con la siguiente información:

  • url: URL POST donde se realizará el callback. Es obligatorio enviar la url y debe comenzar con http:// o https://
  • authorizationHeaderKey: Key para agregar al header como autorización. Es optativo y por defecto Authorization.
  • authorizationHeaderValue: Valor con token o cadena encriptada para la autorización del callback. Si este valor está asignado, pero authorizationHeaderKey no tiene valor, entonces el key en el header será Authorization.
  • lenguajeCallbackBody: EN para inglés, ES para español, PT para portugués. Optativo.

Ahora configuraremos callbacks para la interface de LEC con la siguiente información, en esta ocasión se configuró el idioma español, pero los idiomas pueden ser inglés(EN) o portugués(PT) también:

{
 
"url": "https://prueba.open.navent.com/callbacks",
 
"authorizationHeaderKey": "token",
 
"authorizationHeaderValue": "Password",
 
"lenguajeCallbackBody": "ES"
}

Nos devuelve el codigo HTTP 204 y el response:

no content

Lo cual es correcto.

Se puede verificar si la configuración fue correcta, obteniendo la configuración con el endpoint:

GET /v1/configuracion/callbacks

Ahora hay que proceder a realizar acciones en los avisos y así comenzar a recibir los callbacks con las notificaciones.

Como ejemplo voy a realizar distintas acciones sobre el aviso, que con anterioridad, asociamos con esta interface.

Como primera acción, realizamos una consulta por el teléfono de la inmobiliaria en la publicación en el portal. Al momento de que el integrador desea comenzar a realizar pruebas de los callbacks, debe solicitar a soporte que realicen algunas acciones con el objetivo de que se genere el callback y así probar el mismo. Las dos posibles acciones que realizarán los del equipo de soporte, son la de consulta de teléfono y la de envío de mensaje por parte de una posible cliente.

Del lado del integrador, llega a callbacks, la notificación con la info del evento. El body recibido fue el siguiente:

{
"idEvento":"bef4eef3-882f-4701-a31d-f3313bc8cbd2",
"tipoEvento":"CONTACTO",
"idMensaje":null,
"idTipoContacto":6,
"idContacto":null,
"codigoInmobiliaria":null,
"codigoCliente":null,
"referencia":"15A2D2C2C069BFB3A318FB841FD8FC25_e2_a1",
"fechaRegistro":"2019-12-05T09:51:43.978-0500",
"nombre":"ANONYMOUS",
"email":"--",
"telefono":null,
"mensaje":null
}

Como segunda acción, simulamos un mensaje de un posible cliente en el portal.

Del lado del integrador, se notifica del evento y se nos envió el request, con el siguiente body:

{
"idEvento":"67b02b7a-e648-441d-90f7-e298c3cac633",
"tipoEvento":"CONTACTO_MENSAJE",
"idMensaje":236161673,
"idTipoContacto":1,
"idContacto":null,
"codigoInmobiliaria":null,
"codigoCliente":null,
"referencia":"15A2D2C2C069BFB3A318FB841FD8FC25_e2_a1",
"fechaRegistro":"2019-12-05T09:53:04.529-0500",
"nombre":"Juli",
"email":"open.prueba@navent.com",
"telefono":"1165889654",
"mensaje":"Hola, me interesa esta propiedad que vi en Zonaprop y quiero que me contacten. Gracias."
}

Este fue un tutorial acerca de cómo realizar la asociación de una aviso, configuración de callbacks y cómo se reciben las notificaciones a través de los mismos.

Cualquier consulta o inquietud, no dude en comunicarse con integracion@navent.com