Partially update project upload
Updates specific fields of an existing project upload. Only provided fields are updated; all fields are optional.
What can be updated:
- projectId: Change which project the upload belongs to (must exist and user must have access)
- description: Update the description text (set to null to clear)
- categoryId: Change or remove the category (set to null to remove category assignment)
Note: The file itself cannot be changed. To replace a file, delete the upload and create a new one.
Validation:
- Upload must exist and belong to the workspace
- If projectId is provided, project must exist and user must have access
- If categoryId is provided, category must exist and belong to the workspace
What is returned: Complete updated upload details including all current field values.
Note: This endpoint requires the Projects.manageUploads permission.
PATCH
/projects/uploads/{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/jsoncategoryIdobject | nullChange the category assignment for the upload. Provide the UUID of a category, or set to null to remove the category. The category must exist in the workspace if provided. If not provided, the category remains unchanged.
descriptionobject | nullUpdate the description text for the upload. Provide a new description string, or set to null to clear the description. If not provided, the description remains unchanged.
projectIdstringChange which project this upload belongs to. Provide the UUID of the target project. The project must exist in the workspace and the user must have access to it. If not provided, the upload remains associated with its current project.
Responses
200
categoryIdobject | nullrequiredUUID of the category assigned to this upload for thematic organization. Can be null if no category is assigned.
createdAtstringrequiredISO 8601 formatted timestamp indicating when the upload record was created. Format: YYYY-MM-DDTHH:mm:ss.sssZ
descriptionobject | nullrequiredFree text description for classifying the upload content. Can be null if no description was provided.
fileIdstringrequiredUUID of the underlying file in workspace storage. This references the file uploaded via POST /workspace/upload.
fileNamestringrequiredOriginal filename of the uploaded file, as stored in the File relation. This is the name the file had when uploaded.
fileSizenumberrequiredSize of the file in bytes. Use this to display file sizes in a human-readable format (e.g., KB, MB).
idstringrequiredUnique identifier for the project upload record (UUID format)
mimeTypestringrequiredMIME type of the file indicating its format (e.g., application/pdf, image/png, text/plain). Retrieved from the File relation.
projectIdstringrequiredUUID of the project this upload belongs to. Determines which project the file is associated with.
updatedAtstringrequiredISO 8601 formatted timestamp indicating when the upload record was last updated. Format: YYYY-MM-DDTHH:mm:ss.sssZ. This changes whenever any field of the upload is modified.
userIdstringrequiredUUID of the user who created this upload. This identifies who uploaded or last updated the file.
400Validation errors
401Unauthorized - Invalid or missing authentication token
403Forbidden - Insufficient API scopes or permissions
Request
curl -X PATCH "https://leadtime.app/api/public/projects/uploads/string" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"categoryId": "123e4567-e89b-12d3-a456-426614174222",
"description": "Updated project documentation",
"projectId": "123e4567-e89b-12d3-a456-426614174000"
}'const response = await fetch("https://leadtime.app/api/public/projects/uploads/string", {
method: "PATCH",
headers: {
"Authorization": "Bearer YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
},
body: JSON.stringify({
"categoryId": "123e4567-e89b-12d3-a456-426614174222",
"description": "Updated project documentation",
"projectId": "123e4567-e89b-12d3-a456-426614174000"
})
});import requests
response = requests.patch(
"https://leadtime.app/api/public/projects/uploads/string",
headers={
"Authorization": "Bearer YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
},
json={
"categoryId": "123e4567-e89b-12d3-a456-426614174222",
"description": "Updated project documentation",
"projectId": "123e4567-e89b-12d3-a456-426614174000"
},
)Response
{
"categoryId": "123e4567-e89b-12d3-a456-426614174222",
"createdAt": "2024-01-01T12:00:00.000Z",
"description": "Project documentation for Q1 2024",
"fileId": "123e4567-e89b-12d3-a456-426614174111",
"fileName": "documentation.pdf",
"fileSize": 1048576,
"id": "123e4567-e89b-12d3-a456-426614174333",
"mimeType": "application/pdf",
"projectId": "123e4567-e89b-12d3-a456-426614174000",
"updatedAt": "2024-01-02T14:30:00.000Z",
"userId": "123e4567-e89b-12d3-a456-426614174444"
}Validation errors
Unauthorized - Invalid or missing authentication token
Forbidden - Insufficient API scopes or permissions