{
  "venue": {
    "name": "Arena Basket",
    "address": "Jl. Sudirman No. 123, Jakarta Selatan",
    "phone": "+62 812-3456-7890",
    "operating_hours": { "open": "06:00", "close": "23:00" },
    "timezone": "Asia/Jakarta"
  },

  "courts": [
    {
      "id": 1,
      "name": "Court A",
      "slug": "court-a",
      "type": "Full Court",
      "capacity": 10,
      "image": "/images/courts/court-a.jpg",
      "pricing": {
        "weekday": 150000,
        "weekend": 200000,
        "peak_hours": { "start": "18:00", "end": "22:00", "surcharge": 25000 }
      },
      "amenities": [
        { "key": "lighting", "label": "LED Lighting", "icon": "💡" },
        { "key": "ac", "label": "Air Conditioning", "icon": "❄️" },
        { "key": "scoreboard", "label": "Digital Scoreboard", "icon": "📊" },
        { "key": "sound", "label": "Sound System", "icon": "🔊" }
      ],
      "iot_devices": [
        { "id": "dev-a1", "type": "lighting", "name": "LED Panel A", "protocol": "mqtt", "topic": "court-a/lights", "status": "online" },
        { "id": "dev-a2", "type": "ac", "name": "AC Split 2PK", "protocol": "mqtt", "topic": "court-a/ac", "status": "online" },
        { "id": "dev-a3", "type": "scoreboard", "name": "LED Score Board", "protocol": "mqtt", "topic": "court-a/scoreboard", "status": "online" },
        { "id": "dev-a4", "type": "door_lock", "name": "Smart Lock Entrance", "protocol": "mqtt", "topic": "court-a/door", "status": "online" },
        { "id": "dev-a5", "type": "cctv", "name": "CCTV Hikvision", "protocol": "rtsp", "stream_url": "rtsp://192.168.1.10:554/stream", "status": "online" }
      ],
      "rating": 4.8,
      "total_reviews": 124
    },
    {
      "id": 2,
      "name": "Court B",
      "slug": "court-b",
      "type": "Half Court",
      "capacity": 6,
      "image": "/images/courts/court-b.jpg",
      "pricing": {
        "weekday": 100000,
        "weekend": 130000,
        "peak_hours": { "start": "18:00", "end": "22:00", "surcharge": 15000 }
      },
      "amenities": [
        { "key": "lighting", "label": "LED Lighting", "icon": "💡" },
        { "key": "ac", "label": "Air Conditioning", "icon": "❄️" }
      ],
      "iot_devices": [
        { "id": "dev-b1", "type": "lighting", "name": "LED Panel B", "protocol": "mqtt", "topic": "court-b/lights", "status": "online" },
        { "id": "dev-b2", "type": "ac", "name": "AC Split 1.5PK", "protocol": "mqtt", "topic": "court-b/ac", "status": "offline" },
        { "id": "dev-b3", "type": "door_lock", "name": "Smart Lock B", "protocol": "mqtt", "topic": "court-b/door", "status": "online" }
      ],
      "rating": 4.5,
      "total_reviews": 87
    },
    {
      "id": 3,
      "name": "Court C",
      "slug": "court-c",
      "type": "Full Court",
      "capacity": 10,
      "image": "/images/courts/court-c.jpg",
      "pricing": {
        "weekday": 150000,
        "weekend": 200000,
        "peak_hours": { "start": "18:00", "end": "22:00", "surcharge": 25000 }
      },
      "amenities": [
        { "key": "lighting", "label": "LED Lighting", "icon": "💡" },
        { "key": "ac", "label": "Air Conditioning", "icon": "❄️" },
        { "key": "scoreboard", "label": "Digital Scoreboard", "icon": "📊" },
        { "key": "sound", "label": "Sound System", "icon": "🔊" },
        { "key": "cctv", "label": "CCTV Recording", "icon": "📹" }
      ],
      "iot_devices": [
        { "id": "dev-c1", "type": "lighting", "name": "LED Panel C", "protocol": "mqtt", "topic": "court-c/lights", "status": "online" },
        { "id": "dev-c2", "type": "ac", "name": "AC Split 2PK", "protocol": "mqtt", "topic": "court-c/ac", "status": "online" },
        { "id": "dev-c3", "type": "scoreboard", "name": "LED Score Board", "protocol": "mqtt", "topic": "court-c/scoreboard", "status": "online" },
        { "id": "dev-c4", "type": "door_lock", "name": "Smart Lock C", "protocol": "mqtt", "topic": "court-c/door", "status": "online" },
        { "id": "dev-c5", "type": "cctv", "name": "CCTV Dahua", "protocol": "rtsp", "stream_url": "rtsp://192.168.1.20:554/stream", "status": "online" }
      ],
      "rating": 4.9,
      "total_reviews": 156
    }
  ],

  "timeslots": [
    { "time": "06:00", "hour": 6 },
    { "time": "07:00", "hour": 7 },
    { "time": "08:00", "hour": 8 },
    { "time": "09:00", "hour": 9 },
    { "time": "10:00", "hour": 10 },
    { "time": "11:00", "hour": 11 },
    { "time": "12:00", "hour": 12 },
    { "time": "13:00", "hour": 13 },
    { "time": "14:00", "hour": 14 },
    { "time": "15:00", "hour": 15 },
    { "time": "16:00", "hour": 16 },
    { "time": "17:00", "hour": 17 },
    { "time": "18:00", "hour": 18 },
    { "time": "19:00", "hour": 19 },
    { "time": "20:00", "hour": 20 },
    { "time": "21:00", "hour": 21 },
    { "time": "22:00", "hour": 22 }
  ],

  "booked_slots": {
    "2026-03-09": {
      "1": ["08:00", "09:00", "14:00", "15:00", "19:00", "20:00", "21:00"],
      "2": ["10:00", "11:00", "18:00", "19:00"],
      "3": ["07:00", "08:00", "09:00", "16:00", "17:00", "20:00", "21:00", "22:00"]
    }
  },

  "todays_schedule": [
    {
      "id": "BK-20260309-001",
      "court_id": 1,
      "court_name": "Court A",
      "tenant": { "name": "Raka & Friends", "phone": "+62 812-1111-2222", "avatar": null },
      "time_start": "08:00",
      "time_end": "10:00",
      "duration_hours": 2,
      "players": 8,
      "status": "completed",
      "payment_status": "paid",
      "amount": 300000,
      "checked_in_at": "2026-03-09T07:55:00",
      "checked_out_at": "2026-03-09T10:02:00"
    },
    {
      "id": "BK-20260309-002",
      "court_id": 1,
      "court_name": "Court A",
      "tenant": { "name": "BasketID Club", "phone": "+62 813-3333-4444", "avatar": null },
      "time_start": "14:00",
      "time_end": "16:00",
      "duration_hours": 2,
      "players": 10,
      "status": "active",
      "payment_status": "paid",
      "amount": 300000,
      "checked_in_at": "2026-03-09T13:58:00",
      "checked_out_at": null
    },
    {
      "id": "BK-20260309-003",
      "court_id": 1,
      "court_name": "Court A",
      "tenant": { "name": "Night Hoopers", "phone": "+62 815-5555-6666", "avatar": null },
      "time_start": "19:00",
      "time_end": "22:00",
      "duration_hours": 3,
      "players": 10,
      "status": "upcoming",
      "payment_status": "paid",
      "amount": 525000,
      "checked_in_at": null,
      "checked_out_at": null
    },
    {
      "id": "BK-20260309-004",
      "court_id": 2,
      "court_name": "Court B",
      "tenant": { "name": "Kevin Santoso", "phone": "+62 816-7777-8888", "avatar": null },
      "time_start": "10:00",
      "time_end": "12:00",
      "duration_hours": 2,
      "players": 4,
      "status": "completed",
      "payment_status": "paid",
      "amount": 200000,
      "checked_in_at": "2026-03-09T09:57:00",
      "checked_out_at": "2026-03-09T12:01:00"
    },
    {
      "id": "BK-20260309-005",
      "court_id": 2,
      "court_name": "Court B",
      "tenant": { "name": "Pickup Game", "phone": "+62 817-9999-0000", "avatar": null },
      "time_start": "18:00",
      "time_end": "20:00",
      "duration_hours": 2,
      "players": 6,
      "status": "upcoming",
      "payment_status": "paid",
      "amount": 200000,
      "checked_in_at": null,
      "checked_out_at": null
    },
    {
      "id": "BK-20260309-006",
      "court_id": 3,
      "court_name": "Court C",
      "tenant": { "name": "Morning Drills", "phone": "+62 818-1111-2222", "avatar": null },
      "time_start": "07:00",
      "time_end": "10:00",
      "duration_hours": 3,
      "players": 6,
      "status": "completed",
      "payment_status": "paid",
      "amount": 450000,
      "checked_in_at": "2026-03-09T06:52:00",
      "checked_out_at": "2026-03-09T10:00:00"
    },
    {
      "id": "BK-20260309-007",
      "court_id": 3,
      "court_name": "Court C",
      "tenant": { "name": "SMA 5 Training", "phone": "+62 819-3333-4444", "avatar": null },
      "time_start": "16:00",
      "time_end": "18:00",
      "duration_hours": 2,
      "players": 10,
      "status": "active",
      "payment_status": "paid",
      "amount": 300000,
      "checked_in_at": "2026-03-09T15:50:00",
      "checked_out_at": null
    },
    {
      "id": "BK-20260309-008",
      "court_id": 3,
      "court_name": "Court C",
      "tenant": { "name": "Pro League Practice", "phone": "+62 820-5555-6666", "avatar": null },
      "time_start": "20:00",
      "time_end": "23:00",
      "duration_hours": 3,
      "players": 10,
      "status": "upcoming",
      "payment_status": "paid",
      "amount": 525000,
      "checked_in_at": null,
      "checked_out_at": null
    }
  ],

  "court_live_status": [
    {
      "court_id": 1,
      "court_name": "Court A",
      "status": "active",
      "current_tenant": "BasketID Club",
      "session_start": "14:00",
      "session_end": "16:00",
      "time_remaining_minutes": 83,
      "progress_percent": 58,
      "devices": {
        "lighting": { "state": "on", "brightness": 100 },
        "ac": { "state": "on", "temperature": 24 },
        "scoreboard": { "state": "on" },
        "door_lock": { "state": "locked" },
        "cctv": { "state": "recording" }
      }
    },
    {
      "court_id": 2,
      "court_name": "Court B",
      "status": "idle",
      "current_tenant": null,
      "session_start": null,
      "session_end": null,
      "time_remaining_minutes": null,
      "progress_percent": 0,
      "devices": {
        "lighting": { "state": "off" },
        "ac": { "state": "off" },
        "door_lock": { "state": "locked" }
      }
    },
    {
      "court_id": 3,
      "court_name": "Court C",
      "status": "active",
      "current_tenant": "SMA 5 Training",
      "session_start": "16:00",
      "session_end": "18:00",
      "time_remaining_minutes": 47,
      "progress_percent": 72,
      "devices": {
        "lighting": { "state": "on", "brightness": 100 },
        "ac": { "state": "on", "temperature": 22 },
        "scoreboard": { "state": "off" },
        "door_lock": { "state": "unlocked" },
        "cctv": { "state": "recording" }
      }
    }
  ],

  "payment_methods": [
    { "id": "qris", "name": "QRIS", "icon": "qris", "description": "Scan & bayar", "gateway": "midtrans" },
    { "id": "va_bca", "name": "VA BCA", "icon": "bca", "description": "Transfer BCA", "gateway": "midtrans" },
    { "id": "va_mandiri", "name": "VA Mandiri", "icon": "mandiri", "description": "Transfer Mandiri", "gateway": "midtrans" },
    { "id": "va_bri", "name": "VA BRI", "icon": "bri", "description": "Transfer BRI", "gateway": "midtrans" },
    { "id": "gopay", "name": "GoPay", "icon": "gopay", "description": "Gojek wallet", "gateway": "midtrans" },
    { "id": "shopeepay", "name": "ShopeePay", "icon": "shopeepay", "description": "Shopee wallet", "gateway": "xendit" }
  ],

  "daily_stats": {
    "total_bookings": 8,
    "total_revenue": 2800000,
    "occupancy_rate": 73,
    "checkin_rate": 100,
    "revenue_vs_yesterday": 12.5,
    "bookings_vs_yesterday": 3
  },

  "reviews": [
    { "id": 1, "court_id": 1, "name": "Raka S.", "rating": 5, "text": "Lapangan bersih, lighting bagus banget!", "date": "2026-03-08" },
    { "id": 2, "court_id": 1, "name": "Deni P.", "rating": 4, "text": "AC dingin, cuma parkir agak sempit", "date": "2026-03-07" },
    { "id": 3, "court_id": 3, "name": "Andi W.", "rating": 5, "text": "Best court di Jakarta! CCTV bikin aman", "date": "2026-03-06" },
    { "id": 4, "court_id": 2, "name": "Budi R.", "rating": 4, "text": "Half court tapi cukup buat latihan shooting", "date": "2026-03-05" }
  ]
}
