curl --request GET \
--url https://www.ruddr.io/api/workspace/project-members/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://www.ruddr.io/api/workspace/project-members/{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/project-members/{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/project-members/{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/project-members/{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/project-members/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.ruddr.io/api/workspace/project-members/{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": "a3f2e1d4-5b6c-7890-abcd-ef1234567890",
"typeId": "collaborator",
"isActive": true,
"isBillable": true,
"rate": 175.5,
"overrideCostRate": true,
"costCurrency": "USD",
"costPerHour": 85,
"overheadCostPerHour": 12.5,
"createdAt": "2025-03-10T14:22:31.000Z",
"member": {
"id": "b7c8d9e0-1f2a-3b4c-5d6e-7f8a9b0c1d2e",
"name": "Sarah Chen"
},
"project": {
"id": "c4d5e6f7-8a9b-0c1d-2e3f-4a5b6c7d8e9f",
"name": "Enterprise Portal Redesign",
"client": {
"id": "d1e2f3a4-b5c6-d7e8-f9a0-b1c2d3e4f5a6",
"name": "Meridian Technologies"
}
},
"roles": null,
"budget": {
"billableHours": 120,
"nonBillableHours": 20
},
"monthlyBudget": {
"billableHours": 40,
"nonBillableHours": 6.5
},
"rateCards": [
{
"id": "f1a2b3c4-d5e6-4f70-8192-a3b4c5d6e7f8",
"start": null,
"end": "2025-06-30",
"rate": 150,
"overrideCostRate": true,
"costCurrency": "USD",
"costPerHour": 85,
"overheadCostPerHour": 12.5
},
{
"id": "a9b8c7d6-e5f4-4a3b-9c2d-1e0f9a8b7c6d",
"start": "2025-07-01",
"end": null,
"rate": 175.5,
"overrideCostRate": true,
"costCurrency": "USD",
"costPerHour": 85,
"overheadCostPerHour": 12.5
}
]
}{
"status": 400,
"message": "Parameter 'id' is not a valid UUID."
}{
"status": 404,
"message": "Object with id 'b2c4e6a8-1d3f-5a7c-9e0b-d4f6a8c2e1b3' not found."
}Get a project member
curl --request GET \
--url https://www.ruddr.io/api/workspace/project-members/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://www.ruddr.io/api/workspace/project-members/{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/project-members/{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/project-members/{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/project-members/{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/project-members/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.ruddr.io/api/workspace/project-members/{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": "a3f2e1d4-5b6c-7890-abcd-ef1234567890",
"typeId": "collaborator",
"isActive": true,
"isBillable": true,
"rate": 175.5,
"overrideCostRate": true,
"costCurrency": "USD",
"costPerHour": 85,
"overheadCostPerHour": 12.5,
"createdAt": "2025-03-10T14:22:31.000Z",
"member": {
"id": "b7c8d9e0-1f2a-3b4c-5d6e-7f8a9b0c1d2e",
"name": "Sarah Chen"
},
"project": {
"id": "c4d5e6f7-8a9b-0c1d-2e3f-4a5b6c7d8e9f",
"name": "Enterprise Portal Redesign",
"client": {
"id": "d1e2f3a4-b5c6-d7e8-f9a0-b1c2d3e4f5a6",
"name": "Meridian Technologies"
}
},
"roles": null,
"budget": {
"billableHours": 120,
"nonBillableHours": 20
},
"monthlyBudget": {
"billableHours": 40,
"nonBillableHours": 6.5
},
"rateCards": [
{
"id": "f1a2b3c4-d5e6-4f70-8192-a3b4c5d6e7f8",
"start": null,
"end": "2025-06-30",
"rate": 150,
"overrideCostRate": true,
"costCurrency": "USD",
"costPerHour": 85,
"overheadCostPerHour": 12.5
},
{
"id": "a9b8c7d6-e5f4-4a3b-9c2d-1e0f9a8b7c6d",
"start": "2025-07-01",
"end": null,
"rate": 175.5,
"overrideCostRate": true,
"costCurrency": "USD",
"costPerHour": 85,
"overheadCostPerHour": 12.5
}
]
}{
"status": 400,
"message": "Parameter 'id' is not a valid UUID."
}{
"status": 404,
"message": "Object with id 'b2c4e6a8-1d3f-5a7c-9e0b-d4f6a8c2e1b3' not found."
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
The project member uuid
Response
200
The unique identifier for the object.
The project member type.
collaborator, administrator Whether the member is active on the project. Returns false when the member is deactivated on the project team or deactivated at the workspace level.
Whether the member is billable on this project. Only used if the project is not using roles; otherwise billability is assigned at the role level and this field is null.
The member's billing rate for the project. Only used if the project is not using roles and the member is billable; otherwise null. When Project Rate Cards is enabled, this is the rate on the rate card covering today; see rateCards for other periods.
Whether this project member's cost rate is overridden at the project member level rather than using the workspace or member default. When Project Rate Cards is enabled, this is the value on the rate card covering today; see rateCards for other periods.
The ISO 4217 currency code for the overridden cost rate. Only populated when overrideCostRate is true; otherwise null. When Project Rate Cards is enabled, this is the value on the rate card covering today.
The overridden cost per hour for this project member. Only populated when overrideCostRate is true; otherwise null. When Project Rate Cards is enabled, this is the value on the rate card covering today.
The overridden overhead cost per hour for this project member. Only populated when overrideCostRate is true; otherwise null. When Project Rate Cards is enabled, this is the value on the rate card covering today.
The timestamp when the object was created.
The workspace member assigned to this project.
Show child attributes
Show child attributes
The project this member belongs to.
Show child attributes
Show child attributes
The project roles assigned to this member. null when the project does not use roles.
Show child attributes
Show child attributes
The member's budget hours for the project. null when the project does not use a budget or uses roles.
Show child attributes
Show child attributes
The member's monthly budget hours for the project. null when the project does not use a monthly budget in detailed mode or uses roles.
Show child attributes
Show child attributes
The member's rates on each project rate card, earliest first. null if the Project Rate Cards feature is not enabled.
Show child attributes
Show child attributes