https://docs.trassets.ai/changelog/rss.xml.
Breaking changes carry the tag Breaking. While /v1/ is a preview, they can land without notice (see Versioning).
BreakingData modelMCPAPI keys
- Objects in category endpoint responses now always carry all their keys. A missing value is null, before the key was left out. A period with neither bound therefore comes as an object with start and end, both null, instead of an empty object. Check for values, not for an empty object. /v1/raw still returns source data unchanged. See Response structure.
- New: through the Trassets MCP server at https://mcp.trassets.ai/mcp, AI clients such as Claude Code, Cursor, VS Code or Copilot Studio read your data. It needs a key with the new channel MCP, which you select in the portal when creating the key. Existing keys have channel API and work as before. See MCP server.
Errors
- Every response carries the X-Request-ID header. Please include it in support requests, see Errors.
- If the API cannot look up a table because of a database error, it now answers 500. Before, it wrongly returned 404 saying the table does not exist. A 404 is final again, a 500 is worth a retry.
BreakingPagination
- limit on the category endpoints is now at most 10,000, down from 100,000. Larger values return 422. To get more rows, page with next_cursor, see Pagination.
BreakingPaginationOpenAPIAPI keys
- On the category endpoints, total is now null unless you send the new parameter include_total=true. The API counts rows only on request. next_cursor does not depend on it. /v1/raw still always returns total.
- The OpenAPI spec takes the field types of the v1 resources from a fixed declaration instead of reading them from a reference customer’s database at startup. As a result, 20 filter parameters now carry their real type, such as integer for account_id and floor_area_id or a date for booking_date and reference_date. The requests themselves stay the same. If you generate your client from the spec, regenerate it. total and next_cursor are declared nullable.
- New API keys start with trs_live_. Existing keys stay valid. The portal shows when each key was last used.
- When creating a key in the portal, access can be restricted to positions of the Trassets-Standard reporting structure, see Authentication.
Rate limitsData model
- Each API key has a budget of 2,500 requests per hour, shared across all /v1/ endpoints. Before, the limit was 500 requests per hour per path. Failed key checks do not count. See Rate limits.
- New resource /v1/accounting/account_hierarchies with the account mapping structures per account, see Accounting.
Data model
- New category kpi with property KPIs (property_kpis, property_kpis_by_floor_area_type), see KPI. /v1/changes can filter by this category too.
BreakingVersioning
- All endpoints now live under /v1/: category tables, raw tables, catalog, and changes. Unversioned paths return 404 without a redirect. Offset pagination and the X- pagination headers are gone, paging uses cursor. See Versioning.
Filtering
- Filters on columns with object values, such as account_type on property_structure, now return matches instead of 500. You filter by code or label. A filter value in the wrong format, such as text for a number or date column, returns 400 instead of 500.
BreakingData model
- notifications.priority_text now holds the numeric ERP ID of the priority as a string. Before, it held wrong labels from a status lookup or stayed empty. See Operations.
BreakingData model
- Decimal columns under /v1/ come as JSON numbers instead of strings, for example 19.0 instead of “19.0000”.
- requests.floor_area_id is now an integer instead of a string. Its values changed too and now match property_structure.floor_area_id.
- More free-text and assignee columns count as personal data and now require the matching grant, among them comment, responsible_user, and responsible_person. See Authentication.
- New under /v1/operations: orders and offers. offers holds one row per actual offer; requests without an offer appear only in requests. See Operations.
BreakingData model
- booking_positions.person_id is now a string instead of a number.
- notifications.person_id is now called reporter_key.
- projects returns one row per project and considerably more projects, because no status filter applies anymore. The fields to_hdr_id, to_name, request_hdr_id, request_number, report_id, report_number, creditor_id, offer_id, and offer_number are gone, project_account_id is new. See Operations.
- New resource /v1/operations/requests with one row per request, joined to projects via project_account_id.
API keys
- API keys can have an expiry date, set in the portal. An expired key returns 401 “API key expired”.