Create a timesheet
Creates a timesheet for a member. All time entries within the specified date range are associated with the timesheet and submitted for approval.
The start and end must fall within the same ISO week (Monday through Sunday). In the simplest case, start is Monday and end is Sunday of the same week.
Split weeks
When a workspace has split-week timesheets enabled (at month boundaries or semi-month boundaries), the timesheet period may be shorter than a full week. In these cases, start and end must match one of the valid split boundaries:
- Month-end split: If the workspace splits timesheets at the end of the month and a week crosses a month boundary, valid periods are Monday through the last day of the month, or the first day of the new month through Sunday.
- Semi-month split: If the workspace splits timesheets at the 15th of the month and a week crosses the 15th, valid periods are Monday through the 15th, or the 16th through Sunday.
If the provided dates do not match a valid period, the API returns a 400 error listing the accepted start and end dates.
Timesheet attestation
A timesheet attestation requires a signature at the time of submission, and the API does not accept one. A timesheet for a member who is assigned a timesheet attestation must be submitted in the Ruddr app, and a request to submit one through the API returns a 400 error.
Request
- Base URL: https://www.ruddr.io/api/workspace
- URL: https://www.ruddr.io/api/workspace/timesheets
- Auth: HTTP bearer
Request body
Response
200
Example response
{
"id": "7b3e8f1a-4c2d-4a9e-b6f5-8d1c3e7a2b9f",
"start": "2025-03-03",
"end": "2025-03-09",
"createdAt": "2025-03-09T14:22:18.437Z",
"submittedOn": "2025-03-09T14:22:18.437Z",
"hours": 38.5,
"attestationText": "I certify that all hours worked during this period have been accurately recorded and associated with the correct projects and tasks.",
"attestationSignature": "Sarah Chen",
"member": {
"id": "a1d4e7b2-3f8c-4e6a-9b5d-2c7f1a8e4d3b",
"name": "Sarah Chen"
},
"timeEntries": [
{
"id": "c9f2a4b7-1e8d-4c3f-a6b5-7d2e9f1c8a4b",
"minutes": 480
},
{
"id": "d8e3b5c6-2f9a-4d1e-b7c4-6a3f8e2d9b5c",
"minutes": 360
},
{
"id": "e7f4c6d5-3a1b-4e2f-c8d3-5b4a9f1e7c6d",
"minutes": 450
},
{
"id": "f6a5d7e4-4b2c-4f3a-d9e2-4c5b8a2f6d7e",
"minutes": 420
}
],
"submittedByMember": {
"id": "38df2dce-936f-44a1-993a-66a545fdcee4",
"name": "Michael Torres"
},
"attested": true
}Changes
No recorded changes to this operation across all 1 revision of this API.