Ir al contenido
Fusehub
ACS

Actualizar persona

PUT
/api/integration/v1/sites/{site_id}/acs/persons/by-external/{external_person_id}

Actualiza vigencia, tipo de usuario, acceso o foto de una persona existente. Body multipart/form-data: solo se modifican los campos enviados. photo opcional reemplaza la foto; si se omite, se conserva. Resincroniza a los terminales del nivel o grupo.

Autenticación

IntegrationKey
headerX-Integration-Key<token>

Clave de integración (fhint_…). Consola Fusehub → Herramientas de desarrollo → API Keys.

site_id*Site Id

UUID Fusehub de la sede.

external_person_id*External Person Id

Id externo de la persona (employeeNo en el terminal).

multipart/form-data
  1. body
userType?|

Tipo de usuario: normal o visitor. Omitido = sin cambio.

hasExpiration?|

true o false. Con true requiere startTime y endTime.

startTime?|

Inicio de vigencia (ISO local).

endTime?|

Fin de vigencia (ISO local).

accessGroupId?|

UUID del grupo de acceso.

accessLevelId?|

UUID del nivel de acceso.

deviceSerials?|

Seriales de terminal separados por coma. Crea o reutiliza un nivel temporal si no hay grupo ni nivel.

maxOpenDoorTime?|

Tope de accesos para visitante (0–1000). 0 = sin límite.

name?|

Nombre completo.

givenName?|

Nombre.

familyName?|

Apellido.

photo?|

Foto JPEG/PNG. Si se omite, se conserva la actual.

Cuerpo de la respuesta

OK

application/json
  1. response
ok?Ok
Por defectotrue
person*
deviceLinks?array<>
accessLevels?array<>
directAccessLevels?array<>
groups?array<>
accessStatus?|

granted | denied | expired.

sync?|

Presente tras provision, update o foto.

[key: string]?any
Ejemplo de petición
curl -X PUT 'https://api.staging.fusehub.lat/api/integration/v1/sites/string/acs/persons/by-external/string'
Ejemplo de respuesta
{  "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      }    ]  }}