# Get Daily Attendance Report Retrieve daily attendance report data for a specific date, paginated by user. Returns attendance information including statuses, times, breaks, and productivity metrics for each user. Key Features: - Single date only: This endpoint accepts only one date (not a date range). Date must be in YYYY-MM-DD format. - Pagination: Results are paginated by user. Default is 30 users per page, maximum 100. - Statuses array: Each user can have multiple statuses (e.g., ["Late", "Left early"]). Possible statuses: "Present", "Late", "Left early", "Tracked less", "Absent", "On leave", "Holiday". - Time values in minutes: All time-related fields are returned as integers representing total minutes (e.g., 303 instead of "5h 3m"). - Filtering: Can filter by users and status. Status filter accepts string values: "late", "left_early", "tracked_less", "absent", "on_leave". - Break intervals: Returns break time intervals as an array of strings (e.g., ["14:30 - 15:25", "16:00 - 16:15"]). - Security: Only workspace owners and executive managers can access this endpoint. Endpoint: GET /reports/daily-attendance Version: 2.0.0 Security: oauth2, apiKey ## Query parameters: - `workspace_id` (integer, required) ID of the workspace (team_id from owner_user_rel table) Example: 1 - `date` (string, required) Date for the attendance report (Y-m-d format, e.g., 2024-12-22). Only single date is supported, not a date range. Example: "2024-12-22" - `users` (array) Optional filter by specific user IDs. Can be provided as comma-separated values (e.g., "100,101,102") or as an array. If not provided, returns all users. Example: [100,101,102] - `status` (array) Optional filter by attendance status. Can be provided as comma-separated values or as an array. Valid string values: "late" (Late coming), "left_early" (Early leaving), "tracked_less" (Tracked less than required), "absent" (Absent), "on_leave" (On leave). You can filter by multiple statuses (e.g., status=late,left_early). Enum: "late", "left_early", "tracked_less", "absent", "on_leave" - `page` (integer) Page number for pagination. Results are paginated by user, so each page contains up to per_page users with their attendance data. Example: 1 - `per_page` (integer) Number of users per page. Each user includes all their attendance data for the date. Minimum: 1, Maximum: 100, Default: 30. Example: 30 ## Response 200 fields (application/json): - `success` (boolean) Example: true - `data` (object) Daily attendance report data structure with attendance information for each user - `data.report_type` (string, required) Type of the report Example: "daily_attendance" - `data.date` (string, required) Date for the attendance report Example: "2024-12-22" - `data.total_users` (integer, required) Total number of users in the report Example: 5 - `data.per_page` (integer, required) Number of users per page Example: 30 - `data.current_page` (integer, required) Current page number Example: 1 - `data.total_pages` (integer, required) Total number of pages Example: 1 - `data.users` (array, required) Array of users with their attendance data for the date - `data.users.user_id` (integer, required) User ID Example: 100 - `data.users.member` (string,null) Full name of the user Example: "John Doe" - `data.users.statuses` (array, required) Array of attendance statuses for the user. A user can have multiple statuses (e.g., ["Late", "Left early"]). Possible values: "Present", "Late", "Left early", "Tracked less", "Absent", "On leave", "Holiday". Enum: "Present", "Late", "Left early", "Tracked less", "Absent", "On leave", "Holiday" - `data.users.start_time` (string,null) Start time of the work day in HH:mm format (24-hour format) or g:i A format (12-hour format) based on user's clock format preference Example: "09:00" - `data.users.end_time` (string,null) End time of the work day in HH:mm format (24-hour format) or g:i A format (12-hour format) based on user's clock format preference. May be "tracking" if user is still actively tracking. Example: "18:00" - `data.users.total_time_minutes` (integer, required) Total time worked in minutes (integer, not formatted like "5h 3m") Example: 540 - `data.users.tracked_time_minutes` (integer, required) Total tracked time in minutes (automatic tracking only, excludes manual, breaks, leaves, holidays) Example: 480 - `data.users.paid_leave_minutes` (integer, required) Total paid leave time in minutes - `data.users.paid_holiday_minutes` (integer, required) Total paid holiday time in minutes - `data.users.paid_break_minutes` (integer, required) Total paid break time in minutes Example: 30 - `data.users.unpaid_break_minutes` (integer, required) Total unpaid break time in minutes - `data.users.break_intervals` (array, required) Array of break time intervals as strings in "HH:mm - HH:mm" format. Includes both paid and unpaid breaks. Example: ["14:30 - 15:00","16:00 - 16:15"] - `data.users.manually_added_time_minutes` (integer, required) Total manually added time in minutes - `data.users.idle_time_minutes` (integer, required) Total idle time in minutes - `data.users.activity_level` (integer, required) Activity level percentage (0-100) based on mouse, keyboard, and scroll actions Example: 88 - `data.users.productivity_level` (integer, required) Productivity level percentage (0-100) based on app/website productivity settings Example: 92 - `data.users.outside_working_hours_minutes` (integer, required) Total time tracked outside working hours in minutes - `data.users.inside_working_hours_minutes` (integer, required) Total time tracked inside working hours in minutes Example: 540 - `data.users.is_working_day` (boolean, required) Whether the date is a working day for the workspace Example: true - `data.users.late_comment` (string,null) Comment explaining why the user was late (if applicable) Example: "Traffic jam" - `data.users.early_comment` (string,null) Comment explaining why the user left early (if applicable) Example: "Personal appointment" - `message` (string) Example: "Daily attendance report retrieved successfully" - `meta` (object) - `meta.api_version` (string) Example: "2.0.0" - `meta.timestamp` (string) ## Response 400 fields (application/json): - `success` (boolean, required) - `message` (string, required) Error message describing what went wrong Example: "An error occurred" - `error` (string,null) Optional additional error details Example: "Internal Server Error" - `meta` (object, required) - `meta.api_version` (string) Example: "2.0.0" - `meta.timestamp` (string) ## Response 401 fields (application/json): - `success` (boolean, required) - `message` (string, required) Error message describing what went wrong Example: "An error occurred" - `error` (string,null) Optional additional error details Example: "Internal Server Error" - `meta` (object, required) - `meta.api_version` (string) Example: "2.0.0" - `meta.timestamp` (string) ## Response 403 fields (application/json): - `success` (boolean, required) - `message` (string, required) Error message describing what went wrong Example: "An error occurred" - `error` (string,null) Optional additional error details Example: "Internal Server Error" - `meta` (object, required) - `meta.api_version` (string) Example: "2.0.0" - `meta.timestamp` (string) ## Response 500 fields (application/json): - `success` (boolean, required) - `message` (string, required) Error message describing what went wrong Example: "An error occurred" - `error` (string,null) Optional additional error details Example: "Internal Server Error" - `meta` (object, required) - `meta.api_version` (string) Example: "2.0.0" - `meta.timestamp` (string)