curl --request POST \
--url https://www.ruddr.io/api/workspace/project-rate-cards \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"projectId": "<string>",
"start": "2023-12-25",
"notes": "<string>",
"memberRates": [
{
"memberId": "<string>",
"rate": 123,
"overrideCostRate": true,
"costCurrency": "<string>",
"costPerHour": 123,
"overheadCostPerHour": 123
}
],
"roleRates": [
{
"projectRoleId": "<string>",
"rate": 123
}
]
}
'import requests
url = "https://www.ruddr.io/api/workspace/project-rate-cards"
payload = {
"projectId": "<string>",
"start": "2023-12-25",
"notes": "<string>",
"memberRates": [
{
"memberId": "<string>",
"rate": 123,
"overrideCostRate": True,
"costCurrency": "<string>",
"costPerHour": 123,
"overheadCostPerHour": 123
}
],
"roleRates": [
{
"projectRoleId": "<string>",
"rate": 123
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
projectId: '<string>',
start: '2023-12-25',
notes: '<string>',
memberRates: [
{
memberId: '<string>',
rate: 123,
overrideCostRate: true,
costCurrency: '<string>',
costPerHour: 123,
overheadCostPerHour: 123
}
],
roleRates: [{projectRoleId: '<string>', rate: 123}]
})
};
fetch('https://www.ruddr.io/api/workspace/project-rate-cards', 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-rate-cards",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'projectId' => '<string>',
'start' => '2023-12-25',
'notes' => '<string>',
'memberRates' => [
[
'memberId' => '<string>',
'rate' => 123,
'overrideCostRate' => true,
'costCurrency' => '<string>',
'costPerHour' => 123,
'overheadCostPerHour' => 123
]
],
'roleRates' => [
[
'projectRoleId' => '<string>',
'rate' => 123
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://www.ruddr.io/api/workspace/project-rate-cards"
payload := strings.NewReader("{\n \"projectId\": \"<string>\",\n \"start\": \"2023-12-25\",\n \"notes\": \"<string>\",\n \"memberRates\": [\n {\n \"memberId\": \"<string>\",\n \"rate\": 123,\n \"overrideCostRate\": true,\n \"costCurrency\": \"<string>\",\n \"costPerHour\": 123,\n \"overheadCostPerHour\": 123\n }\n ],\n \"roleRates\": [\n {\n \"projectRoleId\": \"<string>\",\n \"rate\": 123\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://www.ruddr.io/api/workspace/project-rate-cards")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"projectId\": \"<string>\",\n \"start\": \"2023-12-25\",\n \"notes\": \"<string>\",\n \"memberRates\": [\n {\n \"memberId\": \"<string>\",\n \"rate\": 123,\n \"overrideCostRate\": true,\n \"costCurrency\": \"<string>\",\n \"costPerHour\": 123,\n \"overheadCostPerHour\": 123\n }\n ],\n \"roleRates\": [\n {\n \"projectRoleId\": \"<string>\",\n \"rate\": 123\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.ruddr.io/api/workspace/project-rate-cards")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"projectId\": \"<string>\",\n \"start\": \"2023-12-25\",\n \"notes\": \"<string>\",\n \"memberRates\": [\n {\n \"memberId\": \"<string>\",\n \"rate\": 123,\n \"overrideCostRate\": true,\n \"costCurrency\": \"<string>\",\n \"costPerHour\": 123,\n \"overheadCostPerHour\": 123\n }\n ],\n \"roleRates\": [\n {\n \"projectRoleId\": \"<string>\",\n \"rate\": 123\n }\n ]\n}"
response = http.request(request)
puts response.read_bodyCreate a project rate card
Requires the Project Rate Cards workspace feature and useRateCards turned on for the project.
curl --request POST \
--url https://www.ruddr.io/api/workspace/project-rate-cards \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"projectId": "<string>",
"start": "2023-12-25",
"notes": "<string>",
"memberRates": [
{
"memberId": "<string>",
"rate": 123,
"overrideCostRate": true,
"costCurrency": "<string>",
"costPerHour": 123,
"overheadCostPerHour": 123
}
],
"roleRates": [
{
"projectRoleId": "<string>",
"rate": 123
}
]
}
'import requests
url = "https://www.ruddr.io/api/workspace/project-rate-cards"
payload = {
"projectId": "<string>",
"start": "2023-12-25",
"notes": "<string>",
"memberRates": [
{
"memberId": "<string>",
"rate": 123,
"overrideCostRate": True,
"costCurrency": "<string>",
"costPerHour": 123,
"overheadCostPerHour": 123
}
],
"roleRates": [
{
"projectRoleId": "<string>",
"rate": 123
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
projectId: '<string>',
start: '2023-12-25',
notes: '<string>',
memberRates: [
{
memberId: '<string>',
rate: 123,
overrideCostRate: true,
costCurrency: '<string>',
costPerHour: 123,
overheadCostPerHour: 123
}
],
roleRates: [{projectRoleId: '<string>', rate: 123}]
})
};
fetch('https://www.ruddr.io/api/workspace/project-rate-cards', 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-rate-cards",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'projectId' => '<string>',
'start' => '2023-12-25',
'notes' => '<string>',
'memberRates' => [
[
'memberId' => '<string>',
'rate' => 123,
'overrideCostRate' => true,
'costCurrency' => '<string>',
'costPerHour' => 123,
'overheadCostPerHour' => 123
]
],
'roleRates' => [
[
'projectRoleId' => '<string>',
'rate' => 123
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://www.ruddr.io/api/workspace/project-rate-cards"
payload := strings.NewReader("{\n \"projectId\": \"<string>\",\n \"start\": \"2023-12-25\",\n \"notes\": \"<string>\",\n \"memberRates\": [\n {\n \"memberId\": \"<string>\",\n \"rate\": 123,\n \"overrideCostRate\": true,\n \"costCurrency\": \"<string>\",\n \"costPerHour\": 123,\n \"overheadCostPerHour\": 123\n }\n ],\n \"roleRates\": [\n {\n \"projectRoleId\": \"<string>\",\n \"rate\": 123\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://www.ruddr.io/api/workspace/project-rate-cards")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"projectId\": \"<string>\",\n \"start\": \"2023-12-25\",\n \"notes\": \"<string>\",\n \"memberRates\": [\n {\n \"memberId\": \"<string>\",\n \"rate\": 123,\n \"overrideCostRate\": true,\n \"costCurrency\": \"<string>\",\n \"costPerHour\": 123,\n \"overheadCostPerHour\": 123\n }\n ],\n \"roleRates\": [\n {\n \"projectRoleId\": \"<string>\",\n \"rate\": 123\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.ruddr.io/api/workspace/project-rate-cards")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"projectId\": \"<string>\",\n \"start\": \"2023-12-25\",\n \"notes\": \"<string>\",\n \"memberRates\": [\n {\n \"memberId\": \"<string>\",\n \"rate\": 123,\n \"overrideCostRate\": true,\n \"costCurrency\": \"<string>\",\n \"costPerHour\": 123,\n \"overheadCostPerHour\": 123\n }\n ],\n \"roleRates\": [\n {\n \"projectRoleId\": \"<string>\",\n \"rate\": 123\n }\n ]\n}"
response = http.request(request)
puts response.read_bodyAuthorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
The unique identifier of the project the rate card belongs to.
The date the rate card takes effect. Will be in the form YYYY-MM-DD. The new rate card starts from the rates in effect on that date, and any rates supplied are written on top.
Notes describing the rate card.
The member rates to write onto the rate card.
Show child attributes
Show child attributes
The role rates to write onto the rate card.
Show child attributes
Show child attributes
Response
200
The unique identifier for the object.
Notes describing the rate card.
The date the rate card takes effect. Will be in the form YYYY-MM-DD. Null for the earliest rate card on a project, which covers every date before the next one.
The last date the rate card covers. Will be in the form YYYY-MM-DD. Derived from the start of the next rate card, and null for the last one.
Whether the project budget is priced with this rate card.
The timestamp when the object was created.
The project this rate card belongs to.
Show child attributes
Show child attributes
The member rates recorded on this rate card.
Show child attributes
Show child attributes
The role rates recorded on this rate card.
Show child attributes
Show child attributes