Update project custom field
Updates an existing project custom field. All fields must be provided (full replacement).
Required fields:
name: Updated display nametype: Field type enum valuetranslations: Complete translations array (all languages)
Optional fields:
description: Updated descriptionselectOptions: Updated options array (required for Select and MultiSelect types)translationsDescriptions: Updated description translations
Important:
- Changing field type may cause data loss if existing values are incompatible
- For Select/MultiSelect types, all options must be included in the request
- Removing options that are in use may cause validation errors
Note: This is a full update operation. Use PATCH endpoint if you only want to update specific fields.
PUT
/administration/project-settings/custom-fields/{id}Authorization
AuthorizationOAuth2 access token · headerrequiredScopes:
api:writeor
AuthorizationBearer token (JWT) · headerrequiredPath parameters
idstringrequiredQuery parameters
fieldsToReturnstringComma-separated list of top-level response fields to return. Overrides the endpoint compact default unless responseShape=full is used.
responseShapestringAdvanced 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:
compactfullHeader parameters
LT-Response-ShapestringAdvanced override. Set to full only when you need the complete endpoint response, including nested fields that are not selectable with fieldsToReturn.
Allowed:
fullRequest body
requiredapplication/jsondescriptionstringDescription of the custom field
namestringrequiredName of the custom field
selectOptionsProjectCustomFieldSelectOptionDto[]Select options (required for Select type fields)
Show propertiesHide properties
Array of
ProjectCustomFieldSelectOptionDtoidstringOptional unique identifier for the select option. If not provided, the value will be used as the identifier. Required when updating existing options.
translationsProjectCustomFieldSelectOptionTranslationDto[]requiredArray of translations for multilingual support. Each translation contains a language code and translated display name. The system automatically shows the correct language based on user preferences.
Show propertiesHide properties
Array of
ProjectCustomFieldSelectOptionTranslationDtolanguagestringrequiredISO 639-1 language code for the translation (e.g., "en" for English, "de" for German)
namestringrequiredTranslated display name for the select option in this language. Shown to users when selecting from dropdown options.
valuestringrequiredDisplay value for the select option. This is the value stored when the option is selected. Must be unique within the field.
translationsProjectCustomFieldTranslationDto[]requiredTranslations for the custom field name
Show propertiesHide properties
Array of
ProjectCustomFieldTranslationDtodescriptionstringTranslated description of the custom field in this language. Provides context about what information should be entered.
languagestringrequiredISO 639-1 language code for the translation (e.g., "en" for English, "de" for German)
namestringTranslated name of the custom field in this language. Used for multilingual display in project forms.
translationsDescriptionsProjectCustomFieldTranslationDto[]Translations for the custom field description
Show propertiesHide properties
Array of
ProjectCustomFieldTranslationDtodescriptionstringTranslated description of the custom field in this language. Provides context about what information should be entered.
languagestringrequiredISO 639-1 language code for the translation (e.g., "en" for English, "de" for German)
namestringTranslated name of the custom field in this language. Used for multilingual display in project forms.
typestringrequiredType of the custom field
Allowed:
TextTextareaNumberDateCheckboxSelectMultiSelectCurrencyUrlResponses
200Project custom field updated successfully
descriptionstringrequiredDescription providing context about what information should be entered in this field.
entitystringrequiredEntity type identifier. Always "Project" for project custom fields. Used internally to scope fields to specific entity types.
idstringrequiredUnique identifier (UUID) for the custom field. Used to reference this field when setting values on projects.
namestringrequiredDisplay name of the custom field. Shown as the field label in project forms.
selectOptionsProjectCustomFieldSelectOptionDto[]requiredArray of select options for Select and MultiSelect field types. Each option contains an ID, value, and translations. Empty array for other field types.
Show propertiesHide properties
Array of
ProjectCustomFieldSelectOptionDtoidstringOptional unique identifier for the select option. If not provided, the value will be used as the identifier. Required when updating existing options.
translationsProjectCustomFieldSelectOptionTranslationDto[]requiredArray of translations for multilingual support. Each translation contains a language code and translated display name. The system automatically shows the correct language based on user preferences.
Show propertiesHide properties
Array of
ProjectCustomFieldSelectOptionTranslationDtolanguagestringrequiredISO 639-1 language code for the translation (e.g., "en" for English, "de" for German)
namestringrequiredTranslated display name for the select option in this language. Shown to users when selecting from dropdown options.
valuestringrequiredDisplay value for the select option. This is the value stored when the option is selected. Must be unique within the field.
sortnumberrequiredNumeric sort order for display purposes. Lower numbers appear first in project forms. Determines the order in which fields are displayed.
translationsProjectCustomFieldTranslationDto[]requiredComplete array of translations for the field name. Each translation contains the language code and localized name.
Show propertiesHide properties
Array of
ProjectCustomFieldTranslationDtodescriptionstringTranslated description of the custom field in this language. Provides context about what information should be entered.
languagestringrequiredISO 639-1 language code for the translation (e.g., "en" for English, "de" for German)
namestringTranslated name of the custom field in this language. Used for multilingual display in project forms.
typestringrequiredField type enum value indicating the input type. Valid values: Text, Textarea, Number, Date, Checkbox, Select, MultiSelect.
Allowed:
TextTextareaNumberDateCheckboxSelectMultiSelectCurrencyUrl401Unauthorized - Invalid or missing authentication token
403Forbidden - Insufficient API scopes or permissions
Request
curl -X PUT "https://leadtime.app/api/public/administration/project-settings/custom-fields/string" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"description": "Priority level for the project",
"name": "Priority Level",
"selectOptions": [
{
"id": "option-1",
"translations": [
{
"language": "en",
"name": "High Priority"
},
{
"language": "de",
"name": "Hohe Priorität"
}
],
"value": "High Priority"
}
],
"translations": [
{
"language": "en",
"name": "Priority Level"
},
{
"language": "de",
"name": "Prioritätsstufe"
}
],
"translationsDescriptions": [
{
"description": "Priority level for the project",
"language": "en",
"name": "Priority Level"
}
],
"type": "Select"
}'const response = await fetch("https://leadtime.app/api/public/administration/project-settings/custom-fields/string", {
method: "PUT",
headers: {
"Authorization": "Bearer YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
},
body: JSON.stringify({
"description": "Priority level for the project",
"name": "Priority Level",
"selectOptions": [
{
"id": "option-1",
"translations": [
{
"language": "en",
"name": "High Priority"
},
{
"language": "de",
"name": "Hohe Priorität"
}
],
"value": "High Priority"
}
],
"translations": [
{
"language": "en",
"name": "Priority Level"
},
{
"language": "de",
"name": "Prioritätsstufe"
}
],
"translationsDescriptions": [
{
"description": "Priority level for the project",
"language": "en",
"name": "Priority Level"
}
],
"type": "Select"
})
});import requests
response = requests.put(
"https://leadtime.app/api/public/administration/project-settings/custom-fields/string",
headers={
"Authorization": "Bearer YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
},
json={
"description": "Priority level for the project",
"name": "Priority Level",
"selectOptions": [
{
"id": "option-1",
"translations": [
{
"language": "en",
"name": "High Priority"
},
{
"language": "de",
"name": "Hohe Priorität"
}
],
"value": "High Priority"
}
],
"translations": [
{
"language": "en",
"name": "Priority Level"
},
{
"language": "de",
"name": "Prioritätsstufe"
}
],
"translationsDescriptions": [
{
"description": "Priority level for the project",
"language": "en",
"name": "Priority Level"
}
],
"type": "Select"
},
)Response
{
"description": "Priority level for the project",
"entity": "Project",
"id": "123e4567-e89b-12d3-a456-426614174000",
"name": "Priority Level",
"selectOptions": [
{
"id": "option-1",
"translations": [
{
"language": "en",
"name": "High Priority"
},
{
"language": "de",
"name": "Hohe Priorität"
}
],
"value": "High Priority"
}
],
"sort": 1,
"translations": [
{
"description": "Priority level for the project",
"language": "en",
"name": "Priority Level"
}
],
"type": "Select"
}Unauthorized - Invalid or missing authentication token
Forbidden - Insufficient API scopes or permissions