Release 26.08 adds filters and read-only fields for the time entry, user, and activity endpoints, corrects the line amounts reported for split invoices, and tightens validation on custom fields. Review the changes below to assess the impact on your integration.
Did you know that we have an article on Using the Legalsense APIv3? This article is aimed at integrators and developers using the Legalsense APIv3 and introduces the overall design and important concepts.
Important changes
Update requests must send the complete list of custom fields: PUT requests to /api/v3/contacts/, /api/v3/clients/, /api/v3/matters/ and /api/v3/users/ require every active custom field stored on the object to be present in the custom_fields list. A request that omits one returns HTTP 400 with Missing custom field(s): <identifiers>, naming the identifiers it did not find. This stricter validation prevents unintentional data modification when existing fields are omitted. To get the list of currently configured custom fields on an object, read the object with GET before updating it and echo back the full custom_fields list, changing only the entries you intend to change. If a stored custom field comes back with a value of null, send "" in its place; a literal null is rejected.
POST /api/v3/chargeables/ and PUT /api/v3/chargeables/{id}/ reject disbursements on blocked matters: Booking a disbursement on a matter that has time entry blocked returns HTTP 400, with the error keyed on the matter field. The block_time_entry and is_time_entry_blocked fields on /api/v3/matters/ keep their names and shape and cover every kind of billable rather than time entries alone, so a blocked matter also stops generating subscription products.
POST /api/v3/draftloglines/ and PUT /api/v3/draftloglines/{id}/ hand the reviewer role to another user: Setting reviewer to a user other than the previous reviewer and other than the calling user hands off the draft time entry and sends a hand-off notification, matching the behavior of the web interface. The field accepts active, selectable users holding manage_my_draftlogline or manage_draftlogline; any other user returns HTTP 400 with This user cannot be assigned as reviewer of draft time entries.
GET /api/v3/partialpaymentinvoicelines/ reports the fee share in amount: The partial payment line of a split invoice carries its fee share in amount, a field that returned null before this release, so the gross, net, and total amounts of a split can be derived from the endpoint. The same correction reaches the main invoice of a split: on GET /api/v3/invoicelines/ the amount, billed_amount, billed_amount_ex_office_expenses and reduction_amount fields each report that line's post-split share, so the line billed_amount values sum to the invoice's own amount_ex_tax and match the total on the finalized invoice. Lines on invoices without a split are unchanged.
GET /api/v3/users/ filter is_timewriter is named is_timekeeper: The API changelog for release 26.07 announced this filter as is_timewriter. Its name is is_timekeeper, and because unrecognized query parameters are ignored rather than rejected, ?is_timewriter=true returns HTTP 200 with an unfiltered user list rather than an error. Combined with is_selectable and status, for example ?status=active&is_selectable=true&is_timekeeper=true, it returns the users who can be set as timekeeper on a time entry, letting a client populate a timekeeper picker in a single request. is_selectable and is_timekeeper are both present in release 26.07, which carries the corrected name.
PUT /api/v3/users/{id}/ accepts empty strings on its name and note fields: The abbreviation, dashboard_note, first_name, initials, last_name, last_release and name_prefix fields accept "", so a payload read with GET can be written back unchanged. null is rejected on all seven fields, and an empty string clears the value.
Modified endpoints
GET /api/v3/loglines/ accepts six filters: The list endpoint accepts is_billable, is_written_off, is_zero_rate, activity, recofa_category and submatter, matching the filters available in the time entry search screen. is_written_off=true covers both full and partial write-offs and can overlap with is_billable=true, for example ?is_billable=true&is_written_off=true.
GET /api/v3/me/ returns permitted_logline_types: The current user representation includes a read-only permitted_logline_types field, a list of objects with key and display_name holding the time entry types the user may write. billable and non_billable are always present, written_off when the user may write off with billable status, and zero_rate when the user holds both the zero rate permit and the zero rate on time entry permit. This is the APIv3 replacement for v2 /matter-types/.
GET /api/v3/me/ exposes verbal_time_entry in app_features: The app_features object includes a verbal_time_entry boolean, true when an AI provider is configured and the user holds the permit to manage their own draft time entries, so a client can show or hide verbal time entry from the same call that reads the other feature flags. The other app_features keys are unchanged.
/api/v3/activities/ gains a default_description field: The activity representation includes a default_description field carrying prefill text for time entry descriptions, keyed by invoice language, so a client can seed a description from the selected activity in the language of the invoice. The field is present on the detail representation and requestable on the list, and is optional on POST: an omitted value is stored as a blank string for every available language.
Reporting filters accept logline_matter_id: The reporting filter set accepts a logline_matter_id integer field with set membership operators, scoping a report to a specific group of matters rather than filtering its output afterward. It backs the used minutes report for legal aid. The field is also present in releases 26.06 and 26.07, which received it as a backport.
For more information about Legalsense features, please visit our knowledge base.
Comments
0 comments
Article is closed for comments.