Changelog
[3.0.9] - 2026-10-12
Added
- Accept public MD5 document hashes (alongside numeric IDs) on offer, order, and invoice paths (
GET/PUT/PATCH/DELETE /{id},/{id}/articles, convert, send-email); detail and create responses expose read-onlypublic_offer_id,public_order_id, andpublic_invoice_id. - Document the official PHP Composer package
yourbureau/api-clientin the API description. - Percentage discount/surcharge positions on offer, order, and invoice article payloads via
is_reduction_percentage(1= discount,2= surcharge) plusreduction(percent); amounts are calculated from preceding regular lines (same rules as the yourBureau UI, includinground_chf/enter_netto_prices). Whendescriptionis omitted, tenant settingsdefault_reduction_percentage_description/default_surcharge_percentage_descriptionare used.article_numberis optional for these rows.
[3.0.8] - 2026-10-07
Added
- Read-only audit fields
created_at,creator_user_id,modified_at,modified_user_idon customers, contacts, projects, articles, offers, orders, invoices, support tickets, comments, open tasks, and outgoings. Server-assigned oninsert/update; never client-writable. creator_user_id/modified_user_idon time reports (GET/POST/PUT/PATCH /api/v3/time-reports), alongside the existingcreated_at/modified_at.- List and get events on
GET /api/v3/eventsandGET /api/v3/events/{id}(view_events; requiresusing_events). Date filters use overlap on[date, date_until].
Changed
- **Breaking:** Renamed
user_idtocreator_user_id(document author) on offers, orders, and invoices. - **Breaking:** Renamed
user_idtocreator_user_idon projects. - **Breaking:** Renamed
owner_user_idtocreator_user_idon articles; removedowner_user_idfrom writable payloads (was previously client-settable). - **Breaking:** Renamed
user_id_ownertocreator_user_idon open tasks (including theuser_id_ownerlist filter and theuser_ownerembedded relation, nowcreator_user). - **Breaking:** Renamed
user_id_ownertocreator_user_idandcreate_datetocreated_aton outgoings (domainuser_idunchanged). - **Breaking:** Renamed
create_datetocreated_aton offers, orders, invoices, articles, and open tasks. - **Breaking:** Renamed
create_date_timetocreated_aton comments; removed from writable payloads (server-assigned). - **Breaking:** Renamed
create_date/modify_datetocreated_at/modified_aton contacts.
Fixed
- Fixed
created_atbeing stripped from time-report responses even when listed inshowFields. - Scope assistant
view_my_*document access and open offer/order KPIs bycreator_user_idafter the audit-field rename. - Filter offers, orders, invoices, and projects by
creator_user_id(documented list filter; was still nameduser_id).
[3.0.7] - 2026-09-29
Added
- List time-report order positions on
GET /api/v3/orders/{id}/time-report-positions(lookup fields only;is_for_time_rapportfilter). - List article work packages on
GET /api/v3/work-packages(article_idrequired;add_time_report*or bothview_work_packagesrights).
Changed
- Allow two-character usernames on
POST /api/jwt(minimum length 2). - Allow email-style usernames (
@,+, up to 255 characters) onPOST /api/jwt. - Allow
view_projects_in_time_reporton project list/show (UI parity with the time-report form). - Allow
view_orders_in_time_reporton order list/show; treat it likelimited_view_ordersfor amount filtering. - Allow
limited_view_ordersandview_orders_in_time_reportto read assistant order documents. - Allow article list/show with
add_time_report/add_time_report_from_all_users; withoutview_articles, limit to rapport articles.
Fixed
- Return HTTP 422 with field-level
messagesonPOST /api/jwtwhen tenant, username, or password fail input checks. Invalid credentials still return 401. - Set
customer_displayon customer create and update using the same formula as the main application.
[3.0.6] - 2026-08-21
Added
- Allow appending article lines on assistant documents with
mode=append(POST /api/v3/assistant/documents/{type}/{id}/positions). - Filter open tasks to JWT owner or responsible with
owner_or_responsible=meonGET /api/v3/open-tasks.
Fixed
- Allow partial updates (
PATCH) for customers, contacts, projects, customer-contacts, users, and reference-data resources that previously only definedPUT. - Enforce document-type permissions on assistant documents (add/edit/view per offer|order|invoice;
view_my_*limited to the JWT owner's records). - Ignore client-supplied
user_id_owner/user_id_responsibleon open-task create/update; set owner and responsible from JWT on create. - Enforce row-level open-task access for
view_my_open_tasks/edit_my_open_task/edit_assigned_open_taskon list, show, update, and delete. - Require
state_idwhen finalizing an assistant document (confirmalone no longer returns success without a state change).
Changed
- Default
open_task_state_idon new open tasks to the Offen state when omitted. - Ignore
user_idonGET /api/v3/my-time-reports; the list is always the JWT user, including withview_time_report_from_all_users. - Ignore
user_idon assistant queriesmy_hours_by_periodandmy_flextime_balance(always the JWT user). - Omit
my_*info-query types fromGET /api/v3/assistant/info-query/catalogunless the caller is a JWT user; executing them without JWT stays401. - Reject API keys on
GET /api/v3/my-time-reportswith403(JWT only). - Require JWT user permissions for assistant document type checks (API keys no longer inherit all document types from the route OR).
[3.0.5] - 2026-08-19
Added
- Email the customer from API when a support ticket is answered. Optionally also on assign or complete, if the tenant settings allow it (same mail path as the UI).
- Convert an offer to an order and an order to an invoice via API V3. Orders now show which offer they came from.
- Filter offers, orders, invoices, outgoings, and open tasks by a day or date range.
- Add assistant KPIs for hours (including flextime), open tickets and tasks, project budget, and customer revenue. Hour KPIs can be limited to a day or date range.
- Expose custom fields (
custom_input_1–10,custom_select_1–10,custom_text_1–5) on API V3 offers, orders, and invoices.
Changed
- Answering a support ticket via the API now always sends a customer email (previously the answer was stored only).
Fixed
- Keep the existing time-report duration when an update does not send new times.
- Keep invoice cancel status in sync with the invoice state (including after a payment), show it in responses, and reject invalid state changes.
- Let users with time, support, task, or project rights use assistant KPIs. “My” hour and count queries stay limited to the current user; pauses are not counted as work.
- Allow partial updates of support tickets (
PATCH). Clients can no longer change creator or done/email workflow fields via create/update. - Let read-only API keys run assistant KPIs.
[3.0.4] - 2026-07-23
Added
- List payments for an invoice via API V3.
Fixed
- Use 30 days as invoice payment terms when the customer value is missing or zero.
[3.0.3] - 2026-07-22
Changed
- Fill invoice payment terms from the customer on create (fallback: 30 days).
Added
- Add assistant endpoints for KPIs and for creating or updating offers, orders, and invoices.
- Show deadline text on offers, orders, and invoices, and default order texts on projects.
- Add API V3 outgoings and distributors, including PDF archive upload/download (one PDF per outgoing, max 2 MB).
[3.0.2] - 2026-07-15
Added
- Add VAT ID on customers and e-invoice fields on invoices.
- Add e-invoicing codes on taxes, units, bank accounts (BIC), and payment methods.
[3.0.1] - 2026-07-15
Added
- Baseline release notes established (this changelog).