Skip to main content
PATCH
/
projects
/
{id}
Update a project
curl --request PATCH \
  --url https://www.ruddr.io/api/workspace/projects/{id} \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "key": "<string>",
  "name": "<string>",
  "clientId": "<string>",
  "billingTypeId": "<string>",
  "notes": "<string>",
  "statusId": "<string>",
  "recordStatusId": "<string>",
  "start": "2023-12-25",
  "end": "2023-12-25",
  "code": "<string>",
  "poNumber": "<string>",
  "currency": "<string>",
  "revenueRecognitionMethod": "<string>",
  "useRoles": true,
  "requiresNotes": true,
  "requiresTasks": true,
  "practiceId": "<string>",
  "businessUnitId": "<string>",
  "projectTypeId": "<string>",
  "tagIds": [
    "<string>"
  ],
  "salesRepresentativeId": "<string>",
  "useBudget": true,
  "budgetMode": "<string>",
  "budgetServiceRevenue": 123,
  "budgetBillableHours": 123,
  "budgetNonBillableHours": 123,
  "budgetExpensesBillableAmount": 123,
  "budgetExpensesNonBillableAmount": 123,
  "budgetOtherItemsAmount": 123,
  "useMonthlyBudget": true,
  "monthlyBudgetMode": "<string>",
  "monthlyBudgetServiceRevenue": 123,
  "monthlyBudgetBillableHours": 123,
  "monthlyBudgetNonBillableHours": 123,
  "monthlyBudgetExpensesBillableAmount": 123,
  "monthlyBudgetExpensesNonBillableAmount": 123,
  "monthlyBudgetOtherItemsAmount": 123,
  "lockTimeAndExpenses": true,
  "trackTimeToAssignedRoles": true,
  "capMaxMemberHoursPerDay": true,
  "maxMemberHoursPerDay": 123,
  "capMaxMemberHoursPerWeek": true,
  "maxMemberHoursPerWeek": 123,
  "capMaxMemberHoursPerMonth": true,
  "maxMemberHoursPerMonth": 123,
  "cloudFolderUrl": "<string>"
}
'
{
  "id": "572e66b1-60a6-4935-853f-b59b053112e6",
  "key": "website-redesign",
  "name": "Website Redesign",
  "notes": "Full redesign of the public-facing marketing website.",
  "statusId": "completed",
  "start": "2025-03-01",
  "end": "2025-09-30",
  "code": "WR-001",
  "poNumber": "PO-2025-001",
  "billingTypeId": "fixed",
  "isBillable": true,
  "currency": "USD",
  "revenueRecognitionMethod": "invoiced",
  "fixedFee": null,
  "fixedRecurringFee": null,
  "fixedRecurringStart": null,
  "fixedRecurringEnd": null,
  "useRoles": true,
  "useBudget": true,
  "budgetMode": "detailed",
  "useMonthlyBudget": true,
  "monthlyBudgetMode": "summary",
  "capMaxMemberHoursPerDay": true,
  "maxMemberHoursPerDay": 8,
  "capMaxMemberHoursPerWeek": true,
  "maxMemberHoursPerWeek": 40,
  "capMaxMemberHoursPerMonth": true,
  "maxMemberHoursPerMonth": 160,
  "requiresNotes": true,
  "requiresTasks": false,
  "recordStatusId": "active",
  "isProductive": true,
  "lockTimeAndExpenses": false,
  "trackTimeToAssignedRoles": true,
  "cloudFolderUrl": "https://drive.google.com/drive/folders/abc123",
  "createdAt": "2025-01-15T20:47:03.284Z",
  "completedOn": "2026-03-15",
  "client": {
    "id": "9b577a12-dd68-4df6-9f48-d8071684bfca",
    "name": "Acme Corp"
  },
  "practice": {
    "id": "9bb7965e-991f-451c-9ea6-94f9ff180258",
    "name": "Digital Strategy"
  },
  "projectType": {
    "id": "1be77fb4-6300-4db7-ad3f-c960083f5433",
    "name": "Web Development"
  },
  "projectGroup": {
    "id": "bacffeea-24de-441c-b770-9219516f4034",
    "name": "Q1 Initiatives"
  },
  "tags": [
    {
      "id": "9166a6d1-dbc6-43b5-abcf-450cbfcfd891",
      "name": "High Priority"
    }
  ],
  "businessUnit": {
    "id": "de116c6c-665e-4ce0-bf49-d77103f55095",
    "name": "Engineering"
  },
  "salesRepresentative": {
    "id": "d1980029-6c43-4af9-88ac-7b9066944f34",
    "name": "Jane Smith"
  },
  "budget": {
    "revenue": 150000,
    "servicesRevenue": 140000,
    "otherRevenue": 10000,
    "billableExpenses": 5000,
    "nonBillableExpenses": 2000,
    "billableHours": 1400,
    "nonBillableHours": 200
  },
  "monthlyBudget": {
    "revenue": 25000,
    "servicesRevenue": 23000,
    "otherRevenue": 2000,
    "billableExpenses": 800,
    "nonBillableExpenses": 300,
    "billableHours": 230,
    "nonBillableHours": 40
  }
}
A scope of work for a client. Contains the top-level information for a project in your workspace.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Path Parameters

id
string
required

The project uuid

Body

application/json
key
string

The slug for the project.

name
string

The name of the project (max 255 chars).

clientId
string

The client ID (uuid) for this project.

billingTypeId
string

The billing type for the project. Can be either "tm" (Time & Materials), "fixed" (Fixed Fee), "fixed_recurring" (Fixed Monthly), or "non_billable" (Non-Billable).

notes
string

Any notes about the project (max 5000 chars).

statusId
string

The project status. Can be: "tentative" (Tentative), "not_started" (Not Started), "in_progress" (In Progress), "paused" (Paused), or "completed" (Completed).

recordStatusId
string

The status of the project. Possible values are: "active" (Active) or "archived" (Archived).

start
string<date>

The start date (YYYY-MM-DD) of the project, must come on or before end date if set.

end
string<date>

The end date (YYYY-MM-DD) of the project, must come on or after the start date if set.

code
string

The project code (max 255 chars).

poNumber
string

The purchase order number (max 255 chars).

currency
string

The 3-letter currency code associated with the project. Will default to the client or workspace setting if not supplied.

revenueRecognitionMethod
string

The revenue recognition method. Will only be used if the billingTypeId is set to "fixed" or "fixed_recurring". Possible values are "invoiced" (As Invoiced) or "manual" (Manual).

useRoles
boolean

Whether the project uses roles.

requiresNotes
boolean

Requires notes on time entries for this project.

requiresTasks
boolean

Requires a task selection on time entries for this project.

practiceId
string

The practice ID (uuid) for this project.

businessUnitId
string

The business unit ID (uuid) of the business unit associated with this project.

projectTypeId
string

The project type ID (uuid) as defined in the custom data.

tagIds
string[]

A list of project tag IDs (uuid) associated with this project.

salesRepresentativeId
string

The member ID (uuid) of the sales representative associated with this project.

useBudget
boolean

Whether the project has a budget.

budgetMode
string

The budget mode. Only used if useBudget is set to true. Possible values are "summary" (Summary budget), "detailed" (Detailed budget), or "aggregated" (Detailed budget aggregated from tasks).

budgetServiceRevenue
number<float>

The amount of services revenue in the budget. Only used if useBudget is set to true.

budgetBillableHours
number<float>

The number of billable hours to budget. This will only get used if useBudget is true and budgetMode is "summary".

budgetNonBillableHours
number<float>

The number of non-billable hours to budget. This will only get used if useBudget is true and budgetMode is "summary".

budgetExpensesBillableAmount
number<float>

The amount of billable expenses to budget. This will only get used if useBudget is true and budgetMode is "summary".

budgetExpensesNonBillableAmount
number<float>

The amount of non-billable expenses to budget. This will only get used if useBudget is true and budgetMode is "summary".

budgetOtherItemsAmount
number<float>

The amount of "other items" to budget for. This will only get used if useBudget is true and budgetMode is "summary".

useMonthlyBudget
boolean

Whether the project has a monthly budget.

monthlyBudgetMode
string

The monthly budget mode. Only available if useMonthlyBudget is set to true. Possible values are "summary" (Summary budget) or "detailed" (Detailed budget).

monthlyBudgetServiceRevenue
number<float>

The amount of services revenue in the monthly budget. Only used if useMonthlyBudget is set to true.

monthlyBudgetBillableHours
number<float>

The number of billable hours in the monthly budget. This will only get used if useMonthlyBudget is true and monthlyBudgetMode is "summary".

monthlyBudgetNonBillableHours
number<float>

The number of non-billable hours in the monthly budget. This will only get used if useMonthlyBudget is true and monthlyBudgetMode is "summary".

monthlyBudgetExpensesBillableAmount
number<float>

The amount of billable expenses in the monthly budget. This will only get used if useMonthlyBudget is true and monthlyBudgetMode is "summary".

monthlyBudgetExpensesNonBillableAmount
number<float>

The amount of non-billable expenses in the monthly budget. This will only get used if useMonthlyBudget is true and monthlyBudgetMode is "summary".

monthlyBudgetOtherItemsAmount
number<float>

The amount of "other items" in the monthly budget. This will only get used if useMonthlyBudget is true and monthlyBudgetMode is "summary".

lockTimeAndExpenses
boolean

When enabled, locks time and expenses on the project, preventing further edits.

trackTimeToAssignedRoles
boolean

Whether time should be tracked per assigned role. Only applies when useRoles is true.

capMaxMemberHoursPerDay
boolean

When enabled, caps the number of hours a member can log per day on the project.

maxMemberHoursPerDay
integer<int32>

The maximum number of hours a member can log per day on the project. Only used if capMaxMemberHoursPerDay is true.

capMaxMemberHoursPerWeek
boolean

When enabled, caps the number of hours a member can log per week on the project.

maxMemberHoursPerWeek
integer<int32>

The maximum number of hours a member can log per week on the project. Only used if capMaxMemberHoursPerWeek is true.

capMaxMemberHoursPerMonth
boolean

When enabled, caps the number of hours a member can log per month on the project.

maxMemberHoursPerMonth
integer<int32>

The maximum number of hours a member can log per month on the project. Only used if capMaxMemberHoursPerMonth is true.

cloudFolderUrl
string

The cloud folder URL (max 1024 characters).

Response

200

id
string

The unique identifier for the object.

key
string

The slug for the project, will be autogenerated from the name property if not provided.

name
string

The name of the project (max 255 chars).

notes
string | null

Any notes about the project (max 5000 chars).

statusId
string

The project status. Can be: "tentative" (Tentative), "not_started" (Not Started), "in_progress" (In Progress), "paused" (Paused), "completed" (Completed), or "cancelled" (Cancelled).

start
string<date> | null

The start date for the project. Will be in the form YYYY-MM-DD.

end
string<date> | null

The end date for the project. Will be in the form YYYY-MM-DD. null if no end date is set.

code
string | null

The project code (max 255 chars).

poNumber
string | null

The purchase order number (max 255 chars).

billingTypeId
string

The billing type for the project. Can be either "tm" (Time & Materials), "fixed" (Fixed Fee), "fixed_recurring" (Fixed Monthly), or "non_billable" (Non-Billable).

isBillable
boolean

Whether this project is billable. Derived from billingTypeIdfalse only when billingTypeId is "non_billable".

currency
string

The 3-letter ISO 4217 currency code associated with the project.

revenueRecognitionMethod
string | null

The revenue recognition method. Only applicable when billingTypeId is "fixed" or "fixed_recurring". Possible values are "invoiced" (As Invoiced) or "manual" (Manual). null for other billing types.

fixedFee
number | null

Deprecated. Always null.

fixedRecurringFee
number | null

Deprecated. Always null.

fixedRecurringStart
string | null

Deprecated. Always null.

fixedRecurringEnd
string | null

Deprecated. Always null.

useRoles
boolean

Whether the project uses roles.

useBudget
boolean

Whether the project has a budget.

budgetMode
string | null

The budget mode. Only present when useBudget is true. Possible values are "summary" (Summary budget), "detailed" (Detailed budget), or "aggregated" (Detailed budget aggregated from tasks). null when useBudget is false.

useMonthlyBudget
boolean

Whether the project has a monthly budget.

monthlyBudgetMode
string | null

The monthly budget mode. Only present when useMonthlyBudget is true. Possible values are "summary" (Summary budget) or "detailed" (Detailed budget). null when useMonthlyBudget is false.

capMaxMemberHoursPerDay
boolean

When enabled, caps the number of hours a member can log per day on the project.

maxMemberHoursPerDay
integer | null

The maximum number of hours a member can log per day on the project. Only used if capMaxMemberHoursPerDay is true. null when capMaxMemberHoursPerDay is false.

capMaxMemberHoursPerWeek
boolean

When enabled, caps the number of hours a member can log per week on the project.

maxMemberHoursPerWeek
integer | null

The maximum number of hours a member can log per week on the project. Only used if capMaxMemberHoursPerWeek is true. null when capMaxMemberHoursPerWeek is false.

capMaxMemberHoursPerMonth
boolean

When enabled, caps the number of hours a member can log per month on the project.

maxMemberHoursPerMonth
integer | null

The maximum number of hours a member can log per month on the project. Only used if capMaxMemberHoursPerMonth is true. null when capMaxMemberHoursPerMonth is false.

requiresNotes
boolean

Requires notes on time entries for this project.

requiresTasks
boolean

Requires a task selection on time entries for this project.

recordStatusId
string

The record status of the project. Possible values are: "active" (Active) or "archived" (Archived).

isProductive
boolean | null

Whether time logged on this project counts as productive time. Only applicable for internal client projects; null for external client projects.

lockTimeAndExpenses
boolean

When enabled, locks time and expenses on the project, preventing further edits.

trackTimeToAssignedRoles
boolean | null

Whether time should be tracked per assigned role. Only applies when useRoles is true. null when useRoles is false.

cloudFolderUrl
string | null

The URL to the associated cloud storage folder.

createdAt
string<date-time>

The timestamp when the object was created.

completedOn
string<date> | null

The date the project was completed. Only populated when statusId is "completed".

client
object

The client associated with the project.

practice
object

The practice associated with the project.

projectType
object

The project type associated with the project.

projectGroup
object

The project group associated with the project.

tags
object[]

The list of tags associated with the project.

businessUnit
object

The business unit associated with the project.

salesRepresentative
object

The member designated as the sales representative for the project.

budget
object

The overall budget targets for the project. Only present when useBudget is true.

monthlyBudget
object

The monthly budget targets for the project. Only present when useMonthlyBudget is true.