Properties API Documentation
RESTful API untuk mengelola properti, autentikasi pengguna, dan upload file. Dibangun dengan Express.js, TypeScript, dan Firebase Admin SDK.
Firebase Authentication
Sistem autentikasi berbasis Firebase dengan session cookies yang aman.
File Upload
Upload file dengan integrasi ImageKit untuk optimasi dan CDN.
Firestore Database
Mengelola data properti dengan Firestore untuk skalabilitas tinggi.
Quick Start
Daftar & Login
Buat akun baru atau login untuk mendapatkan session cookie.
Gunakan Session Cookie
Setiap request yang memerlukan autentikasi akan menggunakan session cookie secara otomatis.
Panggil Endpoints
Mulai menggunakan API untuk mengelola properti dan data Anda.
curl --request POST \ --url 'https://your-api-domain.com/auth/login' \ --header 'Content-Type: application/json' \ --data '{ "email": "user@example.com", "password": "password123" }'
Response
{
"ok": true
}
Autentikasi
API ini menggunakan Firebase Authentication dengan session cookies. Setelah login atau signup berhasil, server akan mengatur session cookie secara otomatis. Cookie ini akan digunakan untuk semua request yang memerlukan autentikasi.
Penting
Session cookie akan dikirim secara otomatis oleh browser. Pastikan untuk mengaktifkan credentials (withCredentials) jika menggunakan fetch atau axios.
Rate Limiting
Saat ini tidak ada batasan rate limiting yang diterapkan. Namun, kami menyarankan untuk tidak melakukan lebih dari 100 request per detik per IP.
Health Check
/health
Endpoint untuk memeriksa status API. Tidak memerlukan autentikasi.
curl https://your-api-domain.com/health
Response
{
"ok": true
}
Authentication Endpoints
/auth/login
Login dengan email dan password. Session cookie akan diatur otomatis.
Request Body:
{
"email": "user@example.com",
"password": "password123"
}
curl --request POST \ --url 'https://your-api-domain.com/auth/login' \ --header 'Content-Type: application/json' \ --data '{"email":"user@example.com","password":"password123"}'
Response
{
"ok": true
}
/auth/signup
Mendaftar akun baru. Session cookie akan diatur otomatis.
Request Body:
{
"email": "user@example.com",
"password": "password123",
"displayName": "John Doe" // optional,
"phoneNumber": "+628123456789" // optional
}
/auth/logout
Logout dan hapus session cookie. Memerlukan autentikasi.
/auth/me
Mendapatkan informasi user yang sedang login. Memerlukan autentikasi.
/auth/reset-password
Mengirim email reset password.
/auth/change-password
Mengubah password. Memerlukan autentikasi.
Accounts Endpoints
/me
Mendapatkan data akun pengguna yang sedang login. Memerlukan autentikasi.
Response
{
"data": {
"uid": "user123",
"email": "user@example.com",
"displayName": "John Doe",
"role": "user"
}
}
/me
Memperbarui data akun pengguna. Memerlukan autentikasi.
Request Body:
{
"displayName": "Jane Doe" // optional,
"phoneNumber": "+628123456789" // optional,
"photoURL": "https://example.com/photo.jpg" // optional
}
Upload Endpoint
/upload
Upload file ke ImageKit. Maksimal 5MB per file. Memerlukan header x-api-secret.
Headers:
x-api-secret: your-api-secret
Query Parameters (optional):
folder=uploads // default: "uploads"
curl --request POST \ --url 'https://your-api-domain.com/upload?folder=images' \ --header 'x-api-secret: your-api-secret' \ --form 'file=@/path/to/file.jpg'
Response
{
"url": "https://ik.imagekit.io/...",
"path": "images/1234567890-file.jpg",
"contentType": "image/jpeg",
"size": 123456
}
ImageKit Endpoint
/imagekit/auth
Mendapatkan token autentikasi untuk ImageKit client-side upload.
Response
{
"token": "abc123...",
"expire": 1623456000,
"signature": "xyz789..."
}
Properties Endpoints
Semua endpoints properties memerlukan autentikasi. Tersedia tiga jenis: Type, Location, dan Badge.
Properties Type
/properties-type
Mendapatkan semua property types.
/properties-type/:id
Mendapatkan property type berdasarkan ID.
/properties-type
Membuat property type baru.
{"name": "Rumah", "isActive": true}
/properties-type/:id
Memperbarui property type.
/properties-type/:id
Menghapus property type.
Properties Location
/properties-location
Mendapatkan semua property locations.
/properties-location/:id
Mendapatkan property location berdasarkan ID.
/properties-location
Membuat property location baru.
/properties-location/:id
Memperbarui property location.
/properties-location/:id
Menghapus property location.
Properties Badge
/properties-badge
Mendapatkan semua property badges.
/properties-badge/:id
Mendapatkan property badge berdasarkan ID.
/properties-badge
Membuat property badge baru.
/properties-badge/:id
Memperbarui property badge.
/properties-badge/:id
Menghapus property badge.