API v1.0

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

1

Daftar & Login

Buat akun baru atau login untuk mendapatkan session cookie.

2

Gunakan Session Cookie

Setiap request yang memerlukan autentikasi akan menggunakan session cookie secara otomatis.

3

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

GET /health

Endpoint untuk memeriksa status API. Tidak memerlukan autentikasi.

curl https://your-api-domain.com/health
                                

Response

{
  "ok": true
}
                            

Authentication Endpoints

POST /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
}
                            
POST /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
}
                                
POST /auth/logout

Logout dan hapus session cookie. Memerlukan autentikasi.

GET /auth/me

Mendapatkan informasi user yang sedang login. Memerlukan autentikasi.

POST /auth/reset-password

Mengirim email reset password.

POST /auth/change-password

Mengubah password. Memerlukan autentikasi.

Accounts Endpoints

GET /me

Mendapatkan data akun pengguna yang sedang login. Memerlukan autentikasi.

Response

{
  "data": {
    "uid": "user123",
    "email": "user@example.com",
    "displayName": "John Doe",
    "role": "user"
  }
}
                            
PATCH /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

POST /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

GET /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

GET /properties-type

Mendapatkan semua property types.

GET /properties-type/:id

Mendapatkan property type berdasarkan ID.

POST /properties-type

Membuat property type baru.

{"name": "Rumah", "isActive": true}
                                        
PATCH /properties-type/:id

Memperbarui property type.

DELETE /properties-type/:id

Menghapus property type.

Properties Location

GET /properties-location

Mendapatkan semua property locations.

GET /properties-location/:id

Mendapatkan property location berdasarkan ID.

POST /properties-location

Membuat property location baru.

PATCH /properties-location/:id

Memperbarui property location.

DELETE /properties-location/:id

Menghapus property location.

Properties Badge

GET /properties-badge

Mendapatkan semua property badges.

GET /properties-badge/:id

Mendapatkan property badge berdasarkan ID.

POST /properties-badge

Membuat property badge baru.

PATCH /properties-badge/:id

Memperbarui property badge.

DELETE /properties-badge/:id

Menghapus property badge.