Release Notes
July 3, 2025
Days since last major release: 29 days
Node Client
Improvements
- Bump minimum supported node version to v20. Versions prior to v20 are end of life and no longer supported by the node team.
- Scrubbing secrets from any errors logged during execution of an API function and replacing these with the redacted value: “********”.
- Tabi – adding the generated, type-safe query SDK for Tabi tables. Read more about Tabi in the Gateway and Function Runtime section.
- Updated Glide polyConfig object to add a few missing properties such as `description` for all functions, and `serverSideAsync`, and `generateContexts` for server functions.
- Enhanced interface type generation to avoid concatenating contexts into one long string.
- Added support in schemas for local $refs to definitions.
- Updated dependencies to remove warnings when installing the npm client.
- Log PolyAPI Library version on function wake up.
- Improve logging around failed API function executions.
Bug Fixes
- Fixed poly prepare command so it is better able to find deployables on Windows.
- Fixed poly prepare command to ensure any changes from the prepare step get staged for commit.
- Fixed bug that broke Glide workflow when adding a new argument to a server or client function.
- Fixed a bug where schemas without contexts were not being generated into the SDK.
- Fixed a bug where errors were automatically logged when executing API function locally, now only logged automatically in server functions with logging enabled.
- Fixed a bug where simple types were getting named types generated in the SDK. Now we keep the types simple.
Python Client
Improvements
- Improve the resiliency of the Python client so if a single function or schema has an error, a warning is displayed and the rest of the SDK can function normally.
- Add support for Python 3.13 on macOS.
- Add a better error message when trying to execute a client function and a required library is missing locally.
- Updated Glide polyConfig object to add a few missing properties such as `description` for all functions, and `serverSideAsync`, and `generateContexts` for server functions.
- Reuse the last used generate options when regenerating the Python client.
Bug Fixes
- Fixed poly prepare command to ensure any changes from the prepare step get staged for commit.
- Fixed a bug that prevented the `no-types` flag from being used with `vari` variables.
- Fix a bug where we showed JSONSchema warnings as errors.
Java Client
Improvements
- General improvements to the Java client to improve compatibility with the latest version of PolyAPI.
Bug Fixes
- Fix a bug that prevented deploying new triggers.
Gateway and Function Runtime
Improvements
- Tabi – Added Tabi, the new managed tables service from PolyAPI. Now users can create custom database tables with fully customizable data columns, backed by PostgreSQL and managed by PolyAPI. Use the API to create and update your tables, then use the Query API or the auto-generated SDK to query records in your tables. Currently in ALPHA, and available via the API or the TypeScript client.
- Tabi – adding new endpoints for querying for records from a Tabi table accepting a Prisma-like query structure and returning a paginated list of results. Pagination is a placeholder right now–results are limited to no more than 1000 records.
- Tabi – add Manage Table and Query Table permissions to users who already have Manage Variable permission.
- Server Function Caching – add new field `cachePolyLibrary` which caches your poly library at deploy time, leading to faster function wake ups and more resilient function execution.
- Functions – added more words to the Forbidden Words list to prevent cross-language conflicts. These forbidden words generally include TS reserved words, Python reserved words, etc. You cannot use these words as a name, argument name, etc.
- DB – added a `lastUpdatedAt` column to most Poly entities (API Functions, Server Functions, etc) and added a DB trigger to ensure the value is updated whenever a DB update is made.
- API Function – Training – better support training of APIs that return html or xml or other non-json payloads
- API Function – Training – improve handling of special characters like + and =
- API Function – Errors – improve logging of axios errors on failed API function requests.
- Webhooks – allow users to select default response status codes between 300 to 600. Before users could only select 2XX response status codes.
- Webhooks – improve handling of unique constraints on slug + subpath + method, and improve error messages around uniqueness presented to user.
- Error Handler – Improved error handler invocation to pass all error properties, such as the error itself, as well as the related function ID, application ID, and user ID into the error handler server function as a single object as the `error` argument.
- Schema – when a schema is renamed, make it more clear in the UI if a function is referencing the old schema name.
- Jobs – tweak settings of Job Runner to reduce edge case chance of a job getting stuck in the stalled state.
- Vari – adding ability for object variables to employ PARTIAL secrecy so that any key within the variable’s value that contains “secret” (case-insensitive) within the key name will be replaced with a redacted “********” value within the UI and within the value returned by a `.get()` call. Partially secret variables can still be injected, so calling `.inject()` will result in the full, unmasked value of the variable being injected into the target function. This allows for a single Vari variable to hold the full configuration for an integration–including secret api keys alongside other non-secret configurations.
- Usage – add better tracking around webhook and server function call counts.
Bug Fixes
- Logging – fix a bug related to multi-line log parsing.
Canopy Service and Management APIs
Improvements
- Management UI – Edit Tenant – add OTP (MFA) support
- Management UI – Server Functions – add “Run in Background” boolean to the UI to reflect whether the server function is configured to run asynchronously.
- Management UI – Error Handler Triggers – remove unused “Wait For Response” boolean option
- Management UI – Adding a new `submitMode` key to `create` and `update` configurations within a collection. Use this to control the values that get submitted from the respective form to your backing api or server functions. Accepted values: “all” (the default value) to submit all fields, “filled” to submit only the fields with values filled out, or “changed” (within update form only) to submit just the fields that have been changed.
- Management UI – Adding ability to define dynamic configuration for collection properties to enable property changes based on the values of the collection item, the data in a form, query params, path params, and even the authenticated user.
- Management UI – Server Functions – improve the display of server functions to provide more information and be more readable.
- Management UI – Server Functions – display the ID of the Execution API Key if it has been set.
- Management UI – add placeholders and tooltips across the Management UI.
- Management UI – improve error message around duplicate subpaths when creating an Application.
- Canopy – improve the UX around function argument lists.
Bug Fixes
- Management UI – Create Snippet – Fix bug where snippet code gets stripped of newlines on create
- Management UI – Fixed bug where API keys could not be modified due to the presence of the read-only application/user fields in the update form.
VS Code Extension
Improvements
- Add config options to the refresh SDK button including no-types, names, and functionIds.
Docs, Public Functions, Content, Support
New PolyAPI Support Bot
- In our Slack Community, there is now a Support Request Bot which can be accessed in any channel with the /support_request command. This enables users to quickly file support requests, including high priority support requests for urgent attention by a PolyAPI support engineer.
Docs
- Added document around client functions, and when you should use client functions vs server functions: https://docs.polyapi.io/generated_sdks/client_functions.html
- Added documentation about how to set `execution-api-key` when deploying a server function: https://docs.polyapi.io/generated_sdks/typescript.html
- Added documentation about how to use `cache-poly-library` when deploying a server function: https://docs.polyapi.io/generated_sdks/typescript.html
OOB Functions
HubSpot Integrations
- poly.OOB.hubspot.properties.create(hostUrl, objectType, token, createPropertyPayload) – Create a custom property for a specified object type in HubSpot.
- poly.OOB.hubspot.objects.search(hostUrl, objectType, token, searchObjectsPayload) – Search for HubSpot objects by specified criteria.
- poly.OOB.hubspot.emails.sendTransactional(hostUrl, token, transactionalEmailPayload) – Send a transactional email through HubSpot.
- poly.OOB.hubspot.properties.update(hostUrl, objectType, propertyName, token, updatePropertyPayload) – Update an existing custom property for a specified object type.
OHIP Integrations
- poly.OOB.ohip.reservations.depositFolios.create(hostUrl, hotelId, reservationId, appKey, token, payload) – Create a deposit folio for a reservation.
- poly.OOB.ohip.reservations.hub.list(hostName, hubId, appKey, token, queryParams) – List reservations across multiple hotels using a hubId.
- poly.OOB.ohip.crm.profiles.hub.getDetails(hostName, profileId, hubId, appKey, token, queryParams) – Retrieve details for a specific profile from using hubId.
- poly.OOB.ohip.crm.profiles.hub.update(hostName, profileId, hubId, appKey, token, updateProfilePayload) – Update a CRM profile using hubId.
- poly.OOB.ohip.crm.profiles.hub.create(hostName, hubId, appKey, token, createProfilePayload) – Create a new profile using hubId.