Update Project
This endpoint allows you to update an existing project. All fields are optional; only provided fields will be updated.
Request
PATCH /api/v1/projects/:id
curl --request PATCH \
--url 'https://www.zep-online.de/zepinstanz/next/api/v1/projects/123' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data '{
"name": "Website Relaunch 2024",
"description": "Complete overhaul of company website",
"start_date": "2024-01-15",
"end_date": "2024-06-30",
"plan_hours": 500.0,
"plan_expenses": 15000.00,
"project_status_id": "in_progress"
}'Parameters
- id (integer, required): The ID of the project to update
Optional Fields
All fields are optional. You can update individual or multiple fields at once:
Basic Information
- name (string): Project name/identifier (max. 64 characters, must be unique)
- department_id (integer): Department ID
- description (string): Project description (max. 255 characters)
- start_date (string): Project start date (Format: YYYY-MM-DD)
- end_date (string): Project end date (Format: YYYY-MM-DD, must be after start_date)
- comments (string): Additional comments or notes
Location Information
- location_address (string): Address (max. 64 characters)
- location_city (string): City (max. 64 characters)
- location_state (string): State/Region (max. 64 characters)
- location_country (string): Country (max. 32 characters)
Planning Data
- plan_hours (number): Planned hours (≥ 0)
- plan_expenses (number): Planned expenses (≥ 0)
- plan_wage (number): Planned wage (≥ 0)
- plan_expenses_travel (number): Planned travel expenses (≥ 0)
- plan_hours_done (number): Completed hours
- plan_hours_invoiced (number): Invoiced hours
- plan_hours_children (number): Planned hours for sub-projects (≥ 0)
- plan_hours_per_day (number): Planned hours per day (≥ 0)
- plan_warning_percent (number): Warning percentage 1 (≥ 0)
- plan_warning_percent_2 (number): Warning percentage 2 (≥ 0)
- plan_warning_percent_3 (number): Warning percentage 3 (≥ 0)
- plan_can_exceed (integer): Plan can exceed option (enum value)
Cost Accounting
- cost_object (string): Cost center (max. 32 characters)
- cost_object_identifier (string/integer): Cost center identifier (max. 32 characters or number ≥ 0)
- revenue_account (string): Revenue account (max. 32 characters)
Customer Information
- customer_id (integer): Customer ID
- customer_contact_id (integer): Customer contact person ID
- customer_project_reference (string): Customer reference for the project (max. 64 characters)
- customer_billing_address_id (integer): Billing address ID
- customer_shipping_address_id (integer): Shipping address ID
- has_multiple_customers (boolean): Multiple customers for this project
Billing and Language Settings
- billing_type (integer): Billing type
- default_billability (integer): Default billability
- receipts_billability (integer): Receipts billability
- billing_tasks (boolean): Bill tasks
- currency (string): Currency
- language (integer): Language
Status and References
- project_status_id (string): Project status ID (max. 64 characters)
- url (string): Project URL (max. 255 characters)
- reference_commission (string): Commission reference (max. 100 characters)
- reference_procurement (string): Procurement reference (max. 100 characters)
- reference_object (string): Object reference (max. 100 characters)
- reference_order (string): Order reference (max. 100 characters)
Reporting and Formatting Options
- indicate_hours_for_daily_proof (integer): Indicate hours for daily proof
- indicate_remarks_for_daily_proof (integer): Indicate remarks for daily proof
- indicate_all_locations_per_day (integer): Show all locations per day
- indicate_all_activities_per_day (integer): Show all activities per day
- also_take_into_account_the_price_factors_for_hourly_rates (integer): Consider price factors for hourly rates
- employee_name_time_report_format (integer): Employee name format in time report
- employee_name_project_sales_volume_format (integer): Employee name format in project sales volume
- employee_name_invoice_attachment_format (integer): Employee name format in invoice attachments
Other Fields
- travel_flat_rate (number): Travel flat rate
- keywords (array): Array of keywords (strings)
- dynamic_attributes (array): Custom dynamic attributes (array of objects)
- categories (array): Array of category IDs (integers)
Response
{
"data": {
"id": 123,
"name": "Website Relaunch 2024",
"description": "Complete overhaul of company website",
"start_date": "2024-01-15",
"end_date": "2024-06-30",
"plan_hours": "500.00",
"plan_expenses": "15000.00",
"project_status_id": "in_progress",
"department_id": 5,
"customer_id": 42,
"created": "2023-12-10T09:00:00.000000Z",
"modified": "2024-11-20T15:30:00.000000Z"
},
"info": null
}Response Fields
- data: The updated project object
- info: Optional consistency information when project data was adjusted during update
Error Codes
- 401 Unauthorized: Invalid or missing authentication
- 404 Not Found: Project not found
- 422 Unprocessable Entity: Validation error
Notes
- Only the submitted fields will be updated; unspecified fields remain unchanged
- Project name must be unique if changed
- End date must be after start date if both are provided
- All planning values (hours, expenses) must be non-negative
- Currency and language codes must exist in the system
- References to customers, departments, and contact persons must be valid IDs