Zum Inhalt springen
Leadtime
Deutsch
Esc
↑↓navigieren↵öffnen⌘Jvorschau

Partially update project

Updates only the fields provided in the request body. All fields are optional - only included fields will be updated.

How it works:

  • Send only the fields you want to update
  • Fields not included in the request remain unchanged
  • Arrays (users, teams, taskTypes, activities, tags) replace the entire array
  • Set a field to null to clear it (where applicable)

Description Format: If you provide a description field, it accepts HTML or Markdown and will be converted to the internal IDoc format.

Important Notes:

  • organizationId: Can be changed. The numeric project identifier is preserved when available; if it already exists in the target organization, the next available number is assigned automatically. The displayed short name uses the target organization prefix. Set null for internal projects.
  • phaseId: Can be updated, but is required for external single projects
  • enableExpressQuotations: Only applicable for external projects
  • guestAccess: Only applicable for external projects
PATCH/projects/{id}
Authorization
AuthorizationOAuth2 access token · headerrequired
Scopes:api:write
or
AuthorizationBearer token (JWT) · headerrequired
Path parameters
idstringrequired
Query parameters
fieldsToReturnstring

Comma-separated list of top-level response fields to return. Overrides the endpoint compact default unless responseShape=full is used.

responseShapestring

Advanced override. Omit for the endpoint compact default. Use full only when you need the complete endpoint response, including nested fields that are not selectable with fieldsToReturn.

Allowed:compactfull
Header parameters
LT-Response-Shapestring

Advanced override. Set to full only when you need the complete endpoint response, including nested fields that are not selectable with fieldsToReturn.

Allowed:full
Request body
requiredapplication/json
activitiesstring[]

Array of time activity IDs enabled for the project. Use GET /administration/task-settings/activities.

categoryIdstring

ID of the project category. Use GET /projects/categories to retrieve available categories.

customFieldsobjectrequired

Project custom fields as key-value pairs. Keys must be project custom field IDs from GET /administration/project-settings/custom-fields.

deadlineobject

Project deadline date

defaultAccountableIdobject

ID of the default accountable user. Use User.id from GET /workspace/users.

descriptionstring

Accepts Markdown or HTML for complex formatting. This content is rendered by the Leadtime rich editor, not by a plain Markdown viewer.

For quick/simple text, Markdown is acceptable. For polished user-facing content from an agent or integration, prefer structured HTML because it preserves editor blocks, links, and layout more predictably.

Use only the nodes and marks documented below for this field. Supported editor features differ by endpoint and field. Choose formatting for readability, not decoration: use headings for real sections, paragraphs for narrative text, lists or tables for structured facts, blockquotes for quoted context, callouts for important outcomes/risks/notes when supported, and explicit anchors for links. Do not rely on bare URLs or Markdown links when the link must be clickable; use explicit anchors such as <a href="https://example.com" target="_blank" rel="noopener noreferrer nofollow">link text</a>.

In HTML you can use:

Node Types and Marks

Nodes

paragraph Type: block Content: inline* (inline only — do not use block tags such as <p> inside; use e.g. <br>, <strong>, <em>, <span>…) Default paragraph. extraPlaceholder is an internal structure for the editor to show a ghost placeholder in empty “template” lines (ProseMirror JSON fragment or null). For normal agent output leave extraPlaceholder as null. Only set it if you are intentionally mirroring a field placeholder the user already has in the open editor; do not set random placeholder data for free-form answers. Atts:

  • extraPlaceholder: null
<p class="paragraph-base" extraplaceholder="null/some-value"></p>

heading Type: block Content: inline* (inline only — do not use block tags such as <p> inside; use e.g. <br>, <strong>, <em>, <span>…) Atts:

  • level: 1
<h1 class="heading-base"></h1>

bulletList Type: block list Content: listItem+ Atts: none

<ul class="list-base"><li></li></ul>

hardBreak Type: inline Atts: none

<br>

horizontalRule Type: block Atts: none

<hr class="hr-base">

orderedList Type: block list Content: listItem+ Atts:

  • start: 1
  • type: null
<ol class="order-list-base" type="null/some-value"><li></li></ol>

listItem Content: (paragraph|list)* (paragraphs and/or lists, in any order) Atts: none

<li></li>

blockquote Type: block Content: block+ (one or more block child nodes (e.g. paragraph, list, …)) Atts: none

<blockquote class="blockquote-base"><p class="paragraph-base"></p></blockquote>

Marks

link Atts:

  • href: null
  • target: _blank
  • rel: noopener noreferrer nofollow
  • class: null
  • title: null
<a target="_blank" rel="noopener noreferrer nofollow" href="">link text example</a>

bold Atts: none

<strong>bold text example</strong>

code Atts: none

<code>code text example</code>

italic Atts: none

<em>italic text example</em>

strike Atts: none

<s>strike text example</s>

underline Atts: none

<u>underline text example</u>

Also accepts ProseMirror IDoc JSON (object or string).

enableExpressQuotationsboolean

Whether express quotations are enabled for this project. Express quotations allow quick pricing of tasks without full project planning. Only applicable for external projects.

guestAccessboolean

Whether guest access is enabled (only applicable for client projects)

iconstring

Icon/emoji for the project

namestring

Name of the project

organizationIdobject

ID of the organization (required for client projects, must be null for internal projects). Use GET /organizations to retrieve available organizations.

phaseIdobject

ID of the project phase. Use GET /projects/phases to retrieve available phases.

responsibleIdobject

ID of the responsible user. Use User.id from GET /workspace/users.

statusIdstring

ID of the project status. Use GET /projects/statuses to retrieve available statuses.

tagsstring[]

Array of tags

taskTypesstring[]

Array of task type IDs enabled for the project. Use GET /tasks/types or GET /administration/task-settings/types.

teamsstring[]

Array of team IDs assigned to the project. Use GET /teams to retrieve available teams.

typestring

Project type - determines if project is internal or client-facing

Allowed:SingleSupport
usersstring[]

Array of User.id values assigned to the project. Use GET /workspace/users to retrieve workspace users.

valueGroupstring

Value group classification for the project

Allowed:DirectValueIndirectValueNonValueWaste
Responses
200
activitiesstring[]required

Array of time activity IDs enabled for the project

archivedAtobject | nullrequired

Archived timestamp

categoryIdstringrequired

ID of the project category

colorstringrequired

Project color (from organization or workspace default)

createdAtstring<date-time>required

Creation timestamp

customFieldsobjectrequired

Custom fields as key-value pairs

deadlineobject | nullrequired

Project deadline

defaultAccountableIdobject | nullrequired

ID of the default accountable user

descriptionstringrequired

Project description (HTML)

editedAtstring<date-time>required

Last edit timestamp

enableExpressQuotationsbooleanrequired

Whether express quotations are enabled

guestAccessbooleanrequired

Whether guest access is enabled

iconobject | nullrequired

Icon/emoji

idstringrequired

Project ID

isFavoritebooleanrequired

Whether the project is marked as favorite by the current user

namestringrequired

Project name

organizationobject | nullrequired

Organization details

Show properties
colorstring
namestring
shortNamestring
organizationIdobject | nullrequired

ID of the organization

phaseIdobject | nullrequired

ID of the project phase

responsibleIdobject | nullrequired

ID of the responsible user

shortNamestringrequired

Project short name (organization prefix + number)

shortNumbernumberrequired

Project short number

statusIdstringrequired

ID of the project status

tagsstring[]required

Array of tags

taskTypesstring[]required

Array of task type IDs enabled for the project

teamsstring[]required

Array of team IDs assigned to the project

typestringrequired

Project type

Allowed:SingleSupport
usersstring[]required

Array of user IDs assigned to the project

valueGroupstringrequired

Value group classification

Allowed:DirectValueIndirectValueNonValueWaste
401

Unauthorized - Invalid or missing authentication token

403

Forbidden - Insufficient API scopes or permissions

404

Project not found

Try it
Server
Authorization
Parameters
Bodyapplication/json
Request
curl -X PATCH "https://leadtime.app/api/public/projects/string" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "activities": [
    "550e8400-e29b-41d4-a716-44665544000b",
    "550e8400-e29b-41d4-a716-44665544000c"
  ],
  "categoryId": "550e8400-e29b-41d4-a716-446655440000",
  "customFields": {
    "customField1": "updated value",
    "customField2": 456
  },
  "deadline": "2024-12-31T23:59:59.000Z",
  "defaultAccountableId": "550e8400-e29b-41d4-a716-446655440004",
  "description": "<h1>Updated Description</h1><p>This is the updated project description.</p>",
  "enableExpressQuotations": false,
  "guestAccess": true,
  "icon": "🎯",
  "name": "Website Redesign v2",
  "organizationId": "550e8400-e29b-41d4-a716-446655440003",
  "phaseId": "550e8400-e29b-41d4-a716-446655440002",
  "responsibleId": "550e8400-e29b-41d4-a716-446655440005",
  "statusId": "550e8400-e29b-41d4-a716-446655440001",
  "tags": [
    "urgent",
    "high-priority",
    "review-needed"
  ],
  "taskTypes": [
    "550e8400-e29b-41d4-a716-446655440009",
    "550e8400-e29b-41d4-a716-44665544000a"
  ],
  "teams": [
    "550e8400-e29b-41d4-a716-446655440008"
  ],
  "type": "Single",
  "users": [
    "550e8400-e29b-41d4-a716-446655440006",
    "550e8400-e29b-41d4-a716-446655440007"
  ],
  "valueGroup": "DirectValue"
}'
Response
{
  "activities": [
    "550e8400-e29b-41d4-a716-44665544000c",
    "550e8400-e29b-41d4-a716-44665544000d"
  ],
  "archivedAt": null,
  "categoryId": "550e8400-e29b-41d4-a716-446655440001",
  "color": "#FF5733",
  "createdAt": "2024-01-01T00:00:00.000Z",
  "customFields": {
    "customField1": "value1",
    "customField2": 123
  },
  "deadline": "2024-12-31T23:59:59.000Z",
  "defaultAccountableId": "550e8400-e29b-41d4-a716-446655440005",
  "description": "<h1>Project Description</h1><p>This is a comprehensive project.</p>",
  "editedAt": "2024-01-15T10:30:00.000Z",
  "enableExpressQuotations": false,
  "guestAccess": false,
  "icon": "🚀",
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "isFavorite": false,
  "name": "Website Redesign",
  "organization": {
    "color": "#FF5733",
    "name": "ACME Corporation",
    "shortName": "ACME"
  },
  "organizationId": "550e8400-e29b-41d4-a716-446655440004",
  "phaseId": "550e8400-e29b-41d4-a716-446655440003",
  "responsibleId": "550e8400-e29b-41d4-a716-446655440006",
  "shortName": "ACME-123",
  "shortNumber": 123,
  "statusId": "550e8400-e29b-41d4-a716-446655440002",
  "tags": [
    "urgent",
    "high-priority"
  ],
  "taskTypes": [
    "550e8400-e29b-41d4-a716-44665544000a",
    "550e8400-e29b-41d4-a716-44665544000b"
  ],
  "teams": [
    "550e8400-e29b-41d4-a716-446655440009"
  ],
  "type": "Single",
  "users": [
    "550e8400-e29b-41d4-a716-446655440007",
    "550e8400-e29b-41d4-a716-446655440008"
  ],
  "valueGroup": "DirectValue"
}