# Get Task Report Retrieve task-based time tracking report data for a date range, paginated by user. Returns time tracked per task for each user, with daily breakdown and overall task breakdown. Key Features: - Date range: Accepts start_date and end_date parameters (YYYY-MM-DD format). Maximum date range is 1 month (31 days). - Pagination: Results are paginated by user. Default is 30 users per page, maximum 100. - Filtering: Can filter by users, project_id, and task_id. - No Task entries: Entries without a task (task_id is null) are included by default. Use include_no_task=false to exclude them. - Tasks breakdown: Each user has an overall tasks_breakdown showing total time per task across the date range. - Daily breakdown: Each user has a daily_breakdown showing time per task for each day. - Security: Only workspace owners and executive managers can access this endpoint. Endpoint: GET /reports/task-report Version: 2.0.0 Security: oauth2, apiKey ## Query parameters: - `workspace_id` (integer, required) ID of the workspace Example: 1 - `start_date` (string, required) Start date of the report range. Format: YYYY-MM-DD (e.g., 2024-01-01). Must be before or equal to end_date. Example: "2024-01-01" - `end_date` (string, required) End date of the report range. Format: YYYY-MM-DD (e.g., 2024-01-31). Must be after or equal to start_date. Maximum date range is 1 month (31 days). Example: "2024-01-31" - `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] - `project_id` (array) Optional filter by specific project IDs. Can be provided as comma-separated values or as an array. If not provided, returns data for all projects. Example: [10,11,12] - `task_id` (array) Optional filter by specific task IDs. Can be provided as comma-separated values or as an array. If not provided, returns data for all tasks. Example: [5,6,7] - `include_no_task` (boolean) Whether to include time entries without a task (task_id is null). Default is true. Set to false to exclude entries without a task. Example: true - `page` (integer) Page number for pagination. Results are paginated by user, so each page contains up to per_page users with all their task data. Example: 1 - `per_page` (integer) Number of users per page. Each user includes all their task data for the date range. Minimum: 1, Maximum: 100, Default: 30. Example: 30 ## Response 200 fields (application/json): - `success` (boolean) Example: true - `data` (object) Task report data structure with time tracked per task for each user - `data.report_type` (string, required) Type of the report Example: "task_report" - `data.start_date` (string, required) Start date of the report range Example: "2024-01-01" - `data.end_date` (string, required) End date of the report range Example: "2024-01-31" - `data.total_users` (integer, required) Total number of users with task data in the report range Example: 5 - `data.per_page` (integer, required) Number of users per page Example: 30 - `data.current_page` (integer, required) Current page number for user pagination Example: 1 - `data.total_pages` (integer, required) Total number of pages for user pagination Example: 1 - `data.users` (array, required) Array of users with their task time tracking data - `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.total_minutes` (integer, required) Total tracked minutes for this user across all tasks in the date range Example: 960 - `data.users.inactive_minutes` (integer) Total inactive minutes for this user across all tasks in the date range Example: 90 - `data.users.total_amount` (number,null) Total amount earned for this user. Conditional field: Only included if workspace has rate_status = 1 (rate visibility enabled). Example: 480.5 - `data.users.currency` (string,null) Currency code for the amounts. Conditional field: Only included if workspace has rate_status = 1 (rate visibility enabled). Example: "USD" - `data.users.tasks_breakdown` (array, required) Array of tasks with total time tracked across the date range. Sorted by total_minutes descending. - `data.users.tasks_breakdown.task_id` (integer,null, required) Task ID. Null indicates time tracked without a specific task assigned. Example: 5 - `data.users.tasks_breakdown.task_title` (string,null) Task title. Null for entries without a task. Example: "Implement API" - `data.users.tasks_breakdown.project_id` (integer,null) Project ID associated with this task. Null if no project assigned. Example: 10 - `data.users.tasks_breakdown.project_name` (string,null) Project name. Null if no project assigned. Example: "Project Alpha" - `data.users.tasks_breakdown.contract_id` (integer,null) Contract ID (project-user assignment). Null if no contract assigned. Example: 20 - `data.users.tasks_breakdown.total_minutes` (integer, required) Total minutes tracked for this task across the date range Example: 600 - `data.users.tasks_breakdown.inactive_minutes` (integer) Total inactive minutes for this task across the date range Example: 50 - `data.users.tasks_breakdown.total_amount` (number,null) Total amount for this task. Conditional field: Only included if workspace has rate_status = 1. Example: 300 - `data.users.daily_breakdown` (object, required) Daily breakdown of task time tracking. Keys are dates (YYYY-MM-DD format). Example: {"2024-01-15":{"total_minutes":480,"total_amount":240.25,"tasks":[{"task_id":5,"task_title":"Implement API","project_id":10,"project_name":"Project Alpha","contract_id":20,"total_minutes":300,"total_amount":150},{"task_id":null,"task_title":null,"project_id":null,"project_name":null,"contract_id":null,"total_minutes":180,"total_amount":90.25}]}} - `message` (string) Example: "Task 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)