write:authentication (o read:authentication para listarlas). Nunca usan un token de usuario final ni una clave de API de verificación. En los ejemplos, MANAGEMENT_BASE es:
Dos formas de importar
Importar un archivo
1. Subir el archivo
Cada opción
keep_* es true salvo que envíes false. La llamada devuelve 202 con un trabajo. Una aplicación conserva como máximo 5 archivos subidos a la vez.
2. Revisar la simulación
Cada subida inicia una simulación. Comprueba a cada persona y no escribe nada. Consulta periódicamenteGET import-jobs/{id}/:
Una simulación fallida enumera sus errores. Corrige el archivo y vuelve a subirlo.
3. Iniciar la importación
POST import-jobs/{id}/start/ importa lo que comprobó la simulación y devuelve 202.
- Las personas se importan en lotes de 1000. Cada lote se confirma por separado.
- Solo se ejecuta una importación por aplicación a la vez (en caso contrario, se devuelve
import_running). - Una importación interrumpida se reanuda después de su último lote confirmado.
- Las personas ya importadas se omiten, así que puedes volver a ejecutar el mismo archivo.
- La persona que inició la importación recibe un correo electrónico cuando termina o se detiene.
Importar por lotes
Envía hasta 1000 personas por solicitud con unaidempotency_key de hasta 100 caracteres.
- Una simulación devuelve
200con el resultado y no realiza ninguna escritura. - Con
dry_run: false, una importación correcta devuelve201. Un lote con cualquier error devuelve400y no importa a nadie. - Repetir una solicitud confirmada con la misma clave devuelve su resultado registrado. La misma clave con un contenido distinto devuelve
400 {"idempotency_key": "different_payload"}. - Los parámetros de Firebase van en un objeto
firebase:{signer_key, salt_separator, rounds, mem_cost}. GET imports/lista los lotes confirmados.
Formato del archivo
JSON
Un array de personas, o un objeto cuyousers contiene el array.
CSV
Las mismas columnas de un solo valor, másgoogle_id, apple_id, github_id, microsoft_id, microsoft_tenant_id, organization_slug, organization_name y organization_role. Una persona que pertenece a varias organizaciones ocupa una línea por organización.
Duplicados y cuentas existentes
- Las líneas con el mismo correo electrónico se convierten en una sola persona. Una línea idéntica se cuenta como duplicado. Una línea con más vínculos, organizaciones o una aplicación de autenticación se fusiona.
- Dos hashes de contraseña, secretos de autenticación o roles en una organización distintos para una misma persona son errores. También lo es un
external_ido un identificador de sujeto de un proveedor que reclaman dos personas. - Si ya existe una cuenta con ese correo electrónico y la creó una importación anterior, la persona se omite (
already_imported). Si la persona se registró por su cuenta, se produce un erroridentity_conflict. Una importación nunca modifica una cuenta existente.
Contraseñas
Los parámetros de Firebase se almacenan cifrados y solo para esa aplicación. Cualquier otro formato, o un coste por encima de estos límites, implica que la persona necesita una contraseña nueva. Después del primer inicio de sesión correcto de una persona, Didit vuelve a almacenar su contraseña en su propio formato.
Personas sin una contraseña utilizable
Cuando una persona no tiene hash, o tiene uno no compatible, un intento con contraseña recibe la respuesta habitual de contraseña incorrecta. Además, Didit le envía por correo electrónico un enlace para establecer una contraseña nueva (válido durante 30 minutos, como máximo una vez al día). Esto solo ocurre cuando su correo electrónico está verificado, la cuenta no está bloqueada y el inicio de sesión con contraseña está activado. En el resultado,reset_required cuenta a las personas sin una contraseña utilizable. reset_emails cuenta a las que, entre ellas, tienen un correo electrónico verificado: solo a ellas se les puede contactar de esta forma. Las personas con un correo electrónico sin verificar no pueden iniciar sesión con contraseña. Aun así, pueden iniciar sesión con un código por correo electrónico si activas ese método.
Vínculos sociales, autenticadores y organizaciones
- Los vínculos sociales se conservan para los proveedores que tu aplicación ya tiene configurados, con su client ID actual. Así, cuando la persona vuelve a iniciar sesión, no necesita demostrar su correo electrónico. Los identificadores (subjects) de Google y GitHub son globales. Los de Apple son por equipo de desarrolladores y los de Microsoft, por registro de aplicación, por lo que esos vínculos solo coinciden si tu plataforma anterior usaba el mismo equipo o registro. Los vínculos a proveedores que no has configurado se cuentan como
social_unavailabley no se importan. - Las aplicaciones de autenticación (secretos TOTP: SHA-1, 6 dígitos, 30 segundos) se almacenan cifradas. Las personas importadas deben usarlas como segundo factor. No reciben códigos de recuperación.
- Las organizaciones que todavía no existen se crean a partir de su slug.
- Las claves de acceso no se pueden importar. Pertenecen a tu dominio de inicio de sesión anterior, por lo que las personas añaden una clave de acceso nueva después de iniciar sesión con Didit.
Resultados
Cada simulación (dry run), lote y trabajo devuelve el mismoresult:
Las respuestas nunca contienen hashes de contraseñas, valores de sal, secretos de autenticación ni valores de campos.
Antes de hacer el cambio
Haz pruebas en tu aplicación de sandbox:- el inicio de sesión con cada formato de contraseña que importes,
- el correo electrónico para establecer una contraseña nueva de una persona sin un hash utilizable,
- el inicio de sesión social y los códigos de autenticación de las personas importadas,
- la ejecución del mismo archivo dos veces.
vendor_data de cada persona coincide con el valor que usas para sus verificaciones y transacciones.