---
title: "Update a project role"
method: PATCH
path: "/project-roles/{id}"
tags: ["Project Roles"]
---

# Update a project role

`PATCH /project-roles/{id}`

## Request

- Base URL: `https://www.ruddr.io/api/workspace`
- URL: `https://www.ruddr.io/api/workspace/project-roles/{id}`
- Auth: HTTP bearer

## Path parameters

- `id` string, required

## Request body

- object
  - `name` string: The name of the role (max 255 chars).
  - `isActive` boolean: Whether the role is still active on the project.
  - `isBillable` boolean: Whether the role is billable.
  - `rate` number, nullable: The billing rate for this role. Will only be applied for billable projects and roles. When Project Rate Cards is enabled, this updates the rate card covering today; use the project rate cards endpoints for other periods.
  - `estimatedBillableHours` number, nullable: The number of billable hours to budget. This will only get used if `useBudget` is `true` and `budgetMode` is `"detailed"` on the project.
  - `estimatedNonBillableHours` number, nullable: The number of non-billable hours to budget. This will only get used if `useBudget` is `true` and `budgetMode` is `"detailed"` on the project.
  - `estimatedMonthlyBillableHours` number, nullable: The number of billable hours on the monthly budget. This will only get used if `useMonthlyBudget` is `true` and `monthlyBudgetMode` is `"detailed"` on the project.
  - `estimatedMonthlyNonBillableHours` number, nullable: The number of non-billable hours on the monthly budget. This will only get used if `useMonthlyBudget` is `true` and `monthlyBudgetMode` is `"detailed"` on the project.
  - `disciplineId` string, nullable: The discipline ID (`uuid`) for this role.
  - `practiceId` string, nullable: The practice ID (`uuid`) for this role.
  - `locationId` string, nullable: The location ID (`uuid`) for this role.

## Response `200`

200

- ProjectRole
  - `id` string: The unique identifier for the object.
  - `name` string: The name of the role.
  - `isActive` boolean: Whether the role is still active on the project.
  - `isBillable` boolean: Whether the role is billable. Overridden to `false` when the project is non-billable.
  - `rate` number, nullable: The billing rate for this role. `null` when the role or project is non-billable. When Project Rate Cards is enabled, this is the rate on the rate card covering today; see `rateCards` for other periods.
  - `createdAt` string, date-time: The timestamp when the object was created.
  - `project` object: The project this role belongs to.
    - `id` string: The unique identifier for the object.
    - `name` string: The name of the project.
    - `client` object: The client associated with the project.
      - `id` string: The unique identifier for the object.
      - `name` string: The name of the client.
  - `discipline` object, nullable: The discipline associated with this role. `null` if not assigned.
    - `id` string: The unique identifier for the object.
    - `name` string: The name of the discipline.
  - `practice` object, nullable: The practice associated with this role. `null` if not assigned.
    - `id` string: The unique identifier for the object.
    - `name` string: The name of the practice.
  - `location` object, nullable: The location associated with this role. `null` if not assigned.
    - `id` string: The unique identifier for the object.
    - `name` string: The name of the location.
  - `budget` object, nullable: The budget hours for this role. `null` when the project does not use a budget.
    - `billableHours` number, nullable: The budgeted billable hours for this role. `null` when the role or project is non-billable.
    - `nonBillableHours` number, nullable: The budgeted non-billable hours for this role.
  - `monthlyBudget` object, nullable: The monthly budget hours for this role. `null` when the project does not use a monthly budget in detailed mode.
    - `billableHours` number, nullable: The budgeted monthly billable hours for this role. `null` when the role or project is non-billable.
    - `nonBillableHours` number, nullable: The budgeted monthly non-billable hours for this role.
  - `rateCards` object[], nullable: The role's rates on each project rate card, earliest first. `null` if the Project Rate Cards feature is not enabled.
    - `id` string: The unique identifier of the project rate card.
    - `start` string, date, nullable: The date the rate card takes effect. Will be in the form YYYY-MM-DD. `null` for the earliest rate card.
    - `end` string, date, nullable: The last date the rate card covers. Will be in the form YYYY-MM-DD. `null` for the last rate card.
    - `rate` number, nullable: The role's billing rate on this rate card. `null` when the role or project is non-billable.

## Other responses

- `400`: 400
- `404`: 404
- `409`: 409

---

[API](https://skmtc.dev/ruddr/apis/ruddr-api.md) · [All operations](https://skmtc.dev/ruddr/apis/ruddr-api/llms.txt) · [OpenAPI document](https://skmtc.dev/ruddr/apis/ruddr-api/revisions/01c3f2a969ba?raw)
