{"message":"Hub Shift Management API","version":"3.3.0","status":"operational","environment":"production","documentation":{"swagger":"/docs","redoc":"/redoc"},"authentication":{"login":"POST /api/auth/login","instructions":"Use /api/auth/login to get token, then click Authorize button and paste: Bearer YOUR_TOKEN"},"endpoints":{"authentication":"/api/auth/login","leave_management":{"leave_types":"/api/leave-types","leave_requests":"/api/leaves","leave_balances":"/api/leave-balances"},"schedule_lobby":"/api/schedule-lobby","lobby_settings":{"get_all_lobbies":"GET /api/v1/lobbies","get_lobby_info":"GET /api/v1/lobbies/{lobby_id}/info","get_settings":"GET /api/v1/lobbies/{lobby_id}/settings","create_update_settings":"POST /api/v1/lobbies/{lobby_id}/settings","partial_update":"PATCH /api/v1/lobbies/{lobby_id}/settings","delete_settings":"DELETE /api/v1/lobbies/{lobby_id}/settings","update_general":"PATCH /api/v1/lobbies/{lobby_id}/settings/general","update_notifications":"PATCH /api/v1/lobbies/{lobby_id}/settings/notifications","update_limitations":"PATCH /api/v1/lobbies/{lobby_id}/settings/limitations","update_week_time":"PATCH /api/v1/lobbies/{lobby_id}/settings/week-time"},"timeclock_rules":{"policies":{"POST":"/api/timeclock/policies (create policy with rules)","GET":"/api/timeclock/policies (list with filters)","GET_ONE":"/api/timeclock/policies/{id}","PUT":"/api/timeclock/policies/{id}","DELETE":"/api/timeclock/policies/{id}"},"rules":{"POST":"/api/timeclock/rules?policy_id={id} (create rule)","GET":"/api/timeclock/rules (list with filters)","GET_ONE":"/api/timeclock/rules/{id}","PUT":"/api/timeclock/rules/{id}","DELETE":"/api/timeclock/rules/{id}","ADD_CONDITION":"/api/timeclock/rules/{id}/conditions","REMOVE_CONDITION":"/api/timeclock/rules/{id}/conditions/{cid}"},"assignments":{"POST":"/api/timeclock/policy-assignments (assign to user/dept/location)","GET":"/api/timeclock/policy-assignments (list with filters)","GET_ONE":"/api/timeclock/policy-assignments/{id}","DELETE":"/api/timeclock/policy-assignments/{id}","GET_USER_POLICIES":"/api/timeclock/policy-assignments/user/{id}/active-policies"}},"schedule_management":{"schedules":{"POST":"/api/schedules (create schedule with breaks & apply_to dates)","GET":"/api/schedules (list with filters: employee, location, shift, status, dates)","GET_ONE":"/api/schedules/{id}","PUT":"/api/schedules/{id}","DELETE":"/api/schedules/{id} (soft delete)","CHECK_AVAILABILITY":"/api/schedules/check-availability"},"time_off":{"POST":"/api/time-off (create request)","GET":"/api/time-off (list with filters)","APPROVE":"/api/time-off/{id}/approve","DELETE":"/api/time-off/{id}"}},"shift_management":{"roles":{"POST":"/api/shifts/roles","GET":"/api/shifts/roles","GET_ONE":"/api/shifts/roles/{id}","PUT":"/api/shifts/roles/{id}","DELETE":"/api/shifts/roles/{id}"},"shifts":{"POST":"/api/shifts/shifts (create with breaks, requirements, weekly_offs)","GET":"/api/shifts/shifts (list with search & pagination)","GET_ONE":"/api/shifts/shifts/{id} (full details)","PUT":"/api/shifts/shifts/{id}","DELETE":"/api/shifts/shifts/{id}","RESTORE":"/api/shifts/shifts/{id}/restore"},"breaks":{"POST":"/api/shifts/shifts/{id}/breaks","GET":"/api/shifts/shifts/{id}/breaks","PUT":"/api/shifts/breaks/{id}","DELETE":"/api/shifts/breaks/{id}"},"assignments":{"POST":"/api/shifts/assignments (single)","POST_BULK":"/api/shifts/assignments/bulk (multiple)","GET":"/api/shifts/assignments (with filters)","GET_ONE":"/api/shifts/assignments/{id}","PUT":"/api/shifts/assignments/{id} (update status)","DELETE":"/api/shifts/assignments/{id}","RESTORE":"/api/shifts/assignments/{id}/restore"},"role_requirements":{"POST":"/api/shifts/shifts/{id}/role-requirements","GET":"/api/shifts/shifts/{id}/role-requirements","DELETE":"/api/shifts/role-requirements/{id}"},"utilities":{"capacity":"/api/shifts/shifts/{id}/assignments-count","employee_shifts":"/api/shifts/employee/{id}/assignments"}},"shift_requests":{"claim":{"POST":"/api/shift-requests/claim (claim open shift)","GET":"/api/shift-requests/claims/my-requests"},"drop":{"POST":"/api/shift-requests/drop (drop assigned shift)","GET":"/api/shift-requests/drops/my-requests"},"swap":{"POST":"/api/shift-requests/swap (swap with another employee)","POST_BULK":"/api/shift-requests/swap/bulk (swap with multiple)","GET":"/api/shift-requests/swaps/my-requests","GET_ELIGIBLE":"/api/shift-requests/shifts/{shift_id}/eligible-employees"},"common":{"GET_ALL":"/api/shift-requests/requests (all requests filtered)","GET_ONE":"/api/shift-requests/requests/{id}","GET_PENDING":"/api/shift-requests/pending (supervisor only)","SUPERVISOR_ACTION":"/api/shift-requests/requests/{id}/supervisor-action","TARGET_ACTION":"/api/shift-requests/requests/{id}/target-action (SWAP only)","CANCEL":"/api/shift-requests/requests/{id} (DELETE)"}},"timesheet":"/api/timesheet","timeclock":"/api/timeclock"}}