{
  "roles": [
    {
      "id": "1",
      "roleName": "Owner / Host",
      "description": "Pengguna yang memiliki, menyewakan, dan menjual properti mereka."
    },
    {
      "id": "2",
      "roleName": "Guest / Buyer",
      "description": "Pengguna yang mencari akomodasi, menginap, menyewa, atau membeli properti."
    },
    {
      "id": "3",
      "roleName": "System Administrator",
      "description": "Pengguna dengan kekuasaan penuh untuk mengelola master data sistem."
    }
  ],
  "permissions": [
    {
      "id": "1",
      "permissionKey": "create_property",
      "description": "Mendaftarkan dan memasarkan properti baru"
    },
    {
      "id": "2",
      "permissionKey": "delete_property",
      "description": "Menghapus properti milik sendiri"
    },
    {
      "id": "3",
      "permissionKey": "order_transaction",
      "description": "Melakukan transaksi/pemesanan properti"
    },
    {
      "id": "4",
      "permissionKey": "view_dashboard",
      "description": "Melihat grafik statistik pendapatan"
    },
    {
      "id": "5",
      "permissionKey": "manage_roles",
      "description": "Mengonfigurasi peran & perizinan sistem"
    },
    {
      "id": "6",
      "permissionKey": "edit_property",
      "description": "Mengolah: Mengubah Informasi Properti"
    },
    {
      "id": "7",
      "permissionKey": "view_operations",
      "description": "Membuka Menu Operations Hub"
    },
    {
      "id": "8",
      "permissionKey": "view_superadmin",
      "description": "Membuka Menu Superadmin Console"
    },
    {
      "id": "9",
      "permissionKey": "view_schema",
      "description": "Membuka Menu Master Skema MySQL"
    },
    {
      "id": "10",
      "permissionKey": "view_users",
      "description": "Membuka Menu Master Pengguna (CRUD)"
    },
    {
      "id": "11",
      "permissionKey": "view_permissions",
      "description": "Membuka Menu Master Hak Izin"
    },
    {
      "id": "12",
      "permissionKey": "view_profiling",
      "description": "Membuka Menu Profiling & Log Analisis"
    },
    {
      "id": "13",
      "permissionKey": "view_ci3_template",
      "description": "Membuka Menu CI3 & AdminLTE Files"
    },
    {
      "id": "14",
      "permissionKey": "view_ai_prediction",
      "description": "Membuka Menu Prediksi & Keputusan AI"
    },
    {
      "id": "15",
      "permissionKey": "view_cloud_storage",
      "description": "Membuka Menu Cloud Storage Hub"
    },
    {
      "id": "16",
      "permissionKey": "manage_users",
      "description": "Mengolah: Menambah/Edit/Hapus Pengguna"
    }
  ],
  "rolePermissions": [
    {
      "roleId": "1",
      "permissionId": "1"
    },
    {
      "roleId": "1",
      "permissionId": "2"
    },
    {
      "roleId": "1",
      "permissionId": "4"
    },
    {
      "roleId": "2",
      "permissionId": "3"
    },
    {
      "roleId": "3",
      "permissionId": "1"
    },
    {
      "roleId": "3",
      "permissionId": "2"
    },
    {
      "roleId": "3",
      "permissionId": "3"
    },
    {
      "roleId": "3",
      "permissionId": "4"
    },
    {
      "roleId": "3",
      "permissionId": "5"
    },
    {
      "roleId": "1",
      "permissionId": "6"
    },
    {
      "roleId": "1",
      "permissionId": "7"
    },
    {
      "roleId": "1",
      "permissionId": "14"
    },
    {
      "roleId": "3",
      "permissionId": "6"
    },
    {
      "roleId": "3",
      "permissionId": "7"
    },
    {
      "roleId": "3",
      "permissionId": "8"
    },
    {
      "roleId": "3",
      "permissionId": "9"
    },
    {
      "roleId": "3",
      "permissionId": "10"
    },
    {
      "roleId": "3",
      "permissionId": "11"
    },
    {
      "roleId": "3",
      "permissionId": "12"
    },
    {
      "roleId": "3",
      "permissionId": "13"
    },
    {
      "roleId": "3",
      "permissionId": "14"
    },
    {
      "roleId": "3",
      "permissionId": "15"
    },
    {
      "roleId": "3",
      "permissionId": "16"
    }
  ],
  "users": [
    {
      "id": "1",
      "username": "budi_owner",
      "email": "budi@owner.com",
      "fullName": "Budi Hartono (Owner)",
      "phone": "08123456789",
      "roleId": "1"
    },
    {
      "id": "2",
      "username": "ani_guest",
      "email": "ani@guest.com",
      "fullName": "Ani Wijaya (Guest)",
      "phone": "08987654321",
      "roleId": "2"
    },
    {
      "id": "3",
      "username": "admin_hub",
      "email": "admin@hub.com",
      "fullName": "Super Admin (SewaBeliPro)",
      "phone": "08111222333",
      "roleId": "3"
    },
    {
      "id": "7",
      "username": "admin_all",
      "email": "admin_all@hub.com",
      "fullName": "Admin Konsolidasi Utama (admin_all)",
      "phone": "08111222999",
      "roleId": "3"
    }
  ],
  "properties": [
    {
      "id": "1",
      "ownerId": "1",
      "ownerName": "Budi Hartono (Owner)",
      "name": "Grand Melia Hotel",
      "type": "hotel",
      "address": "Jl. Rasuna Said Kav 1, Jakarta",
      "description": "Hotel bintang 5 mewah di pusat bisnis Jakarta dengan fasilitas kolam renang, spa, restoran gourmet, dan akses mudah ke pusat perkantoran.",
      "priceDay": 750000,
      "status": "available",
      "imageUrl": "https://images.unsplash.com/photo-1566073771259-6a8506099945?auto=format&fit=crop&w=800&q=80",
      "createdAt": "2026-07-07T07:43:56.640Z",
      "contactPhone": "021-5268080",
      "contactEmail": "info@grandmeliajakarta.com",
      "mapEmbedUrl": "https://maps.google.com/maps?q=Jl.%20Rasuna%20Said%20Kav%201%2C%20Jakarta&t=&z=15&ie=UTF8&iwloc=&output=embed"
    },
    {
      "id": "2",
      "ownerId": "1",
      "ownerName": "Budi Hartono (Owner)",
      "name": "Ubud Paradise Villa",
      "type": "villa",
      "address": "Jl. Raya Campuhan, Ubud, Bali",
      "description": "Villa asri dengan private pool, gazebo, dan pemandangan langsung ke lembah sawah hijau Ubud yang menenangkan.",
      "priceDay": 2500000,
      "status": "available",
      "imageUrl": "https://images.unsplash.com/photo-1580587771525-78b9dba3b914?auto=format&fit=crop&w=800&q=80",
      "createdAt": "2026-07-07T07:43:56.642Z",
      "contactPhone": "0361-975555",
      "contactEmail": "stay@ubudparadise.com",
      "mapEmbedUrl": "https://maps.google.com/maps?q=Jl.%20Raya%20Campuhan%2C%20Ubud%2C%20Bali&t=&z=15&ie=UTF8&iwloc=&output=embed"
    },
    {
      "id": "3",
      "ownerId": "1",
      "ownerName": "Budi Hartono (Owner)",
      "name": "Sudirman Suites Apartment",
      "type": "apartment",
      "address": "Jl. Jend Sudirman No. 21, Jakarta",
      "description": "Apartemen mewah di lantai 25, fully furnished dengan kitchen set lengkap, smart home system, dan tepat di samping stasiun MRT.",
      "priceMonth": 8500000,
      "priceBuy": 1800000000,
      "status": "available",
      "imageUrl": "https://images.unsplash.com/photo-1545324418-cc1a3fa10c00?auto=format&fit=crop&w=800&q=80",
      "createdAt": "2026-07-07T07:43:56.642Z",
      "contactPhone": "021-2525566",
      "contactEmail": "management@sudirmansuites.com",
      "mapEmbedUrl": "https://maps.google.com/maps?q=Jl.%20Jend%20Sudirman%20No.%2021%2C%20Jakarta&t=&z=15&ie=UTF8&iwloc=&output=embed"
    },
    {
      "id": "4",
      "ownerId": "1",
      "ownerName": "Budi Hartono (Owner)",
      "name": "Cluster Minimalis Lavender",
      "type": "house",
      "address": "Perumahan Lavanya Blok B4, Tangerang Selatan",
      "description": "Rumah tinggal modern minimalis 2 lantai di dalam cluster satu gerbang (one gate system). Memiliki 3 kamar tidur dan 2 kamar mandi.",
      "priceBuy": 1250000000,
      "status": "available",
      "imageUrl": "https://images.unsplash.com/photo-1600585154340-be6161a56a0c?auto=format&fit=crop&w=800&q=80",
      "createdAt": "2026-07-07T07:43:56.642Z",
      "contactPhone": "0812-3456-7890",
      "contactEmail": "sales@lavendercluster.com",
      "mapEmbedUrl": "https://maps.google.com/maps?q=Perumahan%20Lavanya%20Blok%20B4%2C%20Tangerang%20Selatan&t=&z=15&ie=UTF8&iwloc=&output=embed"
    },
    {
      "id": "5",
      "ownerId": "1",
      "ownerName": "Budi Hartono (Owner)",
      "name": "Kost Exclusive D`Green",
      "type": "kos",
      "address": "Jl. Ganesha No. 10, Bandung",
      "description": "Kost mahasiswa dan pekerja profesional exclusive dekat kampus ITB. Sudah termasuk fasilitas AC, kamar mandi dalam, air panas, high-speed Wi-Fi, dan parkir luas.",
      "priceMonth": 1800000,
      "status": "available",
      "imageUrl": "https://images.unsplash.com/photo-1522771739844-6a9f6d5f14af?auto=format&fit=crop&w=800&q=80",
      "createdAt": "2026-07-07T07:43:56.642Z",
      "contactPhone": "0811-2222-3333",
      "contactEmail": "dgreen@kostbandung.com",
      "mapEmbedUrl": "https://maps.google.com/maps?q=Jl.%20Ganesha%20No.%2010%2C%20Bandung&t=&z=15&ie=UTF8&iwloc=&output=embed"
    }
  ],
  "transactions": [
    {
      "id": "101",
      "buyerId": "2",
      "buyerName": "Ani Wijaya (Guest)",
      "propertyId": "1",
      "propertyName": "Grand Melia Hotel",
      "propertyType": "hotel",
      "type": "stay",
      "startDate": "2026-07-01",
      "endDate": "2026-07-03",
      "totalPrice": 1500000,
      "status": "paid",
      "createdAt": "2026-07-07T07:43:56.642Z"
    },
    {
      "id": "102",
      "buyerId": "2",
      "buyerName": "Ani Wijaya (Guest)",
      "propertyId": "3",
      "propertyName": "Sudirman Suites Apartment",
      "propertyType": "apartment",
      "type": "rent",
      "startDate": "2026-08-01",
      "endDate": "2026-09-01",
      "totalPrice": 8500000,
      "status": "paid",
      "createdAt": "2026-07-07T07:43:56.642Z"
    }
  ],
  "promos": [
    {
      "id": "p1",
      "code": "HEMAT50",
      "discount": 50000,
      "type": "coupon",
      "maxUse": 100,
      "used": 12,
      "description": "Potongan Rp 50.000 untuk pengguna baru"
    },
    {
      "id": "p2",
      "code": "WEEKENDSERU",
      "discount": 100000,
      "type": "promo",
      "maxUse": 50,
      "used": 8,
      "description": "Promo khusus akhir pekan hemat Rp 100.000"
    }
  ],
  "rooms": [
    {
      "id": "r1_101",
      "propertyId": "1",
      "roomNumber": "101",
      "type": "Deluxe Twin Room",
      "priceDay": 750000,
      "status": "available",
      "position": "Lantai 1, Sayap Timur",
      "facilities": [
        "AC",
        "Twin Bed",
        "Free High-speed Wi-Fi",
        "Mini Bar",
        "TV Cable",
        "Safe Deposit Box"
      ],
      "facing": "Timur (Sunrise)",
      "view": "Taman Kota & Air Terjun Mini",
      "imageUrl": "https://images.unsplash.com/photo-1598928506311-c55ded91a20c?auto=format&fit=crop&w=600&q=80",
      "bookedDates": []
    },
    {
      "id": "r1_302",
      "propertyId": "1",
      "roomNumber": "302",
      "type": "Executive King Suite",
      "priceDay": 1250000,
      "status": "occupied",
      "position": "Lantai 3, Sayap Barat",
      "facilities": [
        "AC",
        "King Bed",
        "Smart TV 55 Inch",
        "Bathtub",
        "Sofa Bed",
        "Nespresso Machine",
        "Balcony"
      ],
      "facing": "Selatan",
      "view": "City Skyline & Kolam Renang Utama",
      "imageUrl": "https://images.unsplash.com/photo-1590490360182-c33d57733427?auto=format&fit=crop&w=600&q=80",
      "bookedDates": [
        "2026-06-25 s/d 2026-06-30"
      ]
    },
    {
      "id": "r1_501",
      "propertyId": "1",
      "roomNumber": "501",
      "type": "Presidential Penthouse",
      "priceDay": 3500000,
      "status": "available",
      "position": "Lantai 5 (Penthouse)",
      "facilities": [
        "Private Pool",
        "AC Central",
        "Jacuzzi",
        "Smart Kitchen Set",
        "Butler Service 24H",
        "Home Theater"
      ],
      "facing": "Barat (Sunset)",
      "view": "Sunset & Megapolitan Jakarta View 360",
      "imageUrl": "https://images.unsplash.com/photo-1631049307264-da0ec9d70304?auto=format&fit=crop&w=600&q=80",
      "bookedDates": []
    },
    {
      "id": "r2_v01",
      "propertyId": "2",
      "roomNumber": "V-01",
      "type": "One-Bedroom Private Pool Villa",
      "priceDay": 2500000,
      "status": "occupied",
      "position": "Ground Level, Area Sunset",
      "facilities": [
        "Private Pool",
        "Gazebo",
        "AC",
        "Outdoor Shower",
        "Floating Breakfast",
        "Mini Kitchen"
      ],
      "facing": "Timur (Sunrise)",
      "view": "Lembah Sawah Hijau & Gunung Agung",
      "imageUrl": "https://images.unsplash.com/photo-1582268611958-ebfd161ef9cf?auto=format&fit=crop&w=600&q=80",
      "bookedDates": [
        "2026-07-01 s/d 2026-07-05"
      ]
    },
    {
      "id": "r2_v02",
      "propertyId": "2",
      "roomNumber": "V-02",
      "type": "Two-Bedroom Family Pool Villa",
      "priceDay": 4500000,
      "status": "available",
      "position": "Ground Level, Area Sawah",
      "facilities": [
        "Large Pool",
        "Kitchen Set",
        "AC",
        "Living Room",
        "Gazebo",
        "Alat BBQ",
        "Bathtub"
      ],
      "facing": "Selatan",
      "view": "Taman Tropis & Sungai Campuhan",
      "imageUrl": "https://images.unsplash.com/photo-1540518614846-7eded433c457?auto=format&fit=crop&w=600&q=80",
      "bookedDates": []
    },
    {
      "id": "r3_2501",
      "propertyId": "3",
      "roomNumber": "2501",
      "type": "Studio Executive Room",
      "priceDay": 500000,
      "status": "occupied",
      "position": "Lantai 25, Unit Sudut Utara",
      "facilities": [
        "AC",
        "Kitchenette",
        "Smart Lock",
        "Wi-Fi",
        "Washing Machine",
        "Microwave"
      ],
      "facing": "Utara",
      "view": "Bundaran HI & MRT Station",
      "imageUrl": "https://images.unsplash.com/photo-1502672260266-1c1ef2d93688?auto=format&fit=crop&w=600&q=80",
      "bookedDates": [
        "2026-05-01 s/d 2026-09-01"
      ]
    },
    {
      "id": "r3_2502",
      "propertyId": "3",
      "roomNumber": "2502",
      "type": "Two-Bedroom Premium Corner",
      "priceDay": 950000,
      "status": "available",
      "position": "Lantai 25, Unit Sudut Barat",
      "facilities": [
        "AC",
        "Balcony",
        "Bathtub",
        "Kitchen Set",
        "Smart Home",
        "Smart TV 65 Inch"
      ],
      "facing": "Barat (Sunset)",
      "view": "Sunset & SCBD Skylines",
      "imageUrl": "https://images.unsplash.com/photo-1560448204-e02f11c3d0e2?auto=format&fit=crop&w=600&q=80",
      "bookedDates": []
    },
    {
      "id": "r4_a12",
      "propertyId": "4",
      "roomNumber": "A-12 Utama",
      "type": "Kamar Tidur Utama (Master Bedroom)",
      "priceDay": 400000,
      "status": "available",
      "position": "Lantai 2",
      "facilities": [
        "AC",
        "Ensuite Bathroom",
        "Balkon Pribadi",
        "Walk-in Closet",
        "King Bed"
      ],
      "facing": "Utara",
      "view": "Taman Cluster & Boulevard",
      "imageUrl": "https://images.unsplash.com/photo-1505691938895-1758d7feb511?auto=format&fit=crop&w=600&q=80",
      "bookedDates": []
    },
    {
      "id": "r4_a12b",
      "propertyId": "4",
      "roomNumber": "A-12 Anak",
      "type": "Kamar Tidur Anak (Second Bedroom)",
      "priceDay": 250000,
      "status": "available",
      "position": "Lantai 2",
      "facilities": [
        "Kipas Angin",
        "Single Bed",
        "Meja Belajar",
        "Wardrobe"
      ],
      "facing": "Selatan",
      "view": "Halaman Belakang & Gazebo",
      "imageUrl": "https://images.unsplash.com/photo-1505693416388-ac5ce068fe85?auto=format&fit=crop&w=600&q=80",
      "bookedDates": []
    },
    {
      "id": "r5_k10",
      "propertyId": "5",
      "roomNumber": "Kamar 10",
      "type": "Standard Single Room",
      "priceDay": 100000,
      "status": "available",
      "position": "Lantai 1",
      "facilities": [
        "AC",
        "Kamar Mandi Dalam",
        "Meja Belajar",
        "Wi-Fi",
        "Single Bed"
      ],
      "facing": "Barat",
      "view": "Koridor Hijau & Kebun Mini",
      "imageUrl": "https://images.unsplash.com/photo-1522771739844-6a9f6d5f14af?auto=format&fit=crop&w=600&q=80",
      "bookedDates": []
    },
    {
      "id": "r5_k12",
      "propertyId": "5",
      "roomNumber": "Kamar 12",
      "type": "Deluxe Balcony Room",
      "priceDay": 150000,
      "status": "occupied",
      "position": "Lantai 2",
      "facilities": [
        "AC",
        "Kamar Mandi Dalam",
        "Water Heater",
        "Balkon Pribadi",
        "Smart TV 32 Inch",
        "Queen Bed"
      ],
      "facing": "Timur (Sunrise)",
      "view": "Kampus ITB & Gunung Tangkuban Perahu",
      "imageUrl": "https://images.unsplash.com/photo-1598928506311-c55ded91a20c?auto=format&fit=crop&w=600&q=80",
      "bookedDates": [
        "2026-06-15 s/d 2026-12-15"
      ]
    }
  ],
  "advertisements": [
    {
      "id": "ad1",
      "title": "Diskon 20% Akhir Bulan di Ubud Paradise Villa!",
      "imageUrl": "https://images.unsplash.com/photo-1580587771525-78b9dba3b914?auto=format&fit=crop&w=800&q=80",
      "link": "#",
      "section": "sidebar",
      "status": "active"
    },
    {
      "id": "ad2",
      "title": "Sudirman Suites: Hunian Premium di Jantung Bisnis Jakarta",
      "imageUrl": "https://images.unsplash.com/photo-1545324418-cc1a3fa10c00?auto=format&fit=crop&w=800&q=80",
      "link": "#",
      "section": "banner",
      "status": "active"
    }
  ],
  "buildings": [
    {
      "id": "b1",
      "name": "Gedung A (Main Tower)",
      "floors": 12,
      "address": "Jl. Rasuna Said Kav 1, Jakarta",
      "unitCount": 120
    },
    {
      "id": "b2",
      "name": "Paviliun Sunset Ubud",
      "floors": 2,
      "address": "Jl. Raya Campuhan, Ubud, Bali",
      "unitCount": 8
    }
  ],
  "facilities": [
    {
      "id": "f1",
      "name": "Kolam Renang Infinity",
      "type": "Rekreasi",
      "status": "Aktif",
      "location": "Lantai 3 Tower A"
    },
    {
      "id": "f2",
      "name": "Gym & Fitness Center",
      "type": "Kesehatan",
      "status": "Maintenance",
      "location": "Lantai Dasar Gedung Utama"
    },
    {
      "id": "f3",
      "name": "Lounge & Coworking Space",
      "type": "Bisnis",
      "status": "Aktif",
      "location": "Lantai Penthouse"
    }
  ],
  "payments": [
    {
      "id": "pay1",
      "transactionId": "101",
      "propertyName": "Grand Melia Hotel",
      "totalAmount": 1500000,
      "amountPaid": 500000,
      "paymentMethod": "Bank Transfer - Mandiri",
      "type": "DP",
      "status": "paid",
      "dueDate": "2026-06-30",
      "notes": "Pembayaran uang muka menginap 2 malam."
    },
    {
      "id": "pay2",
      "transactionId": "102",
      "propertyName": "Sudirman Suites Apartment",
      "totalAmount": 8500000,
      "amountPaid": 8500000,
      "paymentMethod": "Credit Card",
      "type": "lunas",
      "status": "paid",
      "dueDate": "2026-07-28",
      "notes": "Pembayaran lunas sewa bulan Agustus."
    },
    {
      "id": "pay3",
      "transactionId": "103",
      "propertyName": "Ubud Paradise Villa",
      "totalAmount": 2500000,
      "amountPaid": 0,
      "paymentMethod": "E-Wallet (OVO)",
      "type": "lunas",
      "status": "pending",
      "dueDate": "2026-07-01",
      "notes": "Tagihan belum dibayar untuk booking Juli."
    }
  ],
  "guestCycles": [
    {
      "id": "gc1",
      "guestName": "Ani Wijaya (Guest)",
      "propertyName": "Grand Melia Hotel",
      "roomNumber": "302",
      "status": "Checked In",
      "checkInTime": "2026-06-25 14:00",
      "checkOutTime": "-"
    },
    {
      "id": "gc2",
      "guestName": "Budi Hartono",
      "propertyName": "Ubud Paradise Villa",
      "roomNumber": "V-01",
      "status": "Reserved",
      "checkInTime": "2026-07-01 14:00",
      "checkOutTime": "-"
    },
    {
      "id": "gc3",
      "guestName": "Dedi Setiawan",
      "propertyName": "Sudirman Suites Apartment",
      "roomNumber": "2501",
      "status": "Checked Out",
      "checkInTime": "2026-05-01 10:00",
      "checkOutTime": "2026-06-01 12:00"
    }
  ],
  "complaints": [
    {
      "id": "c1",
      "guestName": "Ani Wijaya (Guest)",
      "propertyName": "Grand Melia Hotel",
      "title": "AC Kamar Kurang Dingin",
      "description": "AC di kamar 302 mengeluarkan suara bising dan tidak terlalu dingin meski suhu sudah diset ke 18C.",
      "category": "Fasilitas",
      "priority": "High",
      "status": "in_progress",
      "resolution": "Teknisi sedang melakukan pengecekan freon.",
      "createdAt": "2026-06-25 15:30"
    },
    {
      "id": "c2",
      "guestName": "Rian Kusuma",
      "propertyName": "Sudirman Suites Apartment",
      "title": "Wi-Fi Terputus",
      "description": "Koneksi internet di kamar 2501 tidak bisa terhubung sejak tadi malam.",
      "category": "Layanan",
      "priority": "Medium",
      "status": "resolved",
      "resolution": "Dilakukan restart router dan konfigurasi ulang IP oleh tim IT. Selesai.",
      "createdAt": "2026-06-24 09:15"
    }
  ],
  "logs": [
    {
      "id": "l1",
      "type": "user",
      "message": "User budi_owner mengunggah properti baru: Kost Exclusive D`Green.",
      "user": "Budi Hartono",
      "timestamp": "2026-06-25 11:30"
    },
    {
      "id": "l2",
      "type": "system",
      "message": "Sinkronisasi database.json berhasil dilakukan.",
      "user": "System",
      "timestamp": "2026-06-26 01:00"
    },
    {
      "id": "l3",
      "type": "app",
      "message": "Pembayaran Transaksi #101 berhasil diverifikasi melalui Midtrans gateway.",
      "user": "System Gateway",
      "timestamp": "2026-06-25 14:15"
    },
    {
      "id": "log_1783410346977_949",
      "type": "api",
      "message": "[API REQUEST] GET /api/properties - Status: 200 (9ms)",
      "user": "Mozilla/5.0 (Windows NT 10.0; ",
      "timestamp": "2026-07-07 07:45:46",
      "ip": "127.0.0.1",
      "device": "Windows PC",
      "location": "Jakarta, Indonesia"
    },
    {
      "id": "log_1783410346983_18",
      "type": "api",
      "message": "[API REQUEST] GET /api/stats - Status: 304 (3ms)",
      "user": "Mozilla/5.0 (Windows NT 10.0; ",
      "timestamp": "2026-07-07 07:45:46",
      "ip": "127.0.0.1",
      "device": "Windows PC",
      "location": "Jakarta, Indonesia"
    },
    {
      "id": "log_1783410346995_434",
      "type": "api",
      "message": "[API REQUEST] GET /api/transactions - Status: 200 (2ms)",
      "user": "Mozilla/5.0 (Windows NT 10.0; ",
      "timestamp": "2026-07-07 07:45:46",
      "ip": "127.0.0.1",
      "device": "Windows PC",
      "location": "Jakarta, Indonesia"
    },
    {
      "id": "log_1783410347014_627",
      "type": "api",
      "message": "[API REQUEST] GET /api/promos - Status: 304 (2ms)",
      "user": "Mozilla/5.0 (Windows NT 10.0; ",
      "timestamp": "2026-07-07 07:45:47",
      "ip": "127.0.0.1",
      "device": "Windows PC",
      "location": "Jakarta, Indonesia"
    },
    {
      "id": "log_1783410347042_863",
      "type": "api",
      "message": "[API REQUEST] GET /api/advertisements - Status: 304 (2ms)",
      "user": "Mozilla/5.0 (Windows NT 10.0; ",
      "timestamp": "2026-07-07 07:45:47",
      "ip": "127.0.0.1",
      "device": "Windows PC",
      "location": "Jakarta, Indonesia"
    },
    {
      "id": "log_1783410347047_329",
      "type": "api",
      "message": "[API REQUEST] GET /api/rooms - Status: 304 (2ms)",
      "user": "Mozilla/5.0 (Windows NT 10.0; ",
      "timestamp": "2026-07-07 07:45:47",
      "ip": "127.0.0.1",
      "device": "Windows PC",
      "location": "Jakarta, Indonesia"
    },
    {
      "id": "log_1783410354787_491",
      "type": "api",
      "message": "[API REQUEST] POST /api/auth/login - Status: 200 (4ms)",
      "user": "Mozilla/5.0 (Windows NT 10.0; ",
      "timestamp": "2026-07-07 07:45:54",
      "ip": "127.0.0.1",
      "device": "Windows PC",
      "location": "Jakarta, Indonesia"
    },
    {
      "id": "log_1783410358407_845",
      "type": "api",
      "message": "[API REQUEST] GET /api/roles - Status: 200 (3ms)",
      "user": "Mozilla/5.0 (Windows NT 10.0; ",
      "timestamp": "2026-07-07 07:45:58",
      "ip": "127.0.0.1",
      "device": "Windows PC",
      "location": "Jakarta, Indonesia"
    },
    {
      "id": "log_1783410358412_523",
      "type": "api",
      "message": "[API REQUEST] GET /api/permissions - Status: 304 (2ms)",
      "user": "Mozilla/5.0 (Windows NT 10.0; ",
      "timestamp": "2026-07-07 07:45:58",
      "ip": "127.0.0.1",
      "device": "Windows PC",
      "location": "Jakarta, Indonesia"
    },
    {
      "id": "log_1783410358417_961",
      "type": "api",
      "message": "[API REQUEST] GET /api/properties - Status: 304 (2ms)",
      "user": "Mozilla/5.0 (Windows NT 10.0; ",
      "timestamp": "2026-07-07 07:45:58",
      "ip": "127.0.0.1",
      "device": "Windows PC",
      "location": "Jakarta, Indonesia"
    },
    {
      "id": "log_1783410358422_654",
      "type": "api",
      "message": "[API REQUEST] GET /api/users - Status: 200 (2ms)",
      "user": "Mozilla/5.0 (Windows NT 10.0; ",
      "timestamp": "2026-07-07 07:45:58",
      "ip": "127.0.0.1",
      "device": "Windows PC",
      "location": "Jakarta, Indonesia"
    },
    {
      "id": "log_1783410363545_865",
      "type": "api",
      "message": "[API REQUEST] GET /api/users - Status: 304 (1ms)",
      "user": "Mozilla/5.0 (Windows NT 10.0; ",
      "timestamp": "2026-07-07 07:46:03",
      "ip": "127.0.0.1",
      "device": "Windows PC",
      "location": "Jakarta, Indonesia"
    },
    {
      "id": "log_1783410363549_856",
      "type": "api",
      "message": "[API REQUEST] GET /api/properties - Status: 304 (2ms)",
      "user": "Mozilla/5.0 (Windows NT 10.0; ",
      "timestamp": "2026-07-07 07:46:03",
      "ip": "127.0.0.1",
      "device": "Windows PC",
      "location": "Jakarta, Indonesia"
    },
    {
      "id": "log_1783410363553_709",
      "type": "api",
      "message": "[API REQUEST] GET /api/roles - Status: 304 (2ms)",
      "user": "Mozilla/5.0 (Windows NT 10.0; ",
      "timestamp": "2026-07-07 07:46:03",
      "ip": "127.0.0.1",
      "device": "Windows PC",
      "location": "Jakarta, Indonesia"
    },
    {
      "id": "log_1783410363559_177",
      "type": "api",
      "message": "[API REQUEST] GET /api/permissions - Status: 304 (2ms)",
      "user": "Mozilla/5.0 (Windows NT 10.0; ",
      "timestamp": "2026-07-07 07:46:03",
      "ip": "127.0.0.1",
      "device": "Windows PC",
      "location": "Jakarta, Indonesia"
    },
    {
      "id": "log_1783410378595_207",
      "type": "api",
      "message": "[API REQUEST] GET /api/cloud/backups - Status: 304 (2ms)",
      "user": "Mozilla/5.0 (Windows NT 10.0; ",
      "timestamp": "2026-07-07 07:46:18",
      "ip": "127.0.0.1",
      "device": "Windows PC",
      "location": "Jakarta, Indonesia"
    },
    {
      "id": "log_1783410380029_296",
      "type": "api",
      "message": "[API REQUEST] GET /api/users - Status: 304 (2ms)",
      "user": "Mozilla/5.0 (Windows NT 10.0; ",
      "timestamp": "2026-07-07 07:46:20",
      "ip": "127.0.0.1",
      "device": "Windows PC",
      "location": "Jakarta, Indonesia"
    },
    {
      "id": "log_1783410380035_172",
      "type": "api",
      "message": "[API REQUEST] GET /api/properties - Status: 304 (2ms)",
      "user": "Mozilla/5.0 (Windows NT 10.0; ",
      "timestamp": "2026-07-07 07:46:20",
      "ip": "127.0.0.1",
      "device": "Windows PC",
      "location": "Jakarta, Indonesia"
    },
    {
      "id": "log_1783410380042_260",
      "type": "api",
      "message": "[API REQUEST] GET /api/transactions - Status: 304 (2ms)",
      "user": "Mozilla/5.0 (Windows NT 10.0; ",
      "timestamp": "2026-07-07 07:46:20",
      "ip": "127.0.0.1",
      "device": "Windows PC",
      "location": "Jakarta, Indonesia"
    },
    {
      "id": "log_1783410390925_152",
      "type": "api",
      "message": "[API REQUEST] GET /api/buildings - Status: 200 (2ms)",
      "user": "Mozilla/5.0 (Windows NT 10.0; ",
      "timestamp": "2026-07-07 07:46:30",
      "ip": "127.0.0.1",
      "device": "Windows PC",
      "location": "Jakarta, Indonesia"
    },
    {
      "id": "log_1783410390931_127",
      "type": "api",
      "message": "[API REQUEST] GET /api/facilities - Status: 200 (2ms)",
      "user": "Mozilla/5.0 (Windows NT 10.0; ",
      "timestamp": "2026-07-07 07:46:30",
      "ip": "127.0.0.1",
      "device": "Windows PC",
      "location": "Jakarta, Indonesia"
    },
    {
      "id": "log_1783410390936_813",
      "type": "api",
      "message": "[API REQUEST] GET /api/payments - Status: 200 (1ms)",
      "user": "Mozilla/5.0 (Windows NT 10.0; ",
      "timestamp": "2026-07-07 07:46:30",
      "ip": "127.0.0.1",
      "device": "Windows PC",
      "location": "Jakarta, Indonesia"
    },
    {
      "id": "log_1783410390941_994",
      "type": "api",
      "message": "[API REQUEST] GET /api/guest-cycles - Status: 200 (2ms)",
      "user": "Mozilla/5.0 (Windows NT 10.0; ",
      "timestamp": "2026-07-07 07:46:30",
      "ip": "127.0.0.1",
      "device": "Windows PC",
      "location": "Jakarta, Indonesia"
    },
    {
      "id": "log_1783410390946_942",
      "type": "api",
      "message": "[API REQUEST] GET /api/promos - Status: 304 (2ms)",
      "user": "Mozilla/5.0 (Windows NT 10.0; ",
      "timestamp": "2026-07-07 07:46:30",
      "ip": "127.0.0.1",
      "device": "Windows PC",
      "location": "Jakarta, Indonesia"
    },
    {
      "id": "log_1783410390950_107",
      "type": "api",
      "message": "[API REQUEST] GET /api/complaints - Status: 200 (1ms)",
      "user": "Mozilla/5.0 (Windows NT 10.0; ",
      "timestamp": "2026-07-07 07:46:30",
      "ip": "127.0.0.1",
      "device": "Windows PC",
      "location": "Jakarta, Indonesia"
    },
    {
      "id": "log_1783410390956_821",
      "type": "api",
      "message": "[API REQUEST] GET /api/maintenances - Status: 200 (3ms)",
      "user": "Mozilla/5.0 (Windows NT 10.0; ",
      "timestamp": "2026-07-07 07:46:30",
      "ip": "127.0.0.1",
      "device": "Windows PC",
      "location": "Jakarta, Indonesia"
    },
    {
      "id": "log_1783410390961_967",
      "type": "api",
      "message": "[API REQUEST] GET /api/advertisements - Status: 304 (2ms)",
      "user": "Mozilla/5.0 (Windows NT 10.0; ",
      "timestamp": "2026-07-07 07:46:30",
      "ip": "127.0.0.1",
      "device": "Windows PC",
      "location": "Jakarta, Indonesia"
    },
    {
      "id": "log_1783410390974_485",
      "type": "api",
      "message": "[API REQUEST] GET /api/users - Status: 304 (2ms)",
      "user": "Mozilla/5.0 (Windows NT 10.0; ",
      "timestamp": "2026-07-07 07:46:30",
      "ip": "127.0.0.1",
      "device": "Windows PC",
      "location": "Jakarta, Indonesia"
    },
    {
      "id": "log_1783410431920_829",
      "type": "api",
      "message": "[API REQUEST] GET /api/promos - Status: 304 (2ms)",
      "user": "Mozilla/5.0 (Windows NT 10.0; ",
      "timestamp": "2026-07-07 07:47:11",
      "ip": "127.0.0.1",
      "device": "Windows PC",
      "location": "Jakarta, Indonesia"
    },
    {
      "id": "log_1783410431926_218",
      "type": "api",
      "message": "[API REQUEST] GET /api/advertisements - Status: 304 (2ms)",
      "user": "Mozilla/5.0 (Windows NT 10.0; ",
      "timestamp": "2026-07-07 07:47:11",
      "ip": "127.0.0.1",
      "device": "Windows PC",
      "location": "Jakarta, Indonesia"
    },
    {
      "id": "log_1783410431931_70",
      "type": "api",
      "message": "[API REQUEST] GET /api/buildings - Status: 304 (1ms)",
      "user": "Mozilla/5.0 (Windows NT 10.0; ",
      "timestamp": "2026-07-07 07:47:11",
      "ip": "127.0.0.1",
      "device": "Windows PC",
      "location": "Jakarta, Indonesia"
    },
    {
      "id": "log_1783410431937_737",
      "type": "api",
      "message": "[API REQUEST] GET /api/facilities - Status: 304 (2ms)",
      "user": "Mozilla/5.0 (Windows NT 10.0; ",
      "timestamp": "2026-07-07 07:47:11",
      "ip": "127.0.0.1",
      "device": "Windows PC",
      "location": "Jakarta, Indonesia"
    },
    {
      "id": "log_1783410431942_525",
      "type": "api",
      "message": "[API REQUEST] GET /api/payments - Status: 304 (2ms)",
      "user": "Mozilla/5.0 (Windows NT 10.0; ",
      "timestamp": "2026-07-07 07:47:11",
      "ip": "127.0.0.1",
      "device": "Windows PC",
      "location": "Jakarta, Indonesia"
    },
    {
      "id": "log_1783410431946_92",
      "type": "api",
      "message": "[API REQUEST] GET /api/guest-cycles - Status: 304 (2ms)",
      "user": "Mozilla/5.0 (Windows NT 10.0; ",
      "timestamp": "2026-07-07 07:47:11",
      "ip": "127.0.0.1",
      "device": "Windows PC",
      "location": "Jakarta, Indonesia"
    },
    {
      "id": "log_1783410431953_206",
      "type": "api",
      "message": "[API REQUEST] GET /api/complaints - Status: 304 (3ms)",
      "user": "Mozilla/5.0 (Windows NT 10.0; ",
      "timestamp": "2026-07-07 07:47:11",
      "ip": "127.0.0.1",
      "device": "Windows PC",
      "location": "Jakarta, Indonesia"
    },
    {
      "id": "log_1783410431958_135",
      "type": "api",
      "message": "[API REQUEST] GET /api/users - Status: 304 (2ms)",
      "user": "Mozilla/5.0 (Windows NT 10.0; ",
      "timestamp": "2026-07-07 07:47:11",
      "ip": "127.0.0.1",
      "device": "Windows PC",
      "location": "Jakarta, Indonesia"
    },
    {
      "id": "log_1783410431965_9",
      "type": "api",
      "message": "[API REQUEST] GET /api/maintenances - Status: 304 (1ms)",
      "user": "Mozilla/5.0 (Windows NT 10.0; ",
      "timestamp": "2026-07-07 07:47:11",
      "ip": "127.0.0.1",
      "device": "Windows PC",
      "location": "Jakarta, Indonesia"
    },
    {
      "id": "log_1783410458828_335",
      "type": "api",
      "message": "[API REQUEST] GET /api/properties - Status: 304 (3ms)",
      "user": "Mozilla/5.0 (Windows NT 10.0; ",
      "timestamp": "2026-07-07 07:47:38",
      "ip": "127.0.0.1",
      "device": "Windows PC",
      "location": "Jakarta, Indonesia"
    },
    {
      "id": "log_1783410458835_396",
      "type": "api",
      "message": "[API REQUEST] GET /api/transactions - Status: 304 (4ms)",
      "user": "Mozilla/5.0 (Windows NT 10.0; ",
      "timestamp": "2026-07-07 07:47:38",
      "ip": "127.0.0.1",
      "device": "Windows PC",
      "location": "Jakarta, Indonesia"
    },
    {
      "id": "log_1783410458839_80",
      "type": "api",
      "message": "[API REQUEST] GET /api/stats - Status: 304 (2ms)",
      "user": "Mozilla/5.0 (Windows NT 10.0; ",
      "timestamp": "2026-07-07 07:47:38",
      "ip": "127.0.0.1",
      "device": "Windows PC",
      "location": "Jakarta, Indonesia"
    },
    {
      "id": "log_1783410458844_451",
      "type": "api",
      "message": "[API REQUEST] GET /api/promos - Status: 304 (2ms)",
      "user": "Mozilla/5.0 (Windows NT 10.0; ",
      "timestamp": "2026-07-07 07:47:38",
      "ip": "127.0.0.1",
      "device": "Windows PC",
      "location": "Jakarta, Indonesia"
    },
    {
      "id": "log_1783410458849_172",
      "type": "api",
      "message": "[API REQUEST] GET /api/advertisements - Status: 304 (2ms)",
      "user": "Mozilla/5.0 (Windows NT 10.0; ",
      "timestamp": "2026-07-07 07:47:38",
      "ip": "127.0.0.1",
      "device": "Windows PC",
      "location": "Jakarta, Indonesia"
    },
    {
      "id": "log_1783410458854_391",
      "type": "api",
      "message": "[API REQUEST] GET /api/rooms - Status: 304 (1ms)",
      "user": "Mozilla/5.0 (Windows NT 10.0; ",
      "timestamp": "2026-07-07 07:47:38",
      "ip": "127.0.0.1",
      "device": "Windows PC",
      "location": "Jakarta, Indonesia"
    },
    {
      "id": "log_1783410478948_179",
      "type": "api",
      "message": "[API REQUEST] POST /api/auth/login - Status: 200 (2ms)",
      "user": "Mozilla/5.0 (Windows NT 10.0; ",
      "timestamp": "2026-07-07 07:47:58",
      "ip": "127.0.0.1",
      "device": "Windows PC",
      "location": "Jakarta, Indonesia"
    }
  ],
  "maintenances": [
    {
      "id": "m1",
      "propertyId": "1",
      "propertyName": "Grand Melia Hotel",
      "assetName": "Lift Utama Tower Barat",
      "issue": "Pintu lift sering tersendat saat menutup",
      "type": "preventive",
      "status": "scheduled",
      "cost": 1500000,
      "createdAt": "2026-06-25 10:00"
    },
    {
      "id": "m2",
      "propertyId": "3",
      "propertyName": "Sudirman Suites Apartment",
      "assetName": "Genset Cadangan",
      "issue": "Kerusakan modul aki starter genset utama",
      "type": "corrective",
      "status": "in_progress",
      "cost": 4500000,
      "createdAt": "2026-06-24 08:30"
    },
    {
      "id": "m3",
      "propertyId": "5",
      "propertyName": "Kost Exclusive D`Green",
      "assetName": "Pompa Air Sumur Bor",
      "issue": "Deteksi getaran abnormal pada motor pompa air",
      "type": "predictive",
      "status": "pending",
      "cost": 800000,
      "createdAt": "2026-06-26 09:00"
    }
  ],
  "apiKeys": [
    {
      "id": "k1",
      "name": "Internal Web App Client Key",
      "key": "sh_live_rw_8df839c",
      "permissions": "all",
      "status": "active",
      "createdAt": "2026-06-25 10:00"
    },
    {
      "id": "k2",
      "name": "Mobile App Android/iOS SDK",
      "key": "sh_live_ro_9e27bf8",
      "permissions": "read-only",
      "status": "active",
      "createdAt": "2026-06-26 12:30"
    }
  ],
  "webhooks": [
    {
      "id": "w1",
      "name": "CRM Telegram Notification Webhook",
      "url": "https://api.telegram.org/bot682910/sendMessage",
      "secret": "whsec_tg_bot_abcd123",
      "events": [
        "check_out",
        "maintenance_started"
      ],
      "status": "active",
      "createdAt": "2026-06-25 10:15"
    },
    {
      "id": "w2",
      "name": "Main ERP Sync Server",
      "url": "https://httpbin.org/post",
      "secret": "whsec_erp_sync_efgh456",
      "events": [
        "check_in",
        "check_out",
        "cleaning_completed",
        "maintenance_completed"
      ],
      "status": "inactive",
      "createdAt": "2026-06-26 15:45"
    }
  ]
}