curl --request GET \
--url https://www.ruddr.io/api/workspace/timesheets/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://www.ruddr.io/api/workspace/timesheets/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://www.ruddr.io/api/workspace/timesheets/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://www.ruddr.io/api/workspace/timesheets/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://www.ruddr.io/api/workspace/timesheets/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://www.ruddr.io/api/workspace/timesheets/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.ruddr.io/api/workspace/timesheets/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"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
}{
"status": 400,
"message": "Parameter 'id' is not a valid UUID."
}{
"status": 403,
"message": "Feature 'Timesheets' is not enabled."
}{
"status": 404,
"message": "Object with id 'b4a7c2e1-8f3d-4b6a-9e5c-1d7f2a8b4c3e' not found."
}Get a timesheet
Returns a single timesheet by its unique identifier.
curl --request GET \
--url https://www.ruddr.io/api/workspace/timesheets/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://www.ruddr.io/api/workspace/timesheets/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://www.ruddr.io/api/workspace/timesheets/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://www.ruddr.io/api/workspace/timesheets/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://www.ruddr.io/api/workspace/timesheets/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://www.ruddr.io/api/workspace/timesheets/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.ruddr.io/api/workspace/timesheets/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"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
}{
"status": 400,
"message": "Parameter 'id' is not a valid UUID."
}{
"status": 403,
"message": "Feature 'Timesheets' is not enabled."
}{
"status": 404,
"message": "Object with id 'b4a7c2e1-8f3d-4b6a-9e5c-1d7f2a8b4c3e' not found."
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Response
200
The unique identifier for the object.
The start date of the timesheet period. Will be in the form YYYY-MM-DD.
The end date of the timesheet period. Will be in the form YYYY-MM-DD.
The timestamp when the object was created.
The timestamp when the timesheet was submitted.
The total number of hours tracked in this timesheet period.
The statement the member attested to when the timesheet was submitted. null when no attestation was captured.
The signature the member provided when attesting to the timesheet. null when no attestation was captured.
The member this timesheet was submitted for.
Show child attributes
Show child attributes
The time entries included in this timesheet.
Show child attributes
Show child attributes
The member who submitted the timesheet. This is the timesheet's own member when they submitted it themselves, and a different member when someone submitted on their behalf. null when the timesheet was submitted through the API, submitted automatically on a schedule, or submitted before this field was introduced.
Show child attributes
Show child attributes
Whether the timesheet was attested. This is a calculated value based on whether an attestationSignature was captured.