Crear persona
Registra una persona en la sede y la envía a los terminales en la misma llamada; sync.status en la respuesta dice si todos la recibieron. Se envía como multipart/form-data, con la foto como archivo opcional. Un empleado necesita un grupo; un visitante, un nivel de acceso o una lista de terminales, y siempre una fecha de fin.
IntegrationKeyX-Integration-Key<token>Tu clave de integración. Se crea en la consola de Fusehub, en Herramientas de desarrollo → API Keys.
site_id*Site IdCódigo de la sede.
multipart/form-data- body
externalPersonId*ExternalpersonidIdentificador propio de la persona, por ejemplo su número de empleado. Con él se consulta y modifica después.
userType?Usertypenormal (empleado) o visitor (visitante).
"normal"hasExpiration*Hasexpirationtrue si el acceso vence; exige startTime y endTime. Con false no se envían fechas. Para visitantes siempre es true.
startTime?|Inicio del acceso en hora local de la sede, por ejemplo 2026-10-06T09:00:00. Obligatorio si hasExpiration es true.
endTime?|Fin del acceso en hora local de la sede, por ejemplo 2026-10-06T18:00:00. Obligatorio si hasExpiration es true.
accessGroupId?|Código del grupo. Obligatorio para empleados.
accessLevelId?|Código del nivel de acceso. Solo para visitantes, en lugar de deviceSerials.
deviceSerials?|Solo para visitantes: números de serie de los terminales, separados por coma. Fusehub arma un nivel de acceso temporal con sus puertas.
maxOpenDoorTime?|Cantidad máxima de entradas del visitante (0 a 1000). 0 es sin límite.
name?|Nombre completo.
givenName?|Nombre.
familyName?|Apellido.
photo?|Foto de la cara en JPEG o PNG, como archivo (no en Base64). Opcional.
OK
application/json- response
ok?Oktrueperson*deviceLinks?array<>accessLevels?array<>directAccessLevels?array<>groups?array<>accessStatus?|granted (tiene acceso), denied (no tiene niveles de acceso) o expired (su acceso venció).
sync?|Resultado del envío a los terminales. Viene al crear, modificar o reenviar la persona.
[key: string]?anycurl -X POST 'https://api.fusehub.lat/api/integration/v1/sites/string/acs/persons/provision' \ -F 'externalPersonId=string' \ -F 'hasExpiration=string'{ "ok": true, "person": { "id": "00000000-0000-4000-8000-000000000101", "siteId": "00000000-0000-4000-8000-000000000044", "externalPersonId": "invite-9001", "name": "Invitado Demo", "enabled": true, "validFrom": "2026-10-06T09:00:00", "validTo": "2026-10-06T18:00:00", "userType": "visitor", "maxOpenDoorTime": 3, "accessStatus": "granted" }, "deviceLinks": [], "accessLevels": [ { "id": "aa10c4d2-1e77-4b90-8c33-91f0a2b64d10", "name": "Visitantes", "kind": "permanent", "doorBindings": [ { "deviceId": "00000000-0000-4000-8000-000000000163", "doorNos": [ 1 ], "deviceSerial": "DS-K1T343-ABC", "serialNumber": "DS-K1T343-ABC", "shortSerial": "ABC" } ] } ], "directAccessLevels": [], "groups": [], "accessStatus": "granted", "sync": { "status": "synced", "applied": 1, "failed": 0, "results": [ { "deviceId": "00000000-0000-4000-8000-000000000163", "serial": "DS-K1T343-ABC", "deviceSerial": "DS-K1T343-ABC", "shortSerial": "ABC", "ok": true } ] }}