Pendahuluan
Selamat datang di dokumentasi API Sterilabel versi 1. API ini memungkinkan Anda untuk berinteraksi secara programatik dengan data sterilisasi, inventaris, dan proses yang ada di dalam aplikasi.
API ini didesain mengikuti prinsip REST dan mengembalikan respons dalam format JSON. Semua endpoint berada di bawah base URL berikut:
https://api.lifira.com/v1
Punya Feedback atau Permintaan Fitur?
Kami selalu terbuka untuk masukan. Silakan kirim email ke fscking@icloud.com.
Otentikasi
Setiap permintaan ke API harus menyertakan Kunci API yang valid di dalam HTTP Header `X-API-Key`. Kegagalan menyediakan kunci yang benar akan menghasilkan respons `401 Unauthorized`.
Kunci API dapat memiliki izin `read_only` atau `read_write`. Endpoint yang melakukan perubahan data (POST) akan menghasilkan `403 Forbidden` jika kunci yang digunakan bersifat `read_only`.
Alur Kerja Umum
Berikut adalah contoh alur kerja lengkap dari persiapan hingga pencetakan label menggunakan API:
- Buat Muatan: Panggil
POST /loadsuntuk membuat "keranjang" sterilisasi baru. Anda akan mendapatkan `load_id` sebagai respons. - Tambah Item: Untuk setiap instrumen atau set, panggil
POST /loads/{id}/itemsmenggunakan `load_id` dari langkah sebelumnya. - Proses Muatan: Setelah semua item ditambahkan, panggil
POST /loads/{id}/process. Ini akan membuat siklus sterilisasi dan mengubah status muatan menjadi 'selesai'. - Generate Label: Panggil
POST /loads/{id}/generate-labelsuntuk membuat semua catatan label di database. Responsnya akan berisi daftar UID dari semua label baru. - Cetak Label: Untuk setiap UID yang diterima, panggil
GET /labels/{uid}/printuntuk mendapatkan HTML label yang siap dicetak oleh sistem Anda.
Labels
Mendapatkan Detail Label
/labels/{uid}Mengambil informasi detail dari sebuah label berdasarkan ID unik (UID).
Menandai Label Telah Digunakan
/labels/{uid}/mark-usedMengubah status sebuah label dari 'aktif' menjadi 'telah digunakan'.
Mendapatkan Hasil Cetak Label
/labels/{uid}/printMengembalikan konten HTML dari label yang siap dicetak dan menaikkan `print_count`.
Inventaris
Mendapatkan Daftar Instrumen
/instrumentsMengambil daftar instrumen dengan paginasi.
Mendapatkan Detail Instrumen
/instruments/{id}Mengambil detail satu instrumen spesifik berdasarkan ID-nya.
Mendapatkan Daftar Set
/setsMengambil daftar set instrumen dengan paginasi.
Mendapatkan Detail Set
/sets/{id}Mengambil detail satu set, termasuk daftar instrumen di dalamnya.
Proses Sterilisasi
Mendapatkan Daftar Muatan
/loadsMengambil daftar muatan sterilisasi dengan paginasi.
Membuat Muatan Baru
/loadsMembuat entri muatan baru dengan status 'persiapan'.
Menambahkan Item ke Muatan
/loads/{id}/itemsMenambahkan instrumen atau set ke dalam muatan yang statusnya 'persiapan'.
Memproses Muatan
/loads/{id}/processMembuat siklus baru dan menyelesaikan muatan.
Membuat Semua Label dari Muatan
/loads/{id}/generate-labelsMembuat semua entri label untuk muatan yang sudah 'selesai'.
Mendapatkan Daftar Siklus
/cyclesMengambil daftar riwayat siklus sterilisasi dengan paginasi.
Pengguna
Mendapatkan Daftar Pengguna
/usersMengembalikan daftar semua pengguna di sistem.
Mendapatkan Detail Pengguna
/users/{id}Mengembalikan detail seorang pengguna berdasarkan ID.
Laporan & Master Data
Mendapatkan Laporan KPI
/reportsMengembalikan data Key Performance Indicator (KPI) utama.
Mendapatkan Master Data
/master/{type}Mengembalikan daftar data master yang aktif. Ganti {type} dengan `departments`, `machines`, atau `instrument-types`.
Request (cURL)
curl -X GET \
"https://api.lifira.com/v1/labels/CONTOH123" \
-H "X-API-Key: ABC-123-DEF-456-GHI-789"
Response (200 OK)
{
"status": "success",
"data": { "label_unique_id": "CONTOH123", ... }
}
Request (cURL)
curl -X POST \
"https://api.lifira.com/v1/labels/CONTOH123/mark-used" \
-H "X-API-Key: ABC-123-DEF-456-GHI-789" \
-d '{ "note": "Digunakan oleh Dr. Budi" }'
Response (200 OK)
{
"status": "success",
"data": { "message": "Status item berhasil diperbarui..." }
}
Request (cURL)
curl -X GET \
"https://api.lifira.com/v1/labels/CONTOH123/print" \
-H "X-API-Key: ABC-123-DEF-456-GHI-789"
Response (200 OK)
{
"status": "success",
"data": { "html_content": "<!DOCTYPE html>..." }
}
Request (cURL)
curl -X POST \
"https://api.lifira.com/v1/loads" \
-H "X-API-Key: ABC-123-DEF-456-GHI-789" \
-d '{ "machine_id": 1 }'
Response (201 Created)
{
"status": "success",
"data": { "load_id": 151, "status": "persiapan", ... }
}
Request (cURL)
curl -X POST \
"https://api.lifira.com/v1/loads/151/items" \
-H "X-API-Key: ABC-123-DEF-456-GHI-789" \
-d '{ "item_id": 5, "item_type": "set" }'
Response (201 Created)
{
"status": "success",
"data": { "message": "Item berhasil ditambahkan..." }
}
Request (cURL)
curl -X POST \
"https://api.lifira.com/v1/loads/151/process" \
-H "X-API-Key: ABC-123-DEF-456-GHI-789" \
-d '{ "operator_user_id": 2 }'
Response (200 OK)
{
"status": "success",
"data": { "cycle_id": 78, "status": "completed", ... }
}
Request (cURL)
curl -X POST \
"https://api.lifira.com/v1/loads/151/generate-labels" \
-H "X-API-Key: ABC-123-DEF-456-GHI-789" \
-d '{ "user_id": 2 }'
Response (201 Created)
{
"status": "success",
"data": { "label_uids": [ "AEF1345B", ... ] }
}
Request (cURL)
curl -X GET \
"https://api.lifira.com/v1/users" \
-H "X-API-Key: ABC-123-DEF-456-GHI-789"
Response (200 OK)
{
"status": "success",
"data": [ { "user_id": 1, "username": "admin", ... } ]
}
Request (cURL)
curl -X GET \
"https://api.lifira.com/v1/reports" \
-H "X-API-Key: ABC-123-DEF-456-GHI-789"
Response (200 OK)
{
"status": "success",
"data": { "kpi_cycle_success_rate_percent": 98.5, ... }
}
Request (cURL)
curl -X GET \
"https://api.lifira.com/v1/master/machines" \
-H "X-API-Key: ABC-123-DEF-456-GHI-789"
Response (200 OK)
{
"status": "success",
"data": [ { "machine_id": 1, "machine_name": "Autoklaf A", ... } ]
}
Request (cURL)
curl -X GET \
"https://api.lifira.com/v1/instruments?limit=2" \
-H "X-API-Key: ABC-123-DEF-456-GHI-789"
Response (200 OK)
{
"status": "success",
"data": [
{ "instrument_id": 12, "instrument_name": "Gunting M...", ... },
{ "instrument_id": 15, "instrument_name": "Klem Arteri", ... }
]
}