Zum Inhalt springen
Leadtime
Deutsch
Esc
navigateopen⌘Jpreview

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 ```html <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 ```html <h1 class="heading-base"></h1> ``` **bulletList** Type: block list Content: listItem+ Atts: none ```html <ul class="list-base"><li></li></ul> ``` **hardBreak** Type: inline Atts: none ```html <br> ``` **horizontalRule** Type: block Atts: none ```html <hr class="hr-base"> ``` **orderedList** Type: block list Content: listItem+ Atts: - start: 1 - type: null ```html <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 ```html <li></li> ``` **blockquote** Type: block Content: block+ (one or more block child nodes (e.g. paragraph, list, …)) Atts: none ```html <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 ```html <a target="_blank" rel="noopener noreferrer nofollow" href="">link text example</a> ``` **bold** Atts: none ```html <strong>bold text example</strong> ``` **code** Atts: none ```html <code>code text example</code> ``` **italic** Atts: none ```html <em>italic text example</em> ``` **strike** Atts: none ```html <s>strike text example</s> ``` **underline** Atts: none ```html <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
401Unauthorized - Invalid or missing authentication token
403Forbidden - Insufficient API scopes or permissions
404Project not found
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"
}