One shape for lists and deletes
Lists answer data.<plural>, deletes answer 204 unless the body informs, and every create returns Location. DELETE products/bulk takes ?ids= instead of a body.
Every list now answers data.<plural> (+ data.pagination where the server paginates), deletes answer 204 unless the body genuinely informs, DELETE products/bulk takes ?ids= instead of a body, and every single-resource 201 carries a Location header to its canonical GET.
Endpoints
- DELETE/v1/companies/{company_id}/customers/{customer_id}Now answers 204 with no body
- DELETE/v1/companies/{company_id}/representationNow answers 204 with no body
- DELETE/v1/companies/{company_id}/products/bulkIDs move from the request body to ?ids= (max 100)
- PUT/v1/configuration/series/{series_id}Deprecated; use PATCH /v1/companies/{company_id}/series/{series_id}
Void cause on voided invoices
Voided invoices now carry `void_cause`, `void_reason` and `voided_at`, so a direct void and a total corrective are told apart without a second call.
A webhook URL on a private network is rejected when you register it
Registering or changing a subscription URL that points to a private or internal network address now answers `422 URL_TARGET_NOT_ALLOWED`, instead of creating a subscription that would never receive a delivery. A host that does not resolve yet is still accepted, so you can register before your DNS is live.