java - v0.29.0 - 2026-01-20 14:16:35
Java SDK v0.29.0 Changelog
Release Date: January 2025
What's New
This release includes improved type flexibility, new fields, and enhanced filtering capabilities across multiple APIs.
Summary of Changes
| Category | Description | Action Required |
|---|---|---|
| CustomFields Flexibility | Can now use name instead of id |
None (backward compatible) |
| New Fields | displayId, downstreamId, archived added |
None (optional to use) |
| New Filter Options | Bank accounts, payments, ledger accounts | None (optional to use) |
| Type Refinements | Better type safety for responses | Review if you use strict typing |
Detailed Changes by API
Accounting API
CustomFields (All Entities)
What changed: The CustomField object now accepts either id or name as the identifier.
Affected methods:
- All
list(),create(),get(),update()operations for:- Bank Accounts
- Bank Feed Accounts
- Customers
- Suppliers
- Ledger Accounts
- Tax Rates
Impact: None. This is a relaxation that gives you more flexibility. Your existing code continues to work.
// Before: Only id was accepted
CustomField.builder().id("field_123").value("value").build();
// After: Both options work
CustomField.builder().id("field_123").value("value").build(); // Still works
CustomField.builder().name("Field Name").value("value").build(); // Now also worksBank Accounts
What changed: New optional filter parameter on get() method.
// New capability (optional)
apideck.accounting().bankAccounts().get(
AccountingBankAccountsOneRequest.builder()
.id("bank_123")
.filter(BankAccountFilter.builder()
.accountType(AccountType.BANK)
.build())
.build()
);Invoices, Bills, Credit Notes, Expenses
What changed: Response models refined for better type consistency.
Impact: If you're using strict type casting, verify your parsing code. The data structure remains the same.
Invoice Items
What changed: New displayId field available in responses.
var response = apideck.accounting().invoiceItems().list(...);
for (var item : response.getData()) {
// New field available
item.getDisplayId().ifPresent(id -> System.out.println("Display ID: " + id));
}Journal Entries
What changed: New displayId field available in responses.
Purchase Orders
What changed: New displayId field available in responses.
Payments
What changed: New optional filter parameter on list() method.
Ledger Accounts
What changed: New optional filter parameter on list() method.
Departments & Locations
What changed:
- New
displayIdfield in responses - New
displayIdparameter in create/update requests
// New capability
apideck.accounting().departments().create(
AccountingDepartmentsAddRequest.builder()
.accountingDepartment(AccountingDepartmentInput.builder()
.name("Engineering")
.displayId("ENG-001") // New field
.build())
.build()
);Subsidiaries
What changed: New downstreamId field available in responses.
Quotes
What changed: Line items model refined for type consistency.
Projects
What changed: Response model refined for type consistency.
CRM API
Leads
What changed: Model structure improved for type consistency.
Impact: Review your lead parsing code if you use strict typing.
Activities, Companies, Contacts, Opportunities
What changed: CustomFields flexibility (same as Accounting - can use name or id).
Pipelines
What changed: New archived field on pipeline stages.
// New capability
apideck.crm().pipelines().create(
CrmPipelinesAddRequest.builder()
.pipeline(PipelineInput.builder()
.name("Sales Pipeline")
.stages(List.of(
PipelineStageInput.builder()
.name("Closed Lost")
.archived(true) // New field
.build()
))
.build())
.build()
);HRIS API
Employees & Schedules
What changed: CustomFields flexibility (same as other APIs - can use name or id).
ATS API
Jobs & Applicants
What changed: CustomFields flexibility (same as other APIs - can use name or id).
Ecommerce API
Orders
What changed: Line item name field type refined.
Impact: Minimal. Review if you have strict type handling for order line items.
File Storage API
Files & Folders
What changed: Sort parameter and folder response model refined.
Migration Checklist
- Update dependency to
v0.29.0 - Run
mvn clean compileto check for any type mismatches - If using CustomFields, no changes needed (backward compatible)
- If using strict type casting on responses, review parsing code
- Run your test suite
New Features to Explore
After upgrading, you can optionally take advantage of:
- CustomFields by name - Reference custom fields by their display name instead of ID
- Display IDs - Human-readable identifiers for Tax Rates, Invoice Items, Journal Entries, Purchase Orders, Departments, Locations, Subsidiaries
- Pipeline stage archiving - Mark CRM pipeline stages as archived
- Enhanced filtering - New filter options on Bank Accounts, Payments, and Ledger Accounts
Dependency Update
Maven:
<dependency>
<groupId>com.apideck</groupId>
<artifactId>unify</artifactId>
<version>0.29.0</version>
</dependency>Gradle:
implementation 'com.apideck:unify:0.29.0'