Software Engineer
The EDV, Instant Payments, and External Auth adapters have officially moved out of beta and are now fully supported. These adapters make it easier to enforce step-up authentication workflows, handle real-time payment flows, and delegate login to external identity providers, respectively. See the full tutorials for each:
You can now use the transaction_date
argument with the Q2 sandbox CLI command to mass-update transaction postdates in your database, removing the need for manual database updates. This is especially useful when testing extensions that rely on recent transaction data or when calls fail due to outdated history:
q2 sandbox transaction_date
The mock_q2_request
decorator now includes optional parameters like enable_soap_wrapper
, enable_api_wrapper
, and version_number
, giving you more control when mocking Q2 requests wrapped in SOAP or API formats and reducing the boilerplate needed for unit tests:
@mock_q2_request( mock_data.get_response(), verb="post", enable_soap_wrapper=True, enable_api_wrapper=True, ) def test_my_handler(): ...
The message bus extensions now support automatic compression of large messages via the new auto_compress
flag. Messages larger than 4096 bytes (the MIN_ENCRYPT_SIZE
) are now automatically compressed using zlib before encryption. This improves performance without requiring changes to your existing logic.
Company admins can now reset passwords directly from the member page. This action will automatically correct the user's account, help resolve lockouts, and require the user to set a new password.
This release introduces powerful new layout components and accessibility improvements across the design system.
We've developed two comprehensive Grid System components - Grid and Grid Area. These new components provide developers with a powerful foundation for building complex interfaces. These new components offer developers a streamlined way to utilize CSS Grid within various parts of their application, making it easier than ever to create responsive layouts that work across all screen sizes.
The Form component provides a similar utility for common form-related workflows by applying uniform vertical spacing between elements that is also configurable via a simple property.
The recently released File Picker component has received a fresh coat of polish to improve both functionality and user experience. Key improvements include custom file upload failure messages that provide clearer feedback to users, a new "buttonSize" property for custom button sizing, and improved minimum and maximum width settings for the drop zone area. These enhancements make file management more intuitive and provide developers with greater control over the component's appearance and behavior.
We've made important accessibility improvements including better announcements of the Stepper component's selected states, ensuring compliance with WCAG guidelines. Some Icons provided by Tecton now use a default stroke weight of 2 pixels for improved visual consistency, while the Avatar component has been updated to resolve height issues affected by typography settings. The Data Table component now features improved touch area sizing for better mobile interaction, and we've resolved Dropdown menu positioning issues to ensure proper display across mobile devices. Additionally, the Select component's live example now demonstrates best practices using the Item component.
The Update User Info
endpoint now includes two new updates:
You can now send ThirdPartyDataElements
and ThirdPartyData
fields to set or update third-party values associated with a user and vendor. Here's an example:
{ "ThirdPartyDataElements": [ { "Session.UserName": "The user name on the third party system" }, { "Session.Password": "The password on the third party system" } ], "ThirdPartyData": { "Q2PFM.MnyDsktp": { "Session.UserName": "MyTestUserID", "Session.Password": "TestValye" } } }
The new UnsetPrimaryCif
flag allows you to remove a user's primary CIF without assigning a placeholder.
Custom Caliper API endpoints now support PATCH
, PUT
, and DELETE
, in addition to GET
and POST
, giving you more flexibility when building and managing custom API requests. Simply add a function named after the HTTP verb to your Caliper API Custom Endpoint SDK extension. Here's an example of boilerplate code to implement the DELETE
verb in your extension:
def delete(self): data = {"response": "Hello World DELETE: From testextension"} response = self.return_data(data, success=True) self.set_header("Content-Type", "application/json") self.write(response)
To get more information on this flow, check out our custom endpoint tutorial.
Caliper SDK (Python) v2.275.0 - CHANGELOG
Tecton SDK (Javascript) v1.56.0 - CHANGELOG
Marketplace (Python) v0.8.9 - CHANGELOG
Caliper API (Python) v1.45.0 – CHANGELOG