Skip to main content

Changelog

2026-01

  • The endpoint GET /api/v2/sales/service/{?id} will also return the keys:
    • track_hours
    • track_cost
    • revenue_group_id
  • has_acquisition_service is added for all linked_projects of a sale when fetched from GET /api/v2/sales/sales/{?id}

2025-12

  • The endpoint GET /api/v2/sales/sales/{?id} will also return the key linked_projects. This contains an array with some info about the projects that are linked with the sale. linked_projects. This contains the following keys:
    • id of the project
    • name of the project
    • project_number of the project
    • created_at the date when the project was created. It has the YYYY-MM-DD HH-MM-SS format
    • project_status:
      • id of the project status
      • label of the status
      • color of the status
  • POST /api/v2/projects/assignment now returns the id of the created record instead of a list of all records.

2025-10

  • The endpoint GET /api/v2/hrm/leave will also return results without leave status.
  • Fixed inconsistencies in handling referenced entities. Referencing an invalid entity will now consistently result in a 400 Bad Request error. Affected endpoints are:
    • POST api/v2/documents/externaldocument

2025-09

  • The fields is_editable and is_deletable are only included in the API response when explicitly requested via the select parameter. Affected endpoints are:
    • GET api/v2/hours/hours
  • Contract change for GET /api/v2/hrm/leave
    • Added new key leave_status in the response
      • id
      • label

2025-08

  • Previously the application erroneously returned "501: not implemented" status codes. These cases have been updated to more appropriate status codes. Most of these cases are now returning a "404: not found" status code.

2025-07

  • In the new project service UI, you can set a specific registration timeframe. Several API calls have been updated to return the correct start_date and until_date for services. Affected endpoints are:
    • GET api/v2/hours/hours
    • GET api/v2/hours/timesheetrow

2025-05

  • explanation property added to the following endpoints
    • GET /api/v2/sales/service
    • GET /api/v2/projects/service
  • Contract change for GET /api/v2/crm/myorganizationprofile/{id}
    • Added key main_profile to denote if the organization profile is the main profile of the organization.

2025-04

  • Contract change for PUT /api/v2/projects/project/{id}
  • billable can no longer be changed for projects with services. To change the value of billable, existing services have to be removed first.

2025-03

  • Contract change for PUT|POST /api/v2/hours/hours
    • Fixed validation of hours records against assignment date ranges. Requests now fail if hours' start_date falls outside the assignment's period.
  • Behavior change when invoice_method is set to subscription, a value for subscription_cycle should be provided.
    • When unspecified, a fallback default of Month will be applied to maintain compatibility with existing integrations
    • To ensure consistent and expected behavior, please update your implementation to explicitly set a subscription_cycle when needed
    • For supported possible values, please have a look at the updated documentation for this endpoint.

2025-02

  • Add servicegroup type enum(all_included multiple_optional single_required single_optional) to /api/v2/sales/quote. type defaults to all_included
  • Contract change for PUT /api/v2/projects/service/{id}
    • If hour_types is omitted from the body, existing hour_types are no longer deleted from the project service.

2025-01

  • Add REST resource for external documents:
    • GET /api/v2/documents/externaldocument
    • POST /api/v2/documents/externaldocument
    • PUT /api/v2/documents/externaldocument
    • GET /api/v2/documents/externaldocument/{id}
    • DELETE /api/v2/documents/externaldocument/{id}
  • Add is_active property to a sale service resource indicating whether it was successfully created for endpoints:
    • GET /api/v2/sales/service
  • Contract change for POST /api/v2/projects/service
    • Newly created project services no longer contain the hour_types of the provided default service by default. You can still provide the hour_types you want to add to the service in the body.
  • In the GET /api/v2/hrm/absence endpoint:
    • The end_date field is empty when the absence is ongoing.
    • The field absence_ongoing indicates whether the absence is ongoing.
  • Add copy_latest_quote property when cloning sale to indicate if the last quote on the original sale should be copied
    • POST sales/sales/{id}/duplicate
  • Update the input types for POST /api/v2/customfields/option:
    • Added field customfield_id

2024-12

  • New key totals added in the service_groups key. Affected endpoints
    • GET /api/v2/sale/quote
    • GET /api/v2/sale/quote/{id}

2024-11

  • New property service_groups in:
    • GET /api/v2/sale/quote
    • GET /api/v2/sale/quote/{id}
  • New identifier format for newly created project services:
    • Newly created project services may have an ID in UUID-v7 format. For example: 01930bb6-87aa-779b-9561-fcb44ac3121d.
    • IDs for existing project services are not affected!
    • Project service IDs are used several endpoints (GET, POST and PUT):
      • api/v2/costs/expense
      • api/v2/costs/projectservices
      • api/v2/hours/hours
      • api/v2/hours/projectservices
      • api/v2/hours/timesheetrow
      • api/v2/invoices/invoice
      • api/v2/projects/assignment
      • api/v2/projects/service
      • api/v2/sales/service
      • api/v2/timers/timer
  • Added new key display_value to endpoints that contain individual custom_fields.

2024-10

  • Added stricter validation to timetables.
    • More invalid cases will now trigger validation errors.
    • Some error messages have been updated to be more informative.
    • The following endpoints are affected:
      • POST /api/v2/hrm/timetable
      • PUT /api/v2/hrm/timetable/{id}
  • Only list user accessible company profiles in the endpoint GET /api/v2/crm/myorganization

2024-07

  • Removed inactive linked_persons_contacts for the endpoints:
    • GET /api/v2/crm/person
    • GET /api/v2/crm/person/{id}
    • GET /api/v2/crm/organization
    • GET /api/v2/crm/organization/{id}
  • To get all contact persons for an organization, use the endpoint:
    • GET /api/v2/crm/contactperson?q[organization.id]={organisation_id}

2024-04

  • Added field grand_totals to the api/v2/sales/quote endpoint.
  • Re-enable adding email addresses to Mailchimp lists or deleting from those lists with these endpoints:
    • POST /api/v2/crm/person
    • PUT /api/v2/crm/person/{id}
    • DELETE /api/v2/crm/person/{id}
  • It is possible to get the Mailchimp lists of a person with GET /api/v2/crm/person/{id}.

2023-12

  • Migrated document /v1/storage/* endpoints to /api/v2/storage/* endpoints:
    • GET /api/v2/storage/avatar
    • GET /api/v2/storage/cachedthumb
    • GET /api/v2/storage/costsattachment
    • GET /api/v2/storage/documenteditordownload
    • GET /api/v2/storage/download
    • GET /api/v2/storage/downloadasattachment
    • GET /api/v2/storage/downloadletterpaper
    • GET /api/v2/storage/downloadlogo
    • GET /api/v2/storage/fileicon
    • GET /api/v2/storage/filex
    • GET /api/v2/storage/getfile
    • GET /api/v2/storage/getlogofile
    • GET /api/v2/storage/letterpaper
    • GET /api/v2/storage/loadfile
    • GET /api/v2/storage/logo
    • GET /api/v2/storage/preview
    • GET /api/v2/storage/signature
    • GET /api/v2/storage/thumbnail
    • POST /api/v2/storage/dropzoneupload
    • POST /api/v2/storage/getfileicon
    • POST /api/v2/storage/paperlayoutupload
    • POST /api/v2/storage/uploadstream
  • Added the following fields to the api/v2/projects/assignment endpoints:
    • created_at
    • updated_at

2023-11

  • Updated PUT api/v2/hrm/employee/{id} with these checks on if the employee status can be set to unemployed:
    • The employee user must have status blocked
    • All timetables of the employee must have an end date

2023-09

  • Updated PUT api/v2/crm/person/{id} making the field: family_name not mandatory

2023-08

  • Updated POST|PUT api/v2/crm/person making the field: family_name mandatory

2023-07

  • Updated POST|PUT api/v2/projects/service with support for 'Actual costs' (type = 'Hours')

2023-06

  • Updated GET api/v2/crm/organization with extra field
    • Added CustomerGroup value option
  • Updated GET api/v2/sales/salesreason
    • Added blocked property to response
  • Updated GET api/v2/sales/salesfilters with options that can be used to filter GET api/v2/sales/sales
    • Added opportunityprogress value options
    • Added administration value options
    • Added responsible_person value options
  • Updated PUT api/v2/sales/sales
    • It is now possible to change the relation of a Sales entity from an Organization to a Person or from a Person to an Organization with person_id or organization_id respectively

2023-04

  • Updated documentation 'added person_id' for PUT api/v2/hrm/employee
  • POST/PUT api/v2/hours/leave errors codes
  • POST/PUT api/v2/hours/absense errors codes
  • Added relation_number to various organization and person objects
  • Added mandatory boolean for customfields
  • Added duration_in_minutes int for hours approval

2022-08

  • Added API endpoints for assigning and removing project employees to projects:
    • POST /api/v2/projects/projectemployee
    • DELETE /api/v2/projects/projectemployee/{id}

2022-07

  • Added Known Limitations to the API docs
  • Added API endpoints for creating and updating employees, and creating, updating and deleting timetables:
    • POST /api/v2/hrm/employee
      • Updated the contents of PostEmployee model to match the implementation
    • PUT /api/v2/hrm/employee/{id}
    • DELETE /api/v2/hrm/employee/{id}
    • POST /api/v2/hrm/timetable
      • Updated the contents of PostTimetable model to match the implementation
    • PUT /api/v2/hrm/timetable/{id}
    • DELETE /api/v2/hrm/timetable/{id}
  • Added 'project_number' (string) property to GetTimesheetRowProject model (/api/v2/hours/timesheetrow)

2022-06

  • Adds email configuration properties to the Organization model (/api/v2/crm/organization)
    • 'send_invoice_email_to_contact' (bool)
    • 'send_invoice_email_to_project_contact' (bool)
    • 'send_invoice_email_to_fixed_email' (bool)
    • 'send_invoice_email_to_cc' (bool)

2022-03

  • Added 'is_active' (bool) to Person, Organization, and ContactPerson models (/api/v2/crm/person, /api/v2/crm/organization and /api/v2/crm/contactperson)

2022-02

  • Added GetAssignmentSimple model (/api/v2/timers/timer)

2022-01

  • Added 'use_custom_salutation' (bool) and 'custom_salutation' (string) properties to GetPerson (/api/v2/crm/person)
  • Added 'description' (string) property to Assignment model (/api/v2/projects/assignment)

2021-11

  • Added /projects/service/{id}/planningBudget (GET)
  • Renamed /projects/project/{id}/assignmentBudgetInfo (GET) to /projects/project/{id}/planningBudget
  • Reworked AssignmentBudgetInfo model
    • Added properties with almost all of them having an AssignmentBudgetInfoFuturePast model
  • Added QuotetemplateConfigurationMetaData model (/api/v2/sales/quotetemplate)
  • Added QuotetemplateMetaData model (/api/v2/sales/quotetemplate)
  • Added 'is_editable' and 'is_deletable' properties to GetHours (/api/v2/hours/hours)
    • Added IsSatisfied model
    • Added IsSatisfiedReason model
  • Added 'attachments' property to Expense model, array of ExpenseAttachment
    • Added ExpenseAttachment model (/api/v2/costs/expense)
  • Added 'is_attachment_allowed' property to GetPurchaseType, PostPurchaseType, PurchaseType (/api/v2/projects/purchasetype)

2021-08

  • Moved 'custom_fields' property of models Organization, Person, Sales, Project and Hours to their Get* models
    • Replaced 'CustomField' type with 'GetCustomField' type
  • Added PostCustomFieldValue type to custom_fields property of PostOrganization, PostPerson, PostSales, and PostProject models
  • Added 'work_function', 'work_email', 'work_mobile' properties to PostContactOrganizationFk and PostContactPersonFk models
  • Added 'vat_class' properties to GetSalesService model (/api/v2/sales/service)
  • Removed 'vat_code' and 'vat_description' properties from GetSalesService model (/api/v2/sales/service)
  • Added 'revenue_group_id' property to PostSalesService (/api/v2/sales/service)

2021-07

  • Added 'service_purchase_start_date' and 'service_purchase_end_date' to Expense model (/api/v2/costs/expense)
  • Added 'HoursCorrectionsTotal' and 'HoursCorrectionsUntil' to AssignmentBudgetInfo model (/api/v2/project/service/{id}/planningBudget)

2021-07

  • Added separate model for updating assignments (PutAssignment) (PUT /api/v2/projects/assignment)
    • PutAssignment no longer accepts 'start_date' and 'end_date' properties; you can no longer modify dates through the API (PUT /api/v2/projects/assignment)
  • Added 'start_date' and 'end_date' to PostAssignment specifically (POST /api/v2/projects/assignment)

2021-06

  • Added /projects/project/{id}/assignmentBudgetInfo (GET)
  • Added 'note' property (string) to Expense model (/api/v2/costs/expense)
  • Added 'is_productive' property (boolean) to GetHours model (/api/v2/hours/hours)
  • Added 'related_hours_id' property (string) to Mileage model (and its derived models: GetMileage, PostMileage, PutMileage) (/api/v2/hours/mileage)