Este artículo es una guía sencilla sobre cómo utilizar la API de CLUe para recuperar registros de eventos del servidor de CLUe.
A continuación se usan ejemplos de CURL y C# WPF .NET.
TABLA DE CONTENIDOS
Prerrequisito
Para utilizar la API de CLUe, debe tener la siguiente información proporcionada.
- El PlaceID de tu tienda
- Clave de API
- Dispositivo conectado a CLUe para la autenticación
Registrar usuario
Para autenticar al usuario en el dispositivo, primero debe registrar al usuario en CLUe.
A continuación, los usuarios se sincronizan automáticamente con los dispositivos conectados en tiempo real.
1. Punto final y parámetros de la API
[PUBLICACIÓN] https://api.moon.supremainc.com/v1/be/places/:placeId/auths
Encabezado de la solicitud:
Llave | Tipo | Obligatorio | Valor |
Autorización | JWT Token | Sí | Usar la clave de API obtenida de Suprema |
Tipo de contenido | Cuerda | Sí | aplicación/json |
Aceptar | Cuerda | Sí | */* |
Variables de ruta:
Llave | Tipo | Obligatorio | Descripción |
placeId | Número | Sí | El placeID asignado de tu tienda. Por favor, solicite información a Suprema |
2. Cuerpo de la solicitud
Solicite la siguiente información a su agente de Suprema.
Campo | Tipo | Obligatorio | Observaciones |
usuario | Objeto | Sí | |
user.name | Cuerda | Sí | |
user.key | Cuerda | Sí | Clave única que el cliente puede definir. |
Auth | Objeto | Sí | |
auth.activeStatus | Cuerda | Sí | ACTIVO o INACTIVO |
auth.startTime | Número | Sí | Tiempo Unix (milisegundo de época) |
auth.endTime | Número | Sí | Tiempo Unix (milisegundo de época) |
auth.doorAccessType | Cuerda | Sí | ALL_DOOR o SPECIFIC** Si es SPECIFIC, enumere las puertas en auth.doorIds |
auth.scheduleType | Cuerda | Sí | ALWAYS o SPECIFIC** Si es SPECIFIC, enumere la programación en auth.scheduleId |
auth.scheduleId | Cuerda | ||
auth.doorIds | Arreglo | Lista de puertas | |
auth.credentials | Objeto | Sí | |
auth.credentials.cards | Arreglo | lista de ID de tarjeta (decimal) | |
auth.credentials.faceImages | Cuerda | Imagen base64 | |
auth.credentials.pin | Número | ||
autenticación.credenciales.teléfono | Número |
Muestra:
curl --location 'https://api.moon.supremainc.com/v1/be/places/178/auths' \
--header 'Content-Type: application/json' \
--header 'Autorización: ••••••' \
--datos '{
"usuario": {
"key": "1234567",
"name": "namehere"
},
"autenticación": {
"startTime": 1718809200000,
"endTime": 1718895540000,
"doorAccessType": "ESPECÍFICO",
"doorIds":[234, 235,236],
"scheduleType":"ESPECÍFICO",
"scheduleId":333,
"credenciales": {
"cartas": [
{
"cardNumber": "12345",
"formatType": "CSN"
}
],
"faceImages":["/9j/4AAQSkZJRgABAQAASABIAA..."]
},
"activeStatus":"ACTIVO"
}
}'
Genérico
3. Cuerpo de respuesta
Campo | Tipo | Nullable | Observaciones |
código | Número | No | Código de respuesta de la API |
estado | Booleano | No | Estado de respuesta de la API |
Mensaje | Cuerda | No | Mensaje de respuesta de la API |
datos | Objeto | No | |
data.authId | Número | No | |
data.lastModifiedAt | Número | No | |
usuario | Objeto | No | |
user.userId | Número | No | |
user.key | Cuerda | No | |
user.name | Cuerda | No | |
user.realNameAuthStatusType | Cuerda | No | |
Auth | Objeto | No | |
auth.startTime | Número | No | |
auth.endTime | Número | No | |
auth.doorAccessType | Cuerda | No | |
auth.scheduleType | Cuerda | No | |
auth.scheduleId | Número | Sí | |
auth.doors | Objeto | Sí | |
auth.doors.doorId | Cuerda | Sí | |
auth.doors.doorName | Cuerda | Sí | |
auth.credentials | Objeto | Sí | |
auth.credentials.modes | Arreglo | Sí | |
auth.credentials.faceImages | Cuerda | Sí | |
auth.credentials.name | Cuerda | Sí | |
auth.activeStatus | Cuerda | No |
{
"código": 200,
"status": verdadero,
"message": "OK",
"datos": {
"authId": 118926,
"lastModifiedAt": 1718841401642,
"usuario": {
"userId": 106569,
"clave": "34DAB180-A14B-103B-8A4E-1166F21964DA",
"name": "prueba",
"realNameAuthStatusType": "REAL_NAME_AUTH_BEFORE"
},
"autenticación": {
"startTime": 1718809200000,
"endTime": 1718895540000,
"doorAccessType": "ESPECÍFICO",
"scheduleType": "ESPECÍFICO",
"scheduleId": 333,
"puertas": [
{
"doorId": 234,
"doorName": "SmartLight"
}
],
"credenciales": {
"modos": [
"CARA"
],
"faceImages": [
"Datos:Imagen/PNG; base64,iVBORw0KGgoAAAANSUhEUgAAAHAAAA..."
],
"name": "prueba"
},
"activeStatus": "ACTIVO"
}
}
}
HTML
Recuperar registros
1. Punto final y parámetros de la API
Encabezado de la solicitud:
Llave | Tipo | Obligatorio | Valor |
Autorización | JWT Token | Sí | Usar la clave de API obtenida de Suprema |
Tipo de contenido | Cuerda | Sí | aplicación/json |
Aceptar | Cuerda | Sí | */* |
Parámetro de consulta:
Llave | Tipo | Obligatorio | Descripción |
Hora de inicio | Tiempo Unix (milisegundos) | No | Recupere los registros a partir de esta fecha. Debe estar dentro de los 7 días a partir de la fecha de finalización.si no se especifica, se muestran todos los registros |
endTime | Tiempo Unix (milisegundos) | No | Recuperar registros hasta esta fechaSi no se especifica, se muestran todos los registros |
filterEvents | cuerda | No | Filtrar por eventos |
página | Número | No | Los registros se muestran en varias páginas. Si no se especifica, solo se muestran en 1 página. |
tamaño | Número | No | número de registros que se van a recuperar desde startTime |
q | cuerda | No | consulta |
ordenar | cuerda | No | ordene los registros por ID en orden ascendente ('asc') o descendente ('desc')Ejemplo: id,desc |
curl --location 'https://api.moon.supremainc.com/v1/be/events?startTime=1719932400000&endTime=1720623540000&filterEvents=DEV_FACE_AUTH_SUCCESS%2CDEV_FACE_AUTH_FAIL&page=0&size=200&sort=id%2Casc&placeId=' \
--header 'Autorización: Portador api_key_here'
Genérico
2. Cuerpo de la solicitud
Ninguno
3. Cuerpo de respuesta
Campo | Tipo | Nullable | Descripción |
código | Número | falso | Código de respuesta de la API |
estado | Booleano | falso | Estado de respuesta de la API |
Mensaje | Cuerda | falso | Mensaje de respuesta de la API |
total | Número | falso | Número total de registros recuperados. |
data.logId | Número | falso | CLUe el ID de registro del lado del servidor. |
data.eventAt | Tiempo Unix | falso | Fecha y hora en que ocurrió el evento. |
data.placeId | Número | falso | ID de lugar |
data.deviceId | Número | verdadero | ID de dispositivo |
data.doorId | Número | verdadero | ID de la puerta |
data.doorName | Cuerda | verdadero | Nombre de la puerta |
data.authId | Número | verdadero | ID de autenticación |
data.userId | Número | verdadero | Clave de usuario |
data.useName | Cuerda | verdadero | Nombre de usuario |
datos.localLogId | Número | falso | ID de registro del lado del dispositivo |
data.eventType | Tipo de evento | falso | Tipo de evento |
{
"código": 200,
"status": verdadero,
"message": "OK",
"total": 75,
"datos": [
{
"logId": "XjIAM5ABcB2c2xupDI6m",
"eventAt": 1718842554980,
"placeId": 448,
"deviceId": 1343,
"doorId": 645,
"localLogId": 25280,
"eventType": "DEV_DOOR_RELAY_OFF"
},
{
"logId": "XTIAM5ABcB2c2xupDI6m",
"eventAt": 1718842553962,
"placeId": 448,
"deviceId": 1343,
"doorId": 645,
"localLogId": 25279,
"eventType": "DEV_DOOR_RELAY_ON"
},
{
"logId": "WzIAM5ABcB2c2xupDI6m",
"eventAt": 1718842553904,
"placeId": 448,
"authId": 107909,
"deviceId": 1343,
"doorId": 645,
"doorName": "SupremaJP_In",
"userId": "c2119100-fbb0-1fdf-82c6-7dba89b5fe29",
"userName": "jinlee",
"localLogId": 25278,
"eventType": "DEV_FACE_AUTH_SUCCESS"
},
{
"logId": "iI7-MpABqzmfp6-HrEH7",
"eventAt": 1718842462256,
"placeId": 448,
"deviceId": 1343,
"doorId": 645,
"localLogId": 25277,
"eventType": "DEV_DOOR_RELAY_OFF"
},
{
"logId": "h47-MpABqzmfp6-HrEH7",
"eventAt": 1718842461243,
"placeId": 448,
"deviceId": 1343,
"doorId": 645,
"localLogId": 25276,
"eventType": "DEV_DOOR_RELAY_ON"
}
]
}
HTML
Explicación del evento
- DEV_FACE_AUTH_SUCCESS - La plantilla de cara del usuario se registra en el servidor CLUe. Por lo tanto, es exitoso cuando el usuario se autentica desde el dispositivo
- VENDOR_AUTH_SUCCESS - Significa que el ID del usuario (ejemplo 64455 arriba) está registrado y se le permite el acceso desde el sistema de terceros.
- DEV_DOOR_RELAY_ON - El relé del dispositivo está encendido y la puerta está desbloqueada.
- DEV_DOOR_RELAY_OFF - El relé del dispositivo está apagado y la puerta está bloqueada.
Ejemplo de flujo de eventos para el éxito de la autenticación
Ejemplo de flujo de eventos para la autenticación fallida (lado CLUe)
Ejemplo de flujo de eventos para la autenticación fallida (lado del sistema de terceros)