Kameleoon.API.Core
Este módulo contiene funciones para implementar variaciones de A/B testing en el front-end sin parpadeos. Use estos métodos en el orden indicado para obtener resultados óptimos. El módulo también incluye métodos de inicialización del motor, incluidos los relacionados con las leyes de privacidad y la recopilación del consentimiento legal. Antes de llamar al objeto JavaScript de la Activation API, verifique que el motor de Kameleoon se haya cargado. Use la Kameleoon Command Queue para la ejecución diferida de comandos cuando envíe datos de seguimiento, dispare experimentos o actualice atributos del visitante. Si el motor está cargado, los comandos y funciones que se pasen se ejecutarán inmediatamente; de lo contrario, entrarán en una cola para su posterior ejecución. Para más información, consulte la documentación de Command queue.enableLegalConsent
enableLegalConsent() después de obtener el consentimiento legal del visitante para activar Kameleoon. Este método activa el modo de funcionamiento normal de Kameleoon. Para más información, consulte el artículo Gestión del consentimiento.
Argumentos
También hay disponible una opción personalizada que permite gestionar por separado el consentimiento para Product Recommendation. Cuando esta opción está activa, llame explícitamente a
enableLegalConsent("PRODUCT_RECOMMENDATION") para activar el módulo. Contacte con el Customer Success Manager para habilitar esta funcionalidad.disableLegalConsent
disableLegalConsent() cuando un visitante rechace el uso de Kameleoon. Este método desactiva el modo de funcionamiento normal. Para más información, consulte el artículo sobre Gestión del consentimiento.
Argumentos
También hay disponible una opción personalizada que permite gestionar por separado el consentimiento para Product Recommendation. Cuando esta opción está activa, llame explícitamente a
disableLegalConsent("PRODUCT_RECOMMENDATION") para deshabilitar el módulo. Contacte con el Customer Success Manager para habilitar esta funcionalidad.enableSinglePageSupport
enableSinglePageSupport() recarga el motor de Kameleoon cuando cambia la URL activa, con independencia de las cargas de página del navegador. Use este método para Single Page Applications (SPA) con varias URL y una única carga inicial. Kameleoon trata cada cambio de URL como una nueva página, lo que habilita la segmentación por URL y un seguimiento preciso de métricas como las páginas vistas.
Kameleoon también eliminará automáticamente todos los elementos añadidos a la página que utilicen IDs HTML que empiecen por “kameleoonElement” o “kameleoonStyleSheet” cuando la SPA se recargue.
enableDynamicRefresh
enableDynamicRefresh() detecta cambios en los elementos y reaplica las modificaciones del Graphic Editor. Este método admite SPAs que modifican el DOM dinámicamente sin cambios de URL ni recargas de página, evitando que las actualizaciones dinámicas eliminen los experimentos. Consulte enableSinglePageSupport() para otros tipos de SPA.
getConfiguration
getConfiguration() devuelve una referencia al objeto Configuration, que contiene los valores constantes globales de la configuración de Kameleoon del sitio.
Valor de retorno
load
load() inicializa el motor de Kameleoon. Aunque la inicialización suele producirse automáticamente al cargar el archivo de la aplicación, es posible que sea necesario realizar llamadas manuales. El ejemplo muestra cómo implementar recargas tras cada cambio de URL, de forma similar a enableSinglePageSupport().
Kameleoon también eliminará automáticamente todos los elementos añadidos a la página que utilicen IDs HTML que empiecen por “kameleoonElement” o “kameleoonStyleSheet” cuando la SPA se recargue.
processRedirect
processRedirect() redirige el navegador a otra URL, normalmente para experimentos A/B de tipo split. Use este método en lugar de window.location.href = redirectionURL; para garantizar un seguimiento preciso en segundo plano.
Si la URL de redirección está en un dominio distinto al de la URL base y la instalación de Kameleoon no incluye los datos de sesión unificados, el motor añade un parámetro
kameleoonRedirect-{experimentID} a la URL de destino para garantizar un seguimiento preciso.Argumentos
runWhenConditionTrue
runWhenConditionTrue() ejecuta la función callback cuando la función conditionFunction devuelve true. El método utiliza un mecanismo de polling, lo que puede causar parpadeos. Use runWhenElementPresent() en su lugar para obtener un mejor rendimiento. Consulte la descripción de runWhenElementPresent() para más detalles.
Argumentos
runWhenElementPresent
runWhenElementPresent() ejecuta la función callback cuando aparece un elemento específico en el DOM. Este método utiliza mutation observers para impulsar la tecnología anti-parpadeo. Identifique los elementos clave de una variación y llame a runWhenElementPresent() con el elemento como primer argumento y el código de implementación como callback. Esto garantiza que las modificaciones se ejecuten en cuanto aparezca el elemento, antes de que el navegador inicie un ciclo de refresco de visualización.
Para actuar sobre varios elementos, llame a runWhenElementPresent() por separado para cada elemento en lugar de apuntar únicamente al elemento final esperado. Una sola llamada puede provocar parpadeos si se produce un ciclo de refresco entre la aparición de los distintos elementos.
Proporcionar este valor desactiva los Mutation Observers y el anti-parpadeo, y se vuelve al polling tradicional. Use este argumento solo en casos específicos, como consultas de selectores complejas con un alto impacto en CPU.
Argumentos
runWhenShadowRootElementPresent
runWhenShadowRootElementPresent() ejecuta la función callback cuando aparece un elemento específico dentro de un shadow DOM con mode: open.
Argumentos
Kameleoon.API.Goals
Este módulo gestiona el disparo de objetivos y los datos de conversión, incluidas las confirmaciones de compra y el registro de ingresos.cancelConversion
cancelConversion() cancela una conversión que disparó durante la visita actual. Este método no puede cancelar conversiones de visitas anteriores.
Argumentos
processConversion
processConversion() dispara una conversión. Los metadatos deben estar configurados en la app de Kameleoon antes de establecerlos con processConversion().
Si inicia las conversiones desde un Tag Management System, como Google Tag Manager, use la Kameleoon Command Queue para retrasar la ejecución hasta que el motor se cargue. El motor procesa los comandos en cola en orden tras la inicialización. Ejemplo:
Argumentos
Los valores de metadatos son accesibles mediante exportaciones de datos en bruto y la página de resultados.Si proporciona el parámetro
metadata, Kameleoon usa esos valores para la conversión actual en lugar de los valores que hubiera recopilado previamente mediante setCustomData(). Si omite el parámetro, Kameleoon usa los últimos valores de customData registrados antes de la conversión en la misma visita.Kameleoon solo tiene en cuenta los valores de metadatos que se pasan directamente al método processConversion(); ignora los datos personalizados previamente establecidos. En el siguiente ejemplo, la conversión se asocia únicamente con los metadatos proporcionados (por ejemplo, índice 5 con ‘Amex Credit Card’).triggerGoal (Custom Code for Custom Goal)
Para disparar custom goals, inyecte código personalizado creando un nuevo objetivo y añadiendo el código al panel Trigger my goal.
triggerGoal() dispara el objetivo desde el panel de código sin necesidad de un ID de objetivo.
Argumentos
Los valores de metadatos son accesibles mediante exportaciones de datos en bruto y la página de resultados.Si proporciona el parámetro
metadata, Kameleoon usa esos valores para la conversión actual en lugar de los valores que hubiera recopilado previamente mediante setCustomData(). Si omite el parámetro, Kameleoon usa los últimos valores de customData registrados antes de la conversión en la misma visita.Kameleoon solo tiene en cuenta los valores de metadatos que se pasan directamente al método triggerGoal(); ignora los datos personalizados previamente establecidos. En el siguiente ejemplo, la conversión se asocia únicamente con los metadatos proporcionados (por ejemplo, índice 5 con ‘Amex Credit Card’).Kameleoon.API.Data
Este módulo proporciona métodos para establecer datos personalizados que permiten hacer seguimiento de las características del cliente o de la visita. También incluye métodos de gestión de datos para recuperar y escribir datos en el LocalStorage unificado de Kameleoon.readLocalData
readLocalData() lee los datos locales que haya almacenado previamente mediante writeLocalData(). El motor recupera estos datos del Local Storage unificado, evitando las limitaciones estándar de almacenamiento.
Argumentos
Valor de retorno
performRemoteSynchronization
performRemoteSynchronization() dispara una Server Synchronization Call (SSC) a la Data API. Esta llamada recupera el historial de visitas almacenado en los servidores backend de Kameleoon para el visitante actual y lo escribe en LocalStorage. Esto garantiza que los datos sean accesibles a través de la Activation API y estén disponibles para la segmentación. Este método se ejecuta normalmente de forma automática para la reconciliación entre dispositivos o para Safari ITP; no requiere invocación manual.
Argumentos
resetCustomData
resetCustomData() restablece el valor de un dato personalizado.
Argumentos
retrieveDataFromRemoteSource
retrieveDataFromRemoteSource() recupera datos almacenados en un servidor remoto de Kameleoon con la key especificada. Este método permite recuperar datos almacenados previamente mediante la Data API. Úselo para almacenar y recuperar rápidamente grandes volúmenes de datos de visitantes.
Este mecanismo asincrónico requiere una función callback cuando se complete la llamada al servidor.
Argumentos
setCustomData
setCustomData() establece el valor de un dato personalizado.
Argumentos
writeLocalData
writeLocalData() registra datos locales en el navegador del visitante para su posterior recuperación mediante readLocalData(). El motor los almacena como datos de sesión unificados en Local Storage, evitando las limitaciones estándar de almacenamiento. Los datos quedan disponibles inmediatamente para su recuperación en la misma pestaña a través de caché en RAM, mientras que la escritura física se realiza de forma asincrónica.
Argumentos
Kameleoon.API.Events
Este módulo dispara eventos personalizados para la segmentación de experimentos y personalizaciones. Consulte la documentación de eventos de la Activation API para conocer los eventos DOM estándar.trigger
trigger() dispara un evento personalizado para los segmentos de segmentación.
Argumentos
Kameleoon.API.Tracking
Este módulo integra los resultados de Kameleoon con plataformas externas de seguimiento y analítica, como Adobe Analytics (Omniture).processOmniture
s_doPlugins(). Realice estos pasos dentro de la función:
- Añada una llamada a
Kameleoon.API.Tracking.processOmniture(). - Establezca la variable global
window.kameleoonOmnitureCallSententruepara hacer seguimiento de la transmisión de la llamada inicial. Aunque puede establecer esta variable en otro lugar, debería hacerlo dentro des_doPlugins().
Argumentos
Kameleoon.API.Products
Este módulo proporciona acceso al catálogo de productos. Úselo para registrar vistas de producto o compras, añadir productos a un carrito, recuperar recomendaciones u obtener estadísticas de producto, como vistas y compras por hora o por día.Este módulo está disponible al suscribirse al módulo Product Recommendation o al add-on Product Targeting.
obtainRecommendedProducts
obtainRecommendedProducts() recupera los productos recomendados calculados por el algoritmo especificado mediante una llamada asincrónica al servidor.
Argumentos
Parámetros para controlar los datos devueltos por la plataforma de recomendaciones
Respuesta de la API
La función callback recibe el objeto de respuesta de la API con los siguientes valores.trackAddToCart
trackAddToCart() se dispara cuando un visitante añade un producto al carrito de la compra.
Argumentos
Parámetros para la plataforma de recomendaciones
trackAddToWishList
trackAddToWishList() se ejecuta cuando un visitante añade o elimina un producto de la wish list o de favoritos.
trackCategoryView
trackCategoryView() se ejecuta para cada vista de página de categoría durante una sesión.
Argumentos
trackProductView
trackProductView() se ejecuta para cada vista de producto durante una sesión. Este método permite a Kameleoon construir un catálogo de productos automatizado sin una integración de feed XML, lo que simplifica la configuración de proyectos de recomendación de productos.
Argumentos
trackSearchQuery
trackSearchQuery() registra las consultas de búsqueda del usuario.
Argumentos
trackTransaction
trackTransaction() se ejecuta cuando se produce una transacción o compra.
Argumentos
Parámetros adicionales para trackTransaction
obtainInstantSearchProducts
obtainInstantSearchProducts() recupera resultados de búsqueda instantánea personalizados de Kameleoon Search mediante una llamada asincrónica al servidor.
Argumentos
Respuesta de la API
La función callback recibe el objeto de respuesta de la API con los siguientes valores.obtainFullSearchProducts
obtainFullSearchProducts() para recuperar resultados de búsqueda completos de la solución Kameleoon Search con opciones de filtrado.
Argumentos
Parámetros para filtrar resultados
Respuesta de la API
La función callback recibe el objeto de respuesta de la API con los siguientes valores.obtainProductInteractions
obtainProductInteractions() recupera métricas de interacción de productos rastreados mediante trackProductView(), trackTransaction() o trackAddToCart().
Argumentos
Respuesta de la API
obtainProductData
obtainProductData() recupera la información de los productos enviados mediante trackProductView().
Argumentos
Respuesta de la API
obtainRecommendedCollections
obtainRecommendedCollections() recupera los productos de la colección especificada.
Argumentos
Respuesta de la API
Products
La API devuelve un array de objetos. Cada objeto del arrayproducts contiene lo siguiente:
Kameleoon.API.Experiments
Este módulo proporciona métodos para acceder a los experimentos en directo.Este módulo solo está disponible con la solución Kameleoon Web Experimentation.
assignVariation
assignVariation() fuerza la asociación de una variación específica a un experimento, lo que anula el algoritmo de asignación estándar. Si lo llama antes de que el experimento se dispare, el motor preasigna la variación para su activación posterior. Si el experimento ya se ha disparado, establezca el argumento override en true para reemplazar la asociación existente.
Argumentos
block
block() evita que un experimento se dispare o se active, incluidas las llamadas manuales a trigger(). El bloqueo se aplica a la página actual por defecto hasta la próxima llamada a Kameleoon.API.Core.load(). Establezca el argumento visit en true para bloquear el experimento durante toda la visita.
Argumentos
getAll
getAll() devuelve todos los experimentos en directo (en ejecución; no en borrador/pausados/detenidos).
Valor de retorno
getActive
getActive() devuelve los experimentos activos para la visita y página actuales. Un experimento está activo si su código de variación se ha ejecutado en el contexto de la sesión actual. Para recuperar experimentos que activó en otras URL durante la visita, use getActivatedInVisit().
Valor de retorno
getById
getById() devuelve el experimento con el ID especificado.
Argumentos
Valor de retorno
getByName
getByName() devuelve el experimento con el nombre especificado.
Argumentos
Valor de retorno
getTriggeredInVisit
getTriggeredInVisit() devuelve todos los experimentos disparados durante la visita actual.
Valor de retorno
getActivatedInVisit
getActivatedInVisit() devuelve todos los experimentos activados durante la visita actual.
Valor de retorno
trigger
trigger() fuerza el disparo de un experimento, omitiendo las condiciones de segmentación. Esta acción inicia el experimento pero puede no activarlo.
Argumentos
Kameleoon.API.Personalizations
Este módulo proporciona métodos para acceder a las personalizaciones en directo.disable
disable() marca una personalización como desactivada. Úselo para elementos interactivos como pop-ins. Cuando un usuario cierre el elemento, llame a disable() para actualizar el estado de la personalización. Kameleoon implementa automáticamente esta llamada para elementos nativos de la interfaz no personalizados.
Argumentos
getActive
getActive() devuelve las personalizaciones activas para la visita y página actuales. Una personalización está activa si su código de variación se ha ejecutado y la acción asociada sigue visible. Para recuperar personalizaciones disparadas en otras URL o que ahora están cerradas, como los pop-ins, use getTriggeredInVisit().
Valor de retorno
getAll
getAll() devuelve todas las personalizaciones en directo (en ejecución; no en borrador/pausadas/detenidas).
Valor de retorno
getById
getById() devuelve la personalización con el ID especificado.
Argumentos
Valor de retorno
getByName
getByName() devuelve la personalización con el nombre especificado.
Argumentos
Valor de retorno
getTriggeredInVisit
getTriggeredInVisit() devuelve todas las personalizaciones disparadas durante la visita actual.
Valor de retorno
getActivatedInVisit
getActivatedInVisit() devuelve todas las personalizaciones activadas durante la visita actual.
Valor de retorno
trigger
trigger() fuerza el disparo de una personalización, omitiendo las condiciones de segmentación. Esta acción inicia la personalización pero puede no activarla.
Argumentos
Kameleoon.API.Variations
Este módulo proporciona métodos para gestionar variaciones.execute
execute() ejecuta el JavaScript y aplica el CSS de la variación con el ID especificado.
Kameleoon.API.Segments
Este módulo proporciona métodos para gestionar segmentos y segmentación.getAll
getAll() devuelve todos los segmentos en directo, incluidos los asociados a experimentos, personalizaciones o al seguimiento de Audiences.
Valor de retorno
getById
getById() devuelve el segmento con el ID especificado.
Argumentos
Valor de retorno
getByName
getByName() devuelve el segmento con el nombre especificado.
Argumentos
Valor de retorno
reevaluate
reevaluate() fuerza una nueva evaluación inmediata de las condiciones de segmentación del segmento especificado. La evaluación se produce normalmente al cargar la página, dando como resultado estados true, false o undefined. Este método reinicia el proceso de evaluación como si el motor acabara de inicializarse.
Argumentos
trigger
trigger() fuerza el disparo de un segmento para el visitante actual y omite las condiciones de segmentación.
Argumentos
Kameleoon.API.Triggers
Este módulo proporciona métodos para gestionar triggers y segmentación.getAll
getAll() devuelve todos los triggers en directo, incluidos los asociados a experimentos, personalizaciones o al seguimiento de Audiences.
Valor de retorno
getById
getById() devuelve el trigger con el ID especificado.
Argumentos
Valor de retorno
getByName
getByName() devuelve el trigger con el nombre especificado.
Argumentos
Valor de retorno
reevaluate
reevaluate() fuerza una nueva evaluación inmediata de las condiciones de segmentación del trigger especificado. La evaluación se produce normalmente al cargar la página, dando como resultado estados true, false o undefined. Este método reinicia el proceso de evaluación como si el motor acabara de inicializarse.
Argumentos
trigger
trigger() fuerza el disparo de un trigger para el visitante actual y omite las condiciones de segmentación.
Argumentos
Kameleoon.API.Utils
Este módulo proporciona métodos de utilidad para operaciones comunes.addEventListener
addEventListener() asocia un manejador de eventos al elemento especificado.
Kameleoon reinicia todos los event listeners creados a través de esta API durante las recargas del motor. Use este método para añadir listeners en SPAs y garantizar una limpieza adecuada.
Argumentos
addUniversalClickListener
addUniversalClickListener() asocia un manejador de clic que escucha clics de ratón en escritorio y eventos de touchdown en dispositivos móviles y tablets. En dispositivos móviles, se produce un touchdown si el motor detecta un evento touchstart seguido de un evento touchend sin un touchmove intermedio.
Kameleoon reinicia todos los listeners creados a través de esta API durante las recargas del motor, lo que facilita la limpieza en SPAs.
En dispositivos de escritorio, los clics derechos también disparan este método (por ejemplo, al abrir un enlace en una nueva pestaña).
Argumentos
clearInterval
clearInterval() cancela un temporizador que estableció mediante setInterval().
Argumentos
clearTimeout
clearTimeout() cancela un temporizador que estableció mediante setTimeout().
Argumentos
computeHash
computeHash() calcula un hash a partir de una cadena. Úselo para procesar datos únicos sin manipular directamente información personal sensible.
Argumentos
Valor de retorno
getURLParameters
getURLParameters() analiza la URL actual y devuelve todos los parámetros detectados. Este método admite tanto los parámetros de búsqueda (?) como los de hash (#).
Valor de retorno
performRequest
performRequest() inicia una llamada a un servidor web remoto.
Argumentos
querySelectorAll
querySelectorAll() devuelve todos los elementos del documento que coincidan con los selectores CSS especificados como un objeto NodeList estático.
Este método admite selectores con :contains y :eq.
Argumentos
Valor de retorno
setInterval
setInterval() ejecuta una función o expresión en el intervalo especificado en milisegundos.
Kameleoon reinicia todos los intervalos creados a través de esta API durante las recargas del motor. Use este método en SPAs para garantizar una limpieza adecuada.
Argumentos
Valor de retorno
setTimeout
setTimeout() ejecuta una función o expresión tras el número de milisegundos especificado.
Kameleoon reinicia todos los timeouts creados a través de esta API durante las recargas del motor. Use este método en SPAs para garantizar una limpieza adecuada.
Argumentos
Valor de retorno
Kameleoon.API.Visitor
Este módulo proporciona un acceso directo para obtener una referencia al objeto Visitor actual. La Activation API contiene un único objeto Visitor. Este módulo también permite anular el código de visitante.setVisitorCode
setVisitorCode() anula el VisitorCode de Kameleoon, que es un identificador único generado aleatoriamente para cada visitante. Asegúrese de que su ID sea único y no supere los 255 caracteres.
Llame a este método lo antes posible, concretamente antes de que Kameleoon dispare cualquier experimento. Si actualiza el VisitorCode después de que el motor asigne una variación, el motor reasignará la variación.
Kameleoon.API.CurrentVisit
Este módulo proporciona un acceso directo para obtener una referencia al objeto Visit actual en curso. Hace referencia al mismo objeto queKameleoon.API.Visitor.visits[Kameleoon.API.Visitor.visits.length - 1].
Configuration
Un objeto Configuration contiene valores constantes globales relacionados con la configuración actual de Kameleoon en este sitio.Propiedades
Visitor
Un objeto Visitor contiene datos a nivel de visitante independientes de visitas específicas. Este objeto incluye una lista de todos los objetos Visit del visitante.Propiedades
Visit
Un objeto Visit representa una sola visita y contiene información en tiempo real que recopila Kameleoon. Los puntos de datos incluyen el contexto de la visita (dispositivo, ubicación), el comportamiento observado (duración, páginas vistas) y las operaciones de Kameleoon, como los experimentos o personalizaciones disparados.Propiedades
La propiedad
kameleoonConversionScores solo está disponible con el add-on AI Predictive Targeting.Device
Un objeto Device contiene datos sobre el dispositivo de una visita determinada.Propiedades
Geolocation
Un objeto Geolocation contiene datos sobre la ubicación física del visitante para una visita determinada.Propiedades
Weather
Un objeto Weather contiene datos sobre las condiciones meteorológicas en el momento de la visita.Propiedades
Experiment
Un objeto Experiment representa un A/B test de Kameleoon. Las propiedades principales incluyen el segmento y las variaciones asociadas. Las variaciones contienen el código JavaScript y CSS que implementa los cambios.Propiedades
Personalization
Un objeto Personalization representa una acción de personalización de Kameleoon para un segmento específico. Las propiedades principales incluyen el segmento y la única variación asociada. El objeto Variation contiene el código JavaScript y CSS que implementa la acción de personalización.Propiedades
ExperimentActivation
Un objetoExperimentActivation representa un experimento activado durante una visita específica. Como las visitas pueden ser históricas, el experimento asociado puede haberse detenido. En tal caso, el motor no inyecta los metadatos del experimento (nombre, fecha de lanzamiento, segmento) en el archivo de la aplicación, lo que los hace inaccesibles a través de la API. Sin embargo, los IDs siguen disponibles.
Propiedades
PersonalizationActivation
Un objetoPersonalizationActivation representa una personalización activada durante una visita específica. Al igual que con los experimentos, los metadatos no están disponibles si la personalización se ha detenido, aunque los IDs siguen siendo accesibles.
Propiedades
Variation
Un objetoVariation representa un componente de un Experiment. Un A/B test contiene varias variaciones, como un A/B test con una variación más la referencia o un A/B/C test con dos más la referencia. Las personalizaciones se asocian con un único objeto Variation.
Durante la ejecución del código de la variación, la palabra clave
this hace referencia al objeto Variation correspondiente. Use esta referencia para navegar por la jerarquía de objetos (por ejemplo, a través de la propiedad associatedCampaign).Propiedades
Template
Un objetoTemplate representa una plantilla de Widget instanciada. Use plantillas para generar variaciones desde una base de código común mediante la interfaz de la app de Kameleoon. Un objeto Template contiene campos predefinidos y sus valores para la variación asociada.
Propiedades
Goal
Un objetoGoal representa un Key Performance Indicator (KPI) definido en la app de Kameleoon.
Propiedades
Segment
Un objetoSegment contiene criterios que una visita debe cumplir para pertenecer al segmento. En la plataforma Kameleoon, los segmentos incluyen condiciones constantes, como la edad o la ubicación, y condiciones de disparo, como el tiempo en página o el contenido del carrito.
Propiedades
Trigger
Un objeto Trigger contiene criterios que una visita debe cumplir para disparar el trigger. En la plataforma Kameleoon, los triggers incluyen condiciones constantes, como la edad o la ubicación, y condiciones de disparo, como el tiempo en página o el contenido del carrito.Propiedades
Product
Un objetoProduct describe los artículos de un catálogo. La mayoría de las propiedades son opcionales y pueden ser null.