# Get All Timesheets Retrieve all timesheets for a specific workspace. Supports filtering by status, date range, user ID, and specific timesheet ID. Results are paginated and can be sorted by creation date. Filters: - id: Filter by specific encrypted timesheet ID - status: Filter by timesheet status (e.g., open, submitted, approved, rejected) - date_from / date_to: Filter by date range - user_id: Filter by user ID - order_by: Sort by creation date (asc or desc) Response Structure: - Totals: Each timesheet includes user information (user_id, member), date range (date_from, date_to), total_minutes, submission details, and status. - Daily Breakdown: The daily_breakdown object contains daily tracked time grouped by date. Each date has an array of project entries showing project_id, project_name, contract_id, and total_minutes for that day. - Amount Information: total_amount fields (both at timesheet level and in daily breakdown) are only included if the authenticated user has permission to see rates in the workspace. Pagination: - Results are paginated with configurable page size - Default: 20 items per page, maximum: 100 Endpoint: GET /timesheets Version: 2.0.0 Security: oauth2, apiKey ## Query parameters: - `workspace_id` (integer, required) ID of the workspace Example: 1 - `id` (string) Filter by specific encrypted timesheet ID. The ID is an encrypted string. Example: "abc123xyz" - `status` (string) Filter by timesheet status. Possible values: pending, submitted, approved, rejected. Enum: "pending", "submitted", "approved", "rejected" - `date_from` (string) Filter timesheets starting from this date (inclusive). Format: YYYY-MM-DD. Example: "2024-01-01" - `date_to` (string) Filter timesheets up to this date (inclusive). Format: YYYY-MM-DD. Example: "2024-01-31" - `user_id` (integer) Filter timesheets by user ID. Returns only timesheets belonging to the specified user. Example: 123 - `order_by` (string) Sort order for timesheets by created_at. Possible values: asc (ascending), desc (descending). Enum: "asc", "desc" - `page` (integer) Page number for pagination. Default: 1. Example: 1 - `per_page` (integer) Number of items per page. Minimum: 1, Maximum: 100, Default: 20. Example: 20 ## Response 200 fields (application/json): - `success` (boolean) Example: true - `data` (array) Array of timesheet objects - `data.id` (string) Encrypted timesheet ID Example: "abc123xyz" - `data.user_id` (integer) User ID Example: 100 - `data.member` (string,null) User full name (firstname lastname) Example: "John Doe" - `data.date_from` (string,null) Timesheet period start date (pay period start) Example: "2024-01-01" - `data.date_to` (string,null) Timesheet period end date (pay period end) Example: "2024-01-07" - `data.total_minutes` (integer) Total tracked minutes for the entire timesheet period Example: 1737 - `data.total_amount` (number,null) Total amount for the entire timesheet period. Only included if the authenticated user has permission to see rates. Example: 192.97 - `data.submitted_on` (string,null) Timestamp when timesheet was submitted Example: "2024-01-05 10:30" - `data.reject_reason` (string,null) Reason for rejection (if rejected) - `data.status` (string) Timesheet status Enum: "open", "submitted", "approved", "rejected" - `data.currency` (string,null) Currency code for the user (from team settings or owner default). Only included if the authenticated user has permission to see rates. Example: "EUR" - `data.daily_breakdown` (object) Daily breakdown of tracked time by date. Each date contains an array of project entries with their tracked time. Amount is only included if the user has rate visibility permission. Example: {"2024-01-01":[{"project_id":789,"project_name":"Customer Engagement & Onboarding","contract_id":456,"total_minutes":76,"total_amount":0},{"project_id":null,"project_name":"No Project","contract_id":333,"total_minutes":223,"total_amount":74.33}],"2024-01-02":[{"project_id":789,"project_name":"Customer Engagement & Onboarding","contract_id":456,"total_minutes":442,"total_amount":0}]} - `meta` (object) - `meta.api_version` (string) Example: "2.0.0" - `meta.timestamp` (string) Example: "2024-01-15T10:30:00Z" - `meta.pagination` (object) - `meta.pagination.total` (integer) Total number of timesheets Example: 50 - `meta.pagination.per_page` (integer) Items per page Example: 20 - `meta.pagination.current_page` (integer) Current page number Example: 1 - `meta.pagination.last_page` (integer) Last page number Example: 3 - `meta.pagination.from` (integer) First item index on current page Example: 1 - `meta.pagination.to` (integer) Last item index on current page Example: 20 ## 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 422 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)