Nodeflux Central
Enrollment

Enrollment API

Endpoint untuk mendaftarkan, menghapus, dan menginspeksi enrollment wajah dalam keyspace.

Endpoint delete-enrollment dan delete-enrollment-variation menggunakan method POST dengan body request — bukan DELETE HTTP method. Ini intentional dari desain API FREMIS-N.


Mendaftarkan Wajah Baru ke Keyspace

Mendaftarkan identitas wajah baru dari gambar yang dienkode dalam base64 ke dalam keyspace yang ditentukan. Mendukung validasi kualitas gambar (IQA) melalui additional_params dan dapat mengembalikan metrik kualitas jika return_iqa_result diaktifkan.

POST
/v1/face/enrollment

Authorization

bearerAuth
AuthorizationBearer <token>

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

text/plain

application/json

application/json

application/json

curl -X POST "https://fremis-n.example.com/v1/face/enrollment" \  -H "Content-Type: application/json" \  -d '{    "image": "<base64-encoded-image>",    "keyspace": "karyawan-jakarta",    "additional_params": {      "face_id": "budi-001",      "min_brightness": 0.5,      "min_sharpness": 0.3,      "min_contrast": 0.4,      "return_iqa_result": true    }  }'
{  "face_id": "budi-001",  "face_detected": [    {      "top": 0.1,      "left": 0.2,      "height": 0.3,      "width": 0.25    }  ],  "image_quality": {    "bounding_box": {      "top": 100,      "left": 150,      "height": 200,      "width": 200    },    "brightness": 0.8,    "sharpness": 0.7,    "contrast": 0.6  }}
{  "message": "Bad quality image",  "image_quality": {    "brightness": 0.3,    "sharpness": 0.2,    "contrast": 0.4  },  "threshold": {    "min_brightness": 0.5,    "min_sharpness": 0.3,    "min_contrast": 0.4  }}
{  "message": "Unauthorized"}
"Can't create new enrollment, limit is exceeded"
{  "message": "Too Many Requests"}
{  "message": "Internal Server Error"}
{  "message": "Service Unavailable"}

Mendaftarkan Wajah dari Embedding

Mendaftarkan identitas wajah menggunakan vektor embedding yang telah dihitung sebelumnya (pre-computed embedding). Berguna ketika proses ekstraksi embedding dilakukan di sisi klien atau oleh sistem lain.

POST
/v1/face/enrollment-by-embedding

Authorization

bearerAuth
AuthorizationBearer <token>

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

text/plain

application/json

application/json

application/json

curl -X POST "https://fremis-n.example.com/v1/face/enrollment-by-embedding" \  -H "Content-Type: application/json" \  -d '{    "vector": [      0.1,      0.2,      0.3    ],    "keyspace": "vip-customers",    "additional_params": {      "face_id": "siti-002"    }  }'
{  "face_id": "siti-002",  "face_detected": []}
{  "message": "Bad Request"}
"Can't create new enrollment, limit is exceeded"
{  "message": "Too Many Requests"}
{  "message": "Internal Server Error"}
{  "message": "Service Unavailable"}

Menghapus Enrollment Wajah

Menghapus satu atau beberapa enrollment wajah dari keyspace berdasarkan daftar face_ids. Operasi ini bersifat permanen dan tidak dapat dibatalkan.

POST
/v1/face/delete-enrollment

Authorization

bearerAuth
AuthorizationBearer <token>

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://fremis-n.example.com/v1/face/delete-enrollment" \  -H "Content-Type: application/json" \  -d '{    "face_ids": [      "budi-001",      "siti-002"    ],    "keyspace": "karyawan-jakarta"  }'
{  "deleted_face_ids": [    "budi-001",    "siti-002"  ]}
{  "message": "Bad Request"}
{  "message": "Too Many Requests"}
{  "message": "Internal Server Error"}
{  "message": "Service Unavailable"}

Menghapus Satu Variasi Enrollment

Menghapus variasi-variasi tertentu dari satu identitas wajah dalam keyspace. Berguna untuk membersihkan variasi yang buruk kualitasnya tanpa menghapus seluruh enrollment.

POST
/v1/face/delete-enrollment-variation

Authorization

bearerAuth
AuthorizationBearer <token>

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://fremis-n.example.com/v1/face/delete-enrollment-variation" \  -H "Content-Type: application/json" \  -d '{    "face_id": "budi-001",    "variations": [      "0",      "1"    ],    "keyspace": "karyawan-jakarta"  }'
{  "keyspace": "karyawan-jakarta",  "face_id": "budi-001",  "deleted_variations": [    "0",    "1"  ]}
{  "message": "Bad Request"}
{  "message": "Too Many Requests"}
{  "message": "Internal Server Error"}
{  "message": "Service Unavailable"}

Mendapatkan Daftar Enrollment dalam Keyspace

Mengembalikan daftar face_id yang terdaftar dalam suatu keyspace dengan dukungan pagination. Respons mencakup total jumlah identitas, total variasi, serta informasi halaman.

GET
/v1/face/keyspace/{keyspace_name}/enrollment

Authorization

bearerAuth
AuthorizationBearer <token>

In: header

Path Parameters

keyspace_name*string

Nama keyspace yang akan dikueri.

Query Parameters

limit?integer

Jumlah hasil per halaman (1–1000).

Default10
Range1 <= value <= 1000
page?integer

Nomor halaman, dimulai dari 1.

Default1
Range1 <= value

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://fremis-n.example.com/v1/face/keyspace/karyawan-jakarta/enrollment"
{  "total_face_id": 100,  "total_variation": 150,  "data": [    {      "face_id": "budi-001"    },    {      "face_id": "siti-002"    }  ],  "limit": 10,  "page": 1,  "pages": 10,  "count": 10}
{  "message": "Bad Request"}
{  "message": "Too Many Requests"}
{  "message": "Internal Server Error"}
{  "message": "Service Unavailable"}

Mendapatkan Info Enrollment Berdasarkan ID

Mengambil vektor embedding (rata-rata/agregasi) untuk face_id tertentu dalam keyspace. Berguna untuk keperluan verifikasi atau analisis embedding.

GET
/v1/face/keyspace/{keyspace_name}/id/{face_id}

Authorization

bearerAuth
AuthorizationBearer <token>

In: header

Path Parameters

keyspace_name*string

Nama keyspace tempat wajah terdaftar.

face_id*string

Pengenal unik wajah yang akan diambil embedding-nya.

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://fremis-n.example.com/v1/face/keyspace/karyawan-jakarta/id/budi-001"
{  "embedding": [    0.1,    0.2,    0.3  ]}
{  "message": "Bad Request"}
{  "message": "Too Many Requests"}
{  "message": "Internal Server Error"}
{  "message": "Service Unavailable"}

Mendapatkan Embedding Original Sebuah Variasi

Mengambil vektor embedding original (presisi tinggi, sebelum proses kuantisasi) untuk face_id tertentu dalam keyspace.

GET
/v1/face/keyspace/{keyspace_name}/id/{face_id}/original-embedding

Authorization

bearerAuth
AuthorizationBearer <token>

In: header

Path Parameters

keyspace_name*string

Nama keyspace tempat wajah terdaftar.

face_id*string

Pengenal unik wajah yang akan diambil original embedding-nya.

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://fremis-n.example.com/v1/face/keyspace/karyawan-jakarta/id/budi-001/original-embedding"
{  "embedding": [    0.1,    0.2,    0.3  ]}
{  "message": "Bad Request"}
{  "message": "Too Many Requests"}
{  "message": "Internal Server Error"}
{  "message": "Service Unavailable"}

Mendapatkan Info Wajah Lengkap

Mengambil metadata lengkap tentang satu enrollment wajah, termasuk nama keyspace, ID internal keyspace, dan nomor partisi penyimpanan.

GET
/v1/face/info/{keyspace_name}/{face_id}

Authorization

bearerAuth
AuthorizationBearer <token>

In: header

Path Parameters

keyspace_name*string

Nama keyspace tempat wajah terdaftar.

face_id*string

Pengenal unik wajah yang akan dikueri.

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://fremis-n.example.com/v1/face/info/karyawan-jakarta/budi-001"
{  "keyspace_name": "karyawan-jakarta",  "face_id": "budi-001",  "keyspace_id": 123,  "partition": 0}
{  "message": "Bad Request"}
{  "message": "Too Many Requests"}
{  "message": "Internal Server Error"}
{  "message": "Service Unavailable"}

Mendapatkan Daftar Variasi Sebuah Identitas

Mengembalikan semua variasi yang terdaftar untuk satu identitas wajah, dikelompokkan dalam satu objek. Setiap variasi menyertakan ID, waktu pembuatan, dan waktu pembaruan.

GET
/v1/face/get-variations/{keyspace_name}/{face_id}

Authorization

bearerAuth
AuthorizationBearer <token>

In: header

Path Parameters

keyspace_name*string

Nama keyspace tempat wajah terdaftar.

face_id*string

Pengenal unik wajah yang akan dikueri variasi-nya.

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://fremis-n.example.com/v1/face/get-variations/karyawan-jakarta/budi-001"
{  "keyspace_id": 123,  "name": "budi-001",  "partition_number": 0,  "variations": [    {      "id": 0,      "created_at": "2024-01-15 10:30:00",      "updated_at": "2024-01-15 10:30:00"    },    {      "id": 1,      "created_at": "2024-01-16 09:00:00",      "updated_at": "2024-01-16 09:00:00"    }  ]}
{  "message": "Bad Request"}
{  "message": "Too Many Requests"}
{  "message": "Internal Server Error"}
{  "message": "Service Unavailable"}

Mendapatkan Variasi Duplikat dalam Keyspace

Mengembalikan variasi-variasi duplikat yang ditemukan dalam suatu keyspace. Berguna untuk membersihkan data — endpoint ini saat ini mengembalikan identitas pertama yang memiliki duplikasi.

GET
/v1/face/get-duplicate-variations/{keyspace_name}

Authorization

bearerAuth
AuthorizationBearer <token>

In: header

Path Parameters

keyspace_name*string

Nama keyspace yang akan diperiksa duplikasi variasi-nya.

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://fremis-n.example.com/v1/face/get-duplicate-variations/karyawan-jakarta"
{  "keyspace_id": 123,  "name": "budi-001",  "partition_number": 0,  "variations": [    {      "id": 0,      "created_at": "2024-01-15 10:30:00",      "updated_at": "2024-01-15 10:30:00"    },    {      "id": 0,      "created_at": "2024-01-15 11:00:00",      "updated_at": "2024-01-15 11:00:00"    }  ]}
{  "message": "Bad Request"}
{  "message": "Too Many Requests"}
{  "message": "Internal Server Error"}
{  "message": "Service Unavailable"}

On this page