PolyAPI  >  Developers  >  Release Notes

PolyAPI – Release 25

Release Notes

Jul 31, 2025
Days since last major release:
29 days

Gateway and Function Runtime

Improvements

    • API Function Logging: API function error logs now obscure certain sensitive keys by default (`api-key`, `token`, `access-token`, etc), replacing the value with *******.

    • API Function Training: when training API functions, prevent the AI from suggesting argument names that are keywords in most programming languages: `if`, `else`, `return`, etc.

    • API Function Training: fixed a bug that incorrectly trained API functions that used an `api-key` header, forcing the user to do a post-training manual fix.

    • API Function Training: improve handling of `body` and avoid nesting it under an extra `payload` object layer.

    • Environments: add a `description` field for describing what the environment is used for and what should go within it.

    • Jobs: added additional logic and fallbacks to prevent jobs from being run outside of their scheduled time.

    • Job Activity: add Activity Records for Job CRUD operations.

    • Server Function: made server function library version logging async so it does not delay main function execution.

    • Config Variables: added option to turn off AI suggestions when training variables and snippets.

    • Snippets: when adding Snippets, we now add an AI generated description if the user does not provide an explicit description and AI is enabled.  

    • Identity Providers: added a “Manage Users” permissions requirement for any change to Identity Providers.

    • SSO: add support for multiple SSO providers per tenant, and added option to auto-create users in Poly upon the first successful SSO. 

    • Webhooks: improved our database indexing and uniqueness detection around webhooks with slugs and subpaths. 

Bug Fixes

    • Login: users who navigate to a url but are redirected to login get sent to their intended destination immediately following login.

    • Error Handler: fixed error handler routing to ensure that error handlers that include a public namespace in the path, or have more specific matching criteria are matched and triggered.

    • Server: Adding Functions: fixed a bug where sometimes the function arguments were double-encoded on creation and so the types were off.

      • Nested / Array Fields: fixed bug with form validation that prevented forms from being submitted until those fields had been focused and blurred.

Canopy Service and Management APIs

Improvements

    • Tenant Edit UI: add MFA support to the UI in case customers have MFA enabled for this operation.

    • Enum Field: auto-select the first option if only one option is available.

    • About Me: converted the /about-me page to a modal rather than a standalone page outside of any application.

Node Client

Bug Fixes

    • Tabi: fixed a bug where the types were wrong for the `orderBy` option for `selectMany`

    • Glide: fixed a bug under Windows where Glide failed to detect deployable objects in the repository. 

Python Client

Improvements

    • Tabi: added the Tabi client to Python! You can now manage Tabular data in Python!

    • Simple calls to `print` inside of Python Server Functions now show up in server function logs. (Before you had to use a special logger named `poly`).

    • Log API Function call errors by default when logs are enabled for easier debugging.

    • Python 3.13: update dependency requirements to make install more seamless.

Bug Fixes

    • Schemas: fixed a bug where Schemas with non-ascii characters would be considered invalid and not show up in the library.

    • Client / Server Functions: fixed a bug where functions that used TypedDict to type the argument or return type were not correctly parsed.

VS Code Extension

Bug Fixes

    • Fixed a bug that prevented Tree view from showing up under Windows 11

Docs, Public Functions, Content, Support

Docs

OOB Functions

HubSpot Integrations

    • poly.OOB.ohip.ratePlans.getCodes(hostName, hotelId, ratePlanCode, appKey, token, queryParams)
      – Fetch rate plan details for a hotel by hotel ID and rate plan code.

    • poly.OOB.ohip.cashiering.guestsTransactions.getDetails(hostName, hotelId, reservationId, queryParams, appKey, token)
      – Retrieve transaction details associated with a guest’s stay.

    • poly.OOB.ohip.cashiering.proformaFolio.create(hostUrl, hotelId, reservationId, xAppKey, xHotelid, acceptLanguage, token, body, externalData, xExternalsystem)
      – Create a pro-forma folio for a specific reservation to share with external partners.

    • poly.OOB.ohip.cashiering.folioTransactions.getDetails(hostName, hotelId, transactionNo, hubId, appKey, token, queryParams)
      – Retrieve transaction-level details from a guest folio.

    • poly.OOB.ohip.cashiering.folioHistory.getDetails(hostName, hotelId, appKey, token, queryParams)
      – Fetch the historical folio activity for a specific reservation.

    • poly.OOB.ohip.cashiering.creditBills.create(hostName, hotelId, appKey, token, creditBillPayload)
      – Create a credit bill for a hotel folio, including payment methods, transaction codes, and updated folio details.

    • poly.OOB.ohip.cashiering.chargesAndPayments.post(hostName, hotelId, reservationId, appKey, token, chargesAndPaymentsPayload)
      – Post charges and payments for a reservation, including transaction and cashiering details.

    • poly.OOB.ohip.bof.businessDate.getDetails()
      – Retrieve the current business date for a hotel, useful for scheduling and operations.

    • poly.OOB.ohip.cashiering.routingInstructions.create()
      – Create routing instructions for a reservation, including billing rules and payee configurations.

    • poly.OOB.ohip.cashiering.creditBills.hub.create()
      – Post a credit bill from the hub, enabling partial or full adjustments to folios with transaction-level control.

    • poly.OOB.ohip.cashiering.chargesAndPayments.hub.post(hostName, hotelId, reservationId, hubId, appKey, token, chargesAndPaymentsPayload)
      – Post charges and payments via the hub for a hotel reservation, including full financial transaction data.

    • poly.OOB.ohip.contentService.config.folioReports.hub.sendEmail(hostName, hubId, appKey, token, sendFolioEmailPayload)
      – Send folio reports via email from the hub, specifying reservation, folio type, and recipient address.

    • poly.OOB.ohip.contentService.config.folioReports.sendEmail(hostName, appKey, hotelId, token, sendFolioEmailPayload)
      – Send folio reports via email for a specific hotel and reservation, automating report distribution.

Adyen

    • Retrain to improve the argument schema types and return schema types.

AWS S3

    • poly.OOB.utils.py.s3.getObject(…)
      – Get an object from S3.

    • poly.OOB.utils.py.s3.putObject(…)
      – Put an object on S3.

SFTP

    • OOB.utils.py.sftpConnect(…)
      – Connect to an SFTP server.

    • OOB.utils.py.sftpEnsureDir(…)
      – Ensure a directory exists on an SFTP server.

    • OOB.utils.py.sftpFileList(…)
      – List files on an SFTP server.

    • OOB.utils.py.sftpProcessFiles(…)
      – Process files against some callback function on an SFTP server.

Misc

    • OOB.utils.ts.validateObjectAgainstSchema(…)
      – Fixed small bugs.

    • OOB.utils.py.validateObjectAgainstSchema(…)
      – Added a Python version of `validateObjectAgainstSchema` to make sure incoming payloads match the specified Schema.

    • OOB.polyapi.users.whoami(…)
      – Fixed returned type schema!