SIFKA API Documentation (v1)
Sistem Informasi Fasilitas Kampus (SIFKA) menyediakan API untuk pelaporan kerusakan fasilitas kampus berbasis koordinat GPS.
Base URL
http://localhost:8000/api
Authentication
Sebagian besar endpoint memerlukan autentikasi menggunakan Laravel Sanctum (Bearer Token).
| Header | Value |
|---|---|
Accept |
application/json |
Authorization |
Bearer {token} |
Auth Endpoints
Register
POST /register
Payload:
{
"name": "John Doe",
"email": "john@example.com",
"password": "password",
"password_confirmation": "password"
}
Note: All new registrations are assigned the
studentrole by default.
Login
POST /login
Payload:
{
"email": "john@example.com",
"password": "password"
}
Super Admin
Gunakan
php artisan app:create-super-admin
.env.
Admin Credential from .env.example:
# Super Admin Credentials
SUPER_ADMIN_NAME="Admin SIFKA"
SUPER_ADMIN_EMAIL="admin@sifka.test"
SUPER_ADMIN_PASSWORD="AdminSIFKA"
Payload:
{
"email": "admin@sifka.test",
"password": "AdminSIFKA"
}
Response:
{
"message": "Login successful",
"access_token": "1|xxxxxxxxxxxx",
"token_type": "Bearer",
"user": { ... }
}
Logout
POST /logout (Auth required)
Get Profile
GET /user (Auth required)
Resource Endpoints
Categories
GET /categories (Auth required) - Paginated list of categories.
POST /categories (Auth (Admin) required) - Create new category.
Payload:
{
"name": "Kelistrikan",
"icon_marker": "bolt",
"color_code": "#FFD700"
}
Buildings
GET /buildings (Auth required) - Paginated list of physical locations with nested amenities.
POST /buildings (Auth (Admin) required) - Create new building.
Payload:
{
"name": "Gedung Rektorat",
"description": "Kantor Pusat",
"latitude": -6.1234,
"longitude": 106.1234
}
Response Example:
{
"data": [
{
"id": 1,
"name": "Gedung Rektorat",
"description": "Kantor pusat",
"coordinate": {
"lat": -6.1234,
"lng": 106.1234
},
"amenities": [
{
"id": 10,
"name": "Lampu LED Lobby",
"category": { "name": "Kelistrikan" }
}
]
}
]
}
Facilities
GET /facilities (Auth required) - Paginated list of all assets.
POST /facilities (Auth (Admin) required) - Create new facility.
Payload:
{
"building_id": 1,
"category_id": 1,
"name": "Lampu LED Lobby",
"description": "Lampu utama area lobby"
}
Reports
GET /reports (Auth required)
POST /reports (Auth required)
Payload (Multipart/Form-Data):
facility_id: integer (optional) - Link to a specific asset.title: string (required)description: string (required)image: file (optional, max 2MB)latitude: numeric (required) - Pinpoint GPS location.longitude: numeric (required) - Pinpoint GPS location.
Pagination
All GET resource endpoints return paginated data with the following meta structure:
{
"data": [...],
"links": { ... },
"meta": {
"current_page": 1,
"last_page": 5,
"total": 75
}
}