Changelog
The REST API specification is generated from the source code and published with every ZEP release. Since the switch to the generated specification the version number describes the API contract (1.x.y), not the product release: a breaking change bumps the major version and lands in a new /api/v2, additive changes keep v1. Every release below the switch line is written by the release pipeline from the diff of the specification; the entries below that were written by hand.
v8.0.7 · OpenAPI 1.0.0 · 25.09.2026
Generated from the specification diff of this release.
Both changes tighten input validation. Requests that are now rejected with 422 did not return a usable result before: a date with a time component on /attendances ended in a server error (500), and an empty start_date or end_date on /departments did not produce a correct filter. Clients that already send dates as YYYY-MM-DD are not affected.
POST /attendances
- FIX the `date` request property `format` changed from `date-time` to `date`
PATCH /attendances/{id}
- FIX the `date` request property `format` changed from `date-time` to `date`
PUT /attendances/{id}
- FIX the `date` request property `format` changed from `date-time` to `date`
GET /departments
- FIX the `query` request parameter `end_date` became not nullable
- FIX the `query` request parameter `start_date` became not nullable
v8.0.7 · OpenAPI 1.0.0 · 25.09.2026 — the generated specification becomes authoritative
- INFO The OpenAPI document is now generated from the code (controllers, form requests, resources) on every release and published here unchanged — the same file the interactive reference renders. Descriptions live next to the field they describe and cannot drift any more.
- INFO Version scheme:
info.versionis1.0.0and follows the contract from now on. The previous numbers (7.12.49and earlier) mirrored the ZEP product version. - INFO Every reference page in this documentation (and this navigation) is generated from the specification, in English and German. The response examples are the field examples of the specification.
- INFO A separate specification for ZEP Clock is published alongside the full version; the reference page offers a switch, and every endpoint page states whether it is available on a Clock instance.
- NEW All resource update operations accept
PUTas an alias ofPATCH— the router always did, the documentation now says so. - DEPRECATED GET Planning (legacy alias):
GET /planningredirects toGET /planningsand answers withDeprecation,Sunset(2027-08-31) andLinkheaders. It will be removed on or after 2027-08-31. - DEPRECATED Customers: the
statusobject carriesdeprecated: trueandx-sunset: 2027-08-31in the specification. Readinactiveinstead;statusis not part of API v2. - FIX Path parameters are named after the key the API resolves by:
/absence-reasons/{name},/activities/{activity},/categories/{name},/customers/{customer_number}/contacts/{id},/invoices/{invoice_number}. Numeric ids never worked there; the documentation used to say otherwise. - FIX
createdandmodifiedare documented on every resource instead ofcreated_at/updated_at, which the API never returned. - FIX Regular working times expose
holidayCalendarandbreakRegulationTypewith the English field names the API always returned (name,note,country,region), not the German column names the old document listed. - FIX Nullability and required-ness of every response field match the real responses (measured against a running instance), and the
status[]filter of the invoice item endpoints declares its values as integers.
v7.12.49 (24.07.2026)
Covers everything since v7.12 (22.06.2026).
- FIX POST Create attendance: The booking rules are now checked before writing, and violations come back as
422with per-field messages — closed month, past the approval date, recording period, non-working day or holiday, employment period, runtime of the project, task or ticket, planned hours exceeded. The API was the only entry point that accepted such bookings; the web interface, SOAP and Clock have always refused them. If you book validly, nothing changes for you. - FIX Attendances: A booking ending at
00:00belongs to the following day. That rollover is now part of the overlap check, so double bookings across the day boundary are detected and refused. - FIX GET Customers:
statusstays and now reports the actual state. Previously an inactive customer came back as{ "value": 1, "label": "Active" }, although the documentation always said1 = active. Nothing changes for active customers; if your client compensated for the inversion, drop that compensation. - DEPRECATED Customers:
inactive(boolean) supersedesstatus.statusis still emitted and still accepted onPOSTandPATCH; if both are sent,inactivewins. The?status=filter is deprecated as well, replaced by?inactive=. A sunset date will be announced separately. - NEW PATCH Update attendance
- NEW DELETE Delete attendance: Validates the lock periods — closed month, approval date, recording period
- NEW POST Create customer contact
- NEW GET Get customer contact
- NEW PATCH Update customer contact
- NEW DELETE Delete customer contact
- NEW PATCH Update project task
- NEW Attendances:
end_dateon every response — the calendar day the booking ends on.toalone is ambiguous for a day-end booking, which is stored asto = 00:00:00on the start date. - NEW Customer contacts:
departmentandcategorieson the response - NEW The
modified_afterandmodified_beforefilters on several list endpoints - NEW Languages
sk(Slovak) andtr(Turkish) - FIX An empty date filter returns
422instead of500— on Absences and five further endpoints - FIX Employees whose employment period has no start or end date are no longer rejected as “outside the employment period”. An absent bound now means open-ended.
- FIX
default_billabilityandreceipts_billabilityare no longer ignored onPOSTandPATCH - FIX Planning: The configured defaults are returned
- INFO Nine operations that already existed are now documented — among them
POST /absences,GET /attendances/:idandPATCH /employees/:username. Plus 66 response fields the endpoints always returned, and two relation keys on regular working times that never matched their documented names.
v7.12 (22.06.2026)
- NEW GET Workhour balances: Added endpoint for retrieving cached overtime and vacation entitlement balances
- NEW GET Workhour balance details: Added endpoint for a single workhour balance record
- NEW GET Invoice items by project: Added endpoint for listing invoice items belonging to a project
v7.8.74 (09.01.2026)
- NEW POST Create ticket: Added endpoint for creating tickets
- NEW PATCH Update ticket: Added endpoint for updating tickets
- NEW DELETE Delete ticket: Added endpoint for deleting tickets
- NEW POST Upload ticket attachment: Added endpoint for uploading ticket attachments
- NEW POST Create subtask: Added endpoint for creating subtasks
- NEW PATCH Update subtask: Added endpoint for updating subtasks
- NEW DELETE Delete subtask: Added endpoint for deleting subtasks
- NEW PATCH Update customer: Added endpoint for updating customers
- NEW DELETE Delete customer: Added endpoint for deleting customers
- NEW PATCH Update project: Added endpoint for updating projects
- NEW DELETE Delete project: Added endpoint for deleting projects
v7.8.64 (2026-01-07)
- NEW POST Create receipt: Added endpoint for creating receipts
- NEW PATCH Update receipt: Added endpoint for updating receipts
- NEW DELETE Delete receipt: Added endpoint for deleting receipts
- NEW PUT Upload attachment: Added endpoint for uploading receipt attachments
- NEW DELETE Delete attachment: Added endpoint for deleting receipt attachments
v7.7.0 (2025-10-07)
- NEW GET Articles: Added endpoint for retrieving articles
- NEW GET Article details: Added endpoint for single article
- NEW GET Planning: Added endpoint for retrieving planning entries
- NEW GET Project locations: Added endpoint for project locations
- NEW PUT Update employee: Added endpoint for updating employees
- NEW PUT Update employment period: Added endpoint for updating employment periods
- FIX Corrected
plan_can_exceeddata type from boolean to enum (0-4) in all project endpoints - FIX Added missing filter parameters (
project_status,project_start_date,project_end_date) for Employee projects - FIX Added missing
idfield in ProjectEmployee response examples
v7.6.1 (2025-09-22)
- NEW GET Locations: Added endpoint for retrieving locations
- NEW GET Location details: Added endpoint for single location
- NEW GET Location lists: Added endpoint for location lists
- NEW GET Location list details: Added endpoint for single location list
- NEW GET Locations in list: Added endpoint for locations within a list
- NEW GET Dynamic attributes: Added endpoint for dynamic attribute definitions
- NEW GET Dynamic attribute details: Added endpoint for single dynamic attribute
- NEW GET Invoice items: Added separate endpoint for all invoice items
- NEW GET Invoice item details: Added endpoint for single invoice item
- NEW GET Invoice attachments: Added endpoint for invoice attachments
- NEW POST Create absence: Added endpoint for creating absences
- NEW POST Create employment period: Added endpoint for creating employment periods
- NEW POST Create customer: Added endpoint for creating customers
- NEW POST Create project: Added endpoint for creating projects
- NEW POST Create project task: Added endpoint for creating project tasks
- INFO OpenAPI specification extended to include ~85 endpoints (up from ~35)
- INFO Response examples for some new endpoints will be added in the next update
v7.4.2 (2025-06-24)
- NEW GET Attendances: Added new fields
project_release,project_released_atandproject_released_byfor project time approval - NEW GET Attendance details: Added new fields for project time approval
v7.4.1 (2025-06-18)
- INFO OpenAPI specification updated to include all documented endpoints
- NEW POST Create employee
- FIX GET Absences: Updated response examples to match current API structure, including new fields
absence_reason_id,absenceReasonobject, and corrected date formats - FIX GET Attendances: Updated response examples to match current API structure and date/time formats
- NEW GET Attendance details: Added documentation for single attendance endpoint
- FIX GET Departments: Updated response examples with new fields
parent_id,manager_count,children_count - FIX GET Department details: Updated response structure with
managerarray instead ofmanager_count - FIX GET Department employees: Updated response examples with new field
approval_dateand language object structure - FIX GET Employees: Added new fields
categoriesanddynamicAttributesarrays, changedrelease_datetoapproval_date - NEW GET Employee transponders: Added documentation for retrieving RFID transponders assigned to an employee
- FIX GET Devices: Updated response examples to match current API structure with device types and status codes
- FIX GET Device details: Updated response structure showing employees and categories arrays
- FIX GET Customers: Updated response structure with new fields
vat(replacingtax),statusas object,department_id,categoriesanddynamicAttributesarrays - FIX GET Customer details: Updated response with new address fields, removed
employeesarray, added completepriceTablesstructure - FIX GET Offers: Updated response examples and added missing field
order_probability_percent - NEW GET Offer items: Added documentation for retrieving offer items/positions
- FIX GET Receipts: Updated response structure with simplified
receipt_type_idas string instead of object, changed field namesis_amount_gross_or_nettois_amount_netandis_invoice_amount_gross_or_nettois_invoice_amount_net - FIX GET Receipt details: Updated response structure to match list endpoint with same field changes
- FIX GET Receipt amounts: Updated response examples with realistic data and added new fields
is_amount_netandis_invoice_amount_net - FIX GET Receipt attachments: Added response example with Base64-encoded file contents
- FIX GET Tickets: Fixed response examples - incorrectly contained receipt data instead of ticket data, added
categoriesarray - FIX GET Ticket details: Updated response example with current data
- FIX GET Ticket subtasks: Updated response example with realistic data
- FIX GET Ticket subtask details: Updated response example with anonymized data
- NEW GET Folders: Added new endpoint for retrieving folders
- NEW GET Folder documents: Added new endpoint for retrieving documents within a folder
- NEW GET Price groups: Added new endpoint for retrieving price groups
- NEW GET Activities: Added new endpoint for retrieving activities
- NEW GET Absence reasons: Added new endpoint for retrieving absence reasons
- NEW GET Categories: Added new endpoint for retrieving categories
v7.4.0 (2025-06-17)
- NEW Major version update with enhanced API capabilities
- INFO Updated API documentation and improved endpoint descriptions
v6.13.17 (2024-09-16)
- INFO GET Projekt-Tasks have been extended
v6.13.16 (2024-08-27)
- NEW GET Project price tables
- NEW GET Project task details
- NEW GET Department subdivisions
- NEW GET Department employees
- NEW GET Customer price tables
- NEW GET Projects of an employee
- NEW GET Invoices
- NEW GET Invoice details
- NEW GET Invoice items
- NEW GET Offers
- NEW GET Offer details
- FIX GET Projects: Not all projects were displayed
v6.12.5 (2024-03-06)
- The rate limiting has been increased to 12000 requests per hour. A maximum of 1000 requests are allowed per 5 minutes
- Added
nameparameter to project filter for Projects - Bugfix for Projects: The
plan_hoursvalue did not show planned hours if they were defined in subtasks. The valueplan_hours_childrenhas been added for this purpose - Bugfix for Projects: The project does not have to be completely within a filtered period. It is sufficient if it was active within the period
- Bugfix for Employees: Under certain circumstances, a server error occurred. This error has been fixed
v6.12.4 (2024-03-01)
- Some performance improvements
v6.12.3 (2024-02-16)
- GET requests for Belege, Tickets
- Add
project_idandticket_idfilters to Attendances endpoint - Added dynamic attributes to project details and employee details
v6.12.2 (2024-02-02)
- Bugfix for
GET /absences:absenceReasonis now returned correctly - GET requests for departments, terminals
- GET request for employee meals
v6.12.1 (2024-01-14)
- Initial release of the ZEP REST-API
- GET requests for Projects, Attendances, Employees, Customers und Absences