El punto 1 no me quedo claro. Lo que entendí es que solo quieres usar X y Z, entonces decirle al widget que use X y Z solamente excluyendo el resto??.
Para el punto 2 y 3 es un tema complejo que aun no tenemos una solución aunque se aceptan sugerencias. Al leer “callback” y dado que estamos hablando del widget, me imagino un callback de JavaScript. Si lo que estoy asumiendo es correcto le veo un detalle que no tiene solución sencilla.
En el mejor de los casos funcionaria bien, pero esto no va a suceder siempre. Con mejor de los casos me refiero que la lentitud de la red sea favorable y que la cantidad de transacciones no sea un volumen considerable. Si algunas de estas dos condiciones no se cumple pues podemos dejar al usuario esperando mucho tiempo y tal vez no sea lo mejor.
El proceso corre asincronamente y no siempre va a terminar en un tiempo razonable o si hay timeouts de red puede que se re intente después de cierto tiempo. Entonces es cuestión de ver que podemos hacer aquí.
Lo que si se puede saber de una manera rápida y fácil es si las credenciales son validas o no. Tal vez se puede llegar a un punto de equilibrio usando ese estatus, y haciendo una promesa que los datos se verán reflejados en un tiempo posterior.
Regresando al tema de los callbacks, si no te referias a un callback especificamente de JavaScript, si no como un termino más global. Tenemos pensando usar web hooks para comunicarnos con los back end de los clientes para notificar que hay datos nuevos que pueden sincronizar. Aunque esta lógica se tendría que desarrollar por parte de ellos, así como exponer un servicio para llamar al web hook.
Efectivamente me refería a callbacks al estilo de backbone.js o promesas de javascript como también las conocen, bastaría con que regrese el id_account si las credenciales de la cuenta fueron exitosas, descargar las transacciones me parece excesivo para el widget, con tener el account_id el API hace el resto, (de otra forma relacionar cuentas y transacciones se vuelve una tarea épica)
Opcionalmente crees que yo pueda proporcionarte un external_account_id para ligar el external_id de la cuenta y así poder identificar transacciones y cuentas creadas con el widget con facilidad?
Nota:
Esto solo funciona para una cuenta a la vez, si se quisieran cubrir todos los casos de uso, podría solicitarse un objeto {bancomer : external_id}…