{
    "ok": true,
    "calendar": {
        "month": "2026-07",
        "today_day": 5,
        "claimed_count": 1,
        "total_days": 10,
        "can_claim_today": true,
        "claimable_day": 2,
        "days": [
            {
                "id": 1,
                "calendar_month": "2026-07",
                "day_number": 1,
                "label": "Monthly Kick-off",
                "reward_json": "{\"coins\": 100, \"xp\": 25}",
                "image_path": "",
                "is_bonus_day": 0,
                "is_enabled": 1,
                "created_at": "2026-07-01 09:33:35",
                "updated_at": "2026-07-01 09:33:35",
                "reward": {
                    "coins": 100,
                    "xp": 25
                },
                "claimed": true,
                "claim": {
                    "id": 1,
                    "user_id": 904,
                    "calendar_month": "2026-07",
                    "day_number": 1,
                    "claim_date": "2026-07-03",
                    "reward_json": "{\"coins\":100,\"xp\":25}",
                    "idempotency_key": "monthly_login_904_2026-07_1",
                    "claimed_at": "2026-07-03 23:44:34"
                },
                "is_today": false,
                "can_claim": false,
                "locked": false
            },
            {
                "id": 2,
                "calendar_month": "2026-07",
                "day_number": 2,
                "label": "Training Funds",
                "reward_json": "{\"coins\": 125, \"xp\": 35}",
                "image_path": "",
                "is_bonus_day": 0,
                "is_enabled": 1,
                "created_at": "2026-07-01 09:33:35",
                "updated_at": "2026-07-01 09:33:35",
                "reward": {
                    "coins": 125,
                    "xp": 35
                },
                "claimed": false,
                "claim": null,
                "is_today": false,
                "can_claim": true,
                "locked": false
            },
            {
                "id": 3,
                "calendar_month": "2026-07",
                "day_number": 3,
                "label": "Pack Prep",
                "reward_json": "{\"coins\": 150, \"xp\": 50}",
                "image_path": "",
                "is_bonus_day": 0,
                "is_enabled": 1,
                "created_at": "2026-07-01 09:33:35",
                "updated_at": "2026-07-01 09:33:35",
                "reward": {
                    "coins": 150,
                    "xp": 50
                },
                "claimed": false,
                "claim": null,
                "is_today": false,
                "can_claim": true,
                "locked": false
            },
            {
                "id": 4,
                "calendar_month": "2026-07",
                "day_number": 4,
                "label": "Squad Energy",
                "reward_json": "{\"coins\": 175, \"xp\": 60}",
                "image_path": "",
                "is_bonus_day": 0,
                "is_enabled": 1,
                "created_at": "2026-07-01 09:33:35",
                "updated_at": "2026-07-01 09:33:35",
                "reward": {
                    "coins": 175,
                    "xp": 60
                },
                "claimed": false,
                "claim": null,
                "is_today": false,
                "can_claim": true,
                "locked": false
            },
            {
                "id": 5,
                "calendar_month": "2026-07",
                "day_number": 5,
                "label": "Event Push",
                "reward_json": "{\"coins\": 225, \"xp\": 80, \"battlepass_xp\": 40}",
                "image_path": "",
                "is_bonus_day": 1,
                "is_enabled": 1,
                "created_at": "2026-07-01 09:33:35",
                "updated_at": "2026-07-01 09:33:35",
                "reward": {
                    "coins": 225,
                    "xp": 80,
                    "battlepass_xp": 40
                },
                "claimed": false,
                "claim": null,
                "is_today": true,
                "can_claim": true,
                "locked": false
            },
            {
                "id": 6,
                "calendar_month": "2026-07",
                "day_number": 6,
                "label": "Market Watch",
                "reward_json": "{\"coins\": 175, \"xp\": 60}",
                "image_path": "",
                "is_bonus_day": 0,
                "is_enabled": 1,
                "created_at": "2026-07-01 09:33:35",
                "updated_at": "2026-07-01 09:33:35",
                "reward": {
                    "coins": 175,
                    "xp": 60
                },
                "claimed": false,
                "claim": null,
                "is_today": false,
                "can_claim": false,
                "locked": true
            },
            {
                "id": 7,
                "calendar_month": "2026-07",
                "day_number": 7,
                "label": "Weekly Bonus",
                "reward_json": "{\"coins\": 350, \"gems\": 10, \"xp\": 120, \"battlepass_xp\": 80}",
                "image_path": "",
                "is_bonus_day": 1,
                "is_enabled": 1,
                "created_at": "2026-07-01 09:33:35",
                "updated_at": "2026-07-01 09:33:35",
                "reward": {
                    "coins": 350,
                    "gems": 10,
                    "xp": 120,
                    "battlepass_xp": 80
                },
                "claimed": false,
                "claim": null,
                "is_today": false,
                "can_claim": false,
                "locked": true
            },
            {
                "id": 8,
                "calendar_month": "2026-07",
                "day_number": 14,
                "label": "Fortnight Bonus",
                "reward_json": "{\"coins\": 500, \"gems\": 20, \"xp\": 200, \"battlepass_xp\": 150}",
                "image_path": "",
                "is_bonus_day": 1,
                "is_enabled": 1,
                "created_at": "2026-07-01 09:33:35",
                "updated_at": "2026-07-01 09:33:35",
                "reward": {
                    "coins": 500,
                    "gems": 20,
                    "xp": 200,
                    "battlepass_xp": 150
                },
                "claimed": false,
                "claim": null,
                "is_today": false,
                "can_claim": false,
                "locked": true
            },
            {
                "id": 9,
                "calendar_month": "2026-07",
                "day_number": 21,
                "label": "Three Week Bonus",
                "reward_json": "{\"coins\": 650, \"gems\": 30, \"xp\": 260, \"battlepass_xp\": 200}",
                "image_path": "",
                "is_bonus_day": 1,
                "is_enabled": 1,
                "created_at": "2026-07-01 09:33:35",
                "updated_at": "2026-07-01 09:33:35",
                "reward": {
                    "coins": 650,
                    "gems": 30,
                    "xp": 260,
                    "battlepass_xp": 200
                },
                "claimed": false,
                "claim": null,
                "is_today": false,
                "can_claim": false,
                "locked": true
            },
            {
                "id": 10,
                "calendar_month": "2026-07",
                "day_number": 28,
                "label": "Monthly Finish",
                "reward_json": "{\"coins\": 1000, \"gems\": 60, \"xp\": 400, \"battlepass_xp\": 300}",
                "image_path": "",
                "is_bonus_day": 1,
                "is_enabled": 1,
                "created_at": "2026-07-01 09:33:35",
                "updated_at": "2026-07-01 09:33:35",
                "reward": {
                    "coins": 1000,
                    "gems": 60,
                    "xp": 400,
                    "battlepass_xp": 300
                },
                "claimed": false,
                "claim": null,
                "is_today": false,
                "can_claim": false,
                "locked": true
            }
        ]
    }
}