¿Documentación de widget desactualizada?

Hola. Estoy implementando el Widget como nos recomendaste. Estoy queriendo implementar una opción para que el usuario pueda modificar credenciales, y según la documentación debo de utilizar el elemento entrypoint.site. Pero al hacer eso el widget me arroja un error “widget.js:1 Uncaught ValidationError: “entrypoint” is not allowed”. Lo mismo con el elemento “navigation”.

¿Como puedo hacer para mostrar el widget de modo que un usuario pueda modificar credenciales existentes?

Gracias

Hola, ¿puedes por favor compartir la configuración que estás enviando al Widget?

He intentado de las siguientes 2 formas:

image
Esta me arroja el error previamente mencionado.

image
Este abre el widget, pero para crear nuevas credenciales. Aquí lo que no entiendo es por qué tengo que indicarle el site id, cuando lo que quiero modificar es la credencial.

Hola, ya veo el error.
El entrypoint debe de ir dentro de config de la siguiente forma

var syncWidget = new SyncWidget({
    token : token, 
    element: "#widget",
    config: {
        locale: 'es',
        entrypoint: {
            site: id_site,
        },
    }
});

Ah, perfecto. Entonces si quiero editar una credencial creada perviamente lo tengo que hacer con ese método? Como puedo diferenciar 2 credenciales del mismo sitio?

Si quieres que el usuario edite una credencial previamente creada, es decir, que vuelva a mandar tanto username como password sí sería de ésa forma.

Si quieres que sólo actualice el token, deberás utilizar el método
syncWidget.setEntrypointCredential(String<ObjectId> idCredential)

en lugar de
syncWidget.open()

Pero como hago para indicar qué credencial quiero modificar? Por que como dije antes, puedo tener mas de 1 credencial del mismo sitio. Si no es posible voy a tener que crear un usuario por cada cuenta bancaria que maneje en el sistema. Aparte, en las notificaciones de webhook recibo el evento credential_create y no tengo referencia a la credencial que estoy reemplazando. Estoy omitiendo algo aquí?

Gracias por tu tiempo.

De hecho, debes crear un Sync User con tu API KEY por cada usuario de tu sistema.
Para cada Sync User puedes crear una o varias credenciales, incluso pueden ser del mismo sitio.

Cada que tu creas una credencial para un usuario se te entrega un id_credential y tú debes almacenar ese ID, ya que toda la información tanto de Accounts como de Transactions se vincula a éste identificador, recuerda además que cada que haces un GET /accounts?id_credential=ID_CREDENTIAL o un GET /transactions?id_credential=ID_CREDENTIAL debes enviar el id_credential en Query Params.

Para obtenerlo del Widget puedes hacerlo de la siguiente forma

syncWidget.$on("updated",(data) => {
    console.log("ID Credential: " + data.id_credential);
});

Finalmente, tú puedes ejecutar un GET /credentials para obtener todas las credenciales que ha creado un usuario, el objeto Credential entrega la siguiente información:

{
    "id_credential": "5da8bb743cfb1f14100f823c",
    "id_user": "5d24bd243cfb1f77001f9ac2",    // ID del usuario al que pertenece
    "id_environment": "574894bf7848066d138b4571",    // Indica si es Sandbox o Prod
    "id_external": "", 
    "id_site": "56cf5728784806f72b8b456f",
    "id_site_organization": "56cf4ff5784806152c8b4568",
    "id_site_organization_type": "56cf4f5b784806cf028b4569",
    "id_organization": "56cf4ff5784806152c8b4568",
    "is_authorized": 1,       // Bandera que especifica si la credencial fue autorizada
    "is_locked": 0,       // Bandera que especifica si la credencial se ha detectado como bloqueada
    "is_twofa": 0,       // Bandera que especifica si la credencial require token
    "username": "A**********A",
    "code": 201,      // Código de la última sincronización
    "keywords": [], 
    "dt_authorized": 1578554728, // Fecha de la última autorización
    "dt_execute": 1571339124, // Fecha de la última ejecución
    "dt_refresh": 1578554733, // Fecha de la última vez que descargó movimientos
}