Release Notes
What changed in each release of Informer, newest first. Release numbers follow the scheme described in How Informer is versioned.
As of 2025.2.0, the MS SQL driver has been upgraded, introducing case-sensitive connections and changes affecting older non-encrypted Datasources. See JDBC Connection Changes for more information.
2026.1.5
October 2026
Fixes and Improvements
- Informer runs on Node.js 22.23.4 or later, with the latest Node.js security fixes
- Hardened access to Jobs, Job credentials, user and team details, license details and activity feeds
- App Dataset filters on a User Field with several values match rows for any of them, and a filter in the App manifest can list several values
- A blank User Field in an App Dataset filter takes the field's Default Value, and matches no rows when that is blank too. Give those users a value, or set a Default Value for the field.
- Merge Duplicates on the Postgres engine keeps every column with long field names, such as linked fields, and with a count field named like a merge key
- Updating an App from the Marketplace replaces its files instead of adding to them, so Apps updated often keep launching quickly
- The SFTP Job action shows a saved raw key as saved without displaying it. Paste a new key to replace it.
- Informer finishes the work it has already started before it stops. Docker installations with their own
docker-compose.ymlshould update each Informer service'sentrypointandstop_grace_period, as described in Upgrading Informer (Linux w/ Docker).
API Changes
No existing routes were renamed or removed in this release.
Breaking Changes
| Route | Change |
|---|---|
PUT /api/jobs/{id}/datasets/{alias} | Updates an existing Job dataset only, and answers 404 for an alias the Job does not have. Add one with POST /api/jobs/{id}/datasets. |
GET /api/jobs/{id}/datasets/{alias}/permissions | Answers null instead of {} for an owner whose permissions could not be evaluated. Treat null as unverified. |
POST /api/jobs/{id}/actions, PUT /api/jobs/{id}/actions/{jobActionId} | A batch upload credential in opts that is not a string answers 400 when the action is saved. |
Access Changes
| Route | Change |
|---|---|
/api/jobs/{id} and every route under it | Answer 404 for a Job the caller cannot read, PUT /api/jobs/{id} included. This applies to Apps calling as a runAs: viewer user. |
Job configuration writes: actions, action order and preview, file contents, attachments, run conditions, datasets, _edit, _commit and DELETE of a history item | Require edit permission on the Job, and answer 403 otherwise. |
| Job action, attachment and run condition routes | An id that belongs to another Job answers 404. On PUT, a connectionOwnerId other than the caller answers 403 unless the caller is a superuser, an unreadable libraryId answers 404, and another Job's jobDatasetId or parentId answers 400. |
GET Job actions and attachments | Credential options are left out for callers without edit permission on the Job, and editors receive rawPrivateKey encrypted. |
PUT /api/jobs/{id}/datasets/{alias} | Ignores datasetId, reportDatasetId and reportId: a Job dataset keeps the Dataset, query or report it was created with. |
?expand= | Answers 400 on GET /api/jobs, /api/datasets, /api/datasets/{id}, /api/queries and /api/users, on the Job action, attachment and run condition routes, on the team, team list and team member routes, and on GET /api/users/{username}/memberships. ?expand=system answers 400 on every route. |
GET /api/users-list, GET /api/users, team member payloads | globalPermissions, locked, lockedAt, loginAttempts, passwordExpiresAt and passwordSetAt are returned only to superusers and holders of viewAllUsers, and team member payloads leave out forgotPasswordRequestTime. The superuser flag stays visible. |
GET /api/license | For non-superusers, leaves out systemId, issuedTo, namedUsers, maxConcurrentJobs and the License Manager status. |
| Tenant HAL | For non-superusers, leaves out systemId, maxConcurrentJobs and the license's customer details. |
GET /api/teams/{id}/feed | Limited to team members, superusers and holders of viewAllTeams; 403 otherwise. |
GET /api/users/{username}/feed, GET /api/users/{username}/feed-new-count | Limited to that user and superusers; 403 otherwise, and 404 for an unknown username. |
GET /api/datasets/{id} | The embedded Datasource leaves out connection and integrationId. |
Updated Routes
| Route | Change |
|---|---|
GET /api/datasets, GET /api/queries | ?datasource= filters the list by Datasource. |
POST /api/marketplace/browse/{id}/install/{version} | Replaces the App's files with the pack's in one deploy, and answers 409 while another deploy of the App is staged. |
GET /api/tenants | Adds appSubdomains, whether a tenant's App hosts are per-tenant subdomains. |
PUT /api/tenants/{id} | Answers 403 for a change to appSubdomains, which only _remint-app-origins sets, and ignores maintenance. |
POST /api/tenants/{id}/_remint-app-origins | Adds subdomains, to move one tenant onto per-tenant App subdomains (true, the default) or back (false), and the response returns the value applied. A deployment that does not set app.tenantSubdomains answers 409 unless the request sends subdomains: false. |
POST /api/license/_sync-tenant-licenses | Skips a tenant paused for maintenance and reports it with paused: true. |
| Every route | While a tenant is paused for maintenance, its requests answer 503 with Retry-After and data.code: TENANT_PAUSED, and manager actions aimed at it answer 409 with TARGET_TENANT_PAUSED. GET /api/health keeps answering. |
New Routes
| Route | Purpose |
|---|---|
POST /api/tenants/{id}/pause, GET /api/tenants/{id}/maintenance, POST /api/tenants/{id}/unpause | Pause a tenant for maintenance, poll until it is ready for backup, and resume it. Root manager superuser only. |
GET /api/app-origins | Lists App origin hosts and server routes by tenant, or for one with ?tenant=. The root manager superuser sees every tenant, a tenant superuser their own. |
2026.1.4
October 2026
New Features
- Introduced App Channels: Apps push live updates to every open page, receive messages back, replay what a page missed while it was away, and can keep a long-running process per channel for real-time Apps
- Introduced streaming file transfer for Apps: resumable uploads and downloads of large files, CSV loads into App tables, query results exported as files, and files passed to and from Integrations
- Introduced App embeddings: an App declares the content to embed, and Informer keeps the vectors current in the App's workspace for semantic search, with an Embeddings tab in App administration
- Introduced App API keys: scoped, expiring keys that let external systems call an App's own API, managed from the App's Public API tab
- Introduced Informer Setup for on-premises Windows servers: a guided installer that checks the server, installs the services Informer needs, and runs Informer as a Windows service, with a manager for configuration, memory, plugins and logs
- Added OAuth and token sign-in for Generic JDBC (including Snowflake) and Microsoft SQL Server Datasources through Integrations
Apps
- Added calendar meeting requests to App emails, with Accept and Decline in Outlook and Gmail
- Added Datasource dependencies to Magic Reports
- An App can link into another App's pages
- The App menu opens an App on its own in the browser, already signed in
- Apps stay signed in for 48 hours by default, and administrators can set the App session timeout per deployment
- Apps stay available to active users while a new version deploys
- Apps load faster on return visits, downloading only the files that changed
- Apps launch behind reverse proxies that use default header buffer sizes
- App emails send through the Gmail, Microsoft and OAuth mail drivers
- App server routes and webhooks return images and other binary responses
- A shared App link opens the linked page after the recipient signs in, instead of the App's home page
- Apps on their own web address open from share links in browsers that block their cookie, accept updated permissions in one step, and install to the home screen as standalone apps
- Apps can copy to the clipboard, go fullscreen and use the share sheet inside Informer GO
- The App Webhooks tab copies a working URL in one click and labels each access key
- The Reports list links App and Magic Report rows, with readable type labels and a row menu
- A beta App installs beside its production install when the App uses generated columns
- Purging a deleted App completes even when its workspace role is already gone
AI and Assistants
- AI chats find and attach an App's tools on their own, and ask before running a tool that makes changes
- AI chats offer a Reasoning effort setting on models that support it
- App Builder builds cost less and finish sooner
- Saved chats follow the administrator's Copilot, Help Center and Apps instructions
- Structured AI requests work on Claude Opus 5.5, Opus 5 and Sonnet 5
- Copilot adds a chart to a Dataset's visuals once, and reports success when it saves
- Remote MCP toolkits connect to Informer-hosted MCP servers and keep their connection through a token refresh
Datasources and queries
- The Informer Datasource's query timeout is configurable, 5 minutes by default and up to 1 hour
- Native SQL queries bind their parameters without declaring inputs
- A failed Datasource query reports its real error and is logged, instead of answering "Service Unavailable"
- A Datasource scan that hits an error reports it to the caller
- Merge Duplicates honors the query's Order By, keeps columns missing from a group's first record, and returns the same result on every database. Merged output can change for affected flows.
- A Dataset opened from the dashboard editor stays open while a newly added visual saves
Jobs
- Scheduled Jobs keep running while another database transaction in the tenant is open
- Scheduled Jobs run on tenants that have never synced with the License Manager
- A Job action skipped by its run condition is recorded as a skipped action, not an "Invalid Action" warning
Usage, billing and licensing
- Job and App compute is billed at the correct rate for each resource
- Installations not billed for App compute run App server routes without a credit check
- Credit usage warnings reach every billing admin, in the classic interface and in Informer GO, and the classic credit meter shows real pool usage
- Usage alert emails arrive from a proper sender with working Upgrade Plan and Buy Credits links, and the redesigned Usage Alerts card adds a pool meter and a Send test email action
- Mass license sync covers every tenant on the server, including those outside the manager account
Informer GO
- Apps display in Informer GO on Android
- Restored Print to PDF for Magic Reports
- The chat keeps scrolling after a memory is created
- The AI & Billing settings pages follow light and dark mode
- The desktop app reports an error when Connect cannot open the browser, instead of waiting
Integrations
- Integrations trim whitespace pasted into client IDs, client secrets and API keys
Security and access
- Hardened chart security, including Highcharts' September 2026 security updates
- Hardened file, Library and App access
- Hardened tenant isolation for Datasource connections and cached results
- Hardened App launch and sign-in redirect handling
- SSO and LDAP users can manage their own MFA
Administration
- System restore completes when some encrypted values cannot be decrypted, and lists the records affected
- A third-party cookie in the browser no longer blocks requests to Informer
- Usernames containing a backslash or accented characters work throughout Informer
- Updating an OAuth client without its redirect URLs keeps the ones already stored
- Closing the browser mid-request releases its database locks at once
- Server log streams in Redis expire instead of accumulating
API Changes
No existing routes were renamed or removed in this release.
Breaking Changes
| Route | Change |
|---|---|
POST /api/datasources/{id}/_query | A request error (invalid query, missing field) answers with its own 4xx status instead of 503, and only a Datasource failure answers 503. Fix a request that answers 4xx rather than retrying it. |
POST /api/datasources/{id}/_sql | A failed statement answers 400 for a query error, 408 for a timeout, 409 for a lost race with another transaction and 503 for an infrastructure failure, instead of 500. Only 409 and 503 are worth retrying. |
/v/hc.{ext}, /v/kpi.{ext} | A failed export answers an error status instead of 200 with an empty image. Check the status before using the image. |
PUT /api/chats/{id} | Omitting outputSize keeps the chat's current value instead of resetting it to medium. Send medium to reset it. |
PUT /api/oauth-clients/{id} | Omitting redirect_uri keeps the stored redirect URIs instead of clearing them. Send [] to clear them. |
POST/PUT /api/datasources | connection.statement_timeout must be from 0 to 2147483647 milliseconds; other values answer 400. A fraction is truncated to whole milliseconds. |
Access Changes
| Route | Change |
|---|---|
App files under _bundles/ | The built server code of an App is no longer served to browsers or readable by users who can only run the App. |
/api/files (search, lookup, download, upload) | Superuser only. Use the owning Library, assistant or attachment routes instead. |
| Library routes on a Library that belongs to an App | Writing requires write access to the App, and so does reading its server-side files. |
DELETE /api/libraries/{id}/files/{fileId} | Requires Library write access. |
POST /api/libraries/{id}/assistants | fileId is required and must be a file of this Library. |
POST /api/chats | assistantIds, datasetIds and libraryIds the caller cannot read are dropped. |
GET /api/chats/{chatId}/toolkits | Limited to the chat's owner; toolkit config is no longer returned. |
POST /api/tenants/_id | Root manager superuser only. |
PUT /api/apps/{id} (Magic Report to App) | Requires Admin on the App's team. |
/nes/auth | Accepts only socket tokens; API tokens cannot open a socket. |
/v/hc.{ext}, /v/kpi.{ext} | Chart config functions and formatter strings are not executed; use declarative Highcharts options. |
New Routes
| Area | Routes |
|---|---|
| App API keys | GET/POST /api/apps/{id}/api-keys, GET /api/apps/{id}/api-keys/_all, PUT /api/apps/{id}/api-keys/_policy, PUT/DELETE /api/apps/{id}/api-keys/{keyId} |
| App Channels | GET /api/apps/{id}/channels, POST /api/apps/{id}/channels/_send, GET /api/apps/{id}/channels/_replay, plus /_socket and /_app/nes.js on App origins |
| App streaming | /api/apps/{id}/view/_uploads and /api/apps/{id}/view/_downloads (/_uploads, /_downloads on App origins) |
| App embeddings | GET /api/apps/{id}/embeddings, POST /api/apps/{id}/embeddings/{name}/_run, POST /api/apps/{id}/embeddings/{name}/_embed |
| App deploys and builds | POST/DELETE /api/apps/{id}/files/_stage, GET /api/apps/{id}/builds |
| App home-screen install | /_app/manifest.webmanifest, /manifest.webmanifest, /_app/icon-{size}.png, /_app/manifest-assets/{path*} on App origins |
| AI chats | GET /api/chats/{id}/usage (rel inf:chat-usage) |
| Usage alerts | POST /api/usage/billing-config/_test-alert, GET /api/usage/alert-status |
Updated Routes
| Route | Change |
|---|---|
POST/PUT /api/datasources | Adds integrationId to authenticate through an Integration; also accepted by POST /api/datasource-drivers/{id}/_ping. |
GET /api/datasources/{id}/mapping-select-list | Adds ?view=picker, which returns only id, restId, name, mappingId, schemaId and hidden. |
GET /api/ai-access, PUT /api/ai-access/_revoke, PUT /api/ai-access/_upsert | AI access is governed by Usage Profiles: the list is always empty and the updates have no effect. |
GET /api | Adds inf:app-webhook-url, the single link to compose an App webhook URL from. inf:app-webhook keeps one link per method. |
POST /api/apps/{id}/_deploy | An App's channels/ and embeddings/ folders hold channel and embedding handlers, which are never served to browsers; other static files in them still are. The manifest's requires: sets a minimum Informer version, and a channels: block declares channel relays; an invalid block is reported as a deploy warning. |
GET /api/integrations | Adds the canSupplyAccessToken and connected query filters. |
POST/PUT /api/chats | Adds effort, the chat's Reasoning effort. |
POST/PUT /api/models | Adds effortOverride, editable on managed models. |
POST /api/models/{id}/_chat | Adds appIds to attach those Apps' tools. |
POST /api/_restore, POST /api/_restore-from-file | A completed restore answers 200 with the restore result, including values that could not be decrypted, where it answered 500 before. |
GET /api/apps/{id}/stats | Adds channels and counts.embeddings. |
GET/PUT/DELETE /api/users/{username}/mfa | Allowed for the user themselves or a superuser, including SSO and LDAP users. |
GET /api/downloads/{id}/{filename?} | Content-Disposition carries an RFC 6266 filename* for non-ASCII file names. |
2026.1.3
September 2026
Fixes and Improvements
- A failing query against a file Datasource returns an error
- Native SQL queries bind only the placeholders they declare, and App dependency slots bind their parameters
- AI chat replies survive long tool calls and thinking pauses, and a failed reply reports its error instead of hanging
- Retry after an App Builder error picks up from the last finished step
- An App deploy that succeeds is reported as a success rather than a network error
- A new App in the web App Builder shows its waiting state until the first build arrives
- Font Awesome icons render in Apps restricted to approved libraries
- App Builder grades an App against the security policy it is served with
- AI chats and App Builder use fewer credits, and builds take fewer steps
- Uncaught exceptions follow the server's configured handling on deployments running APM
2026.1.2
September 2026
Apps
- Apps can be served from their own hostname, using per-app origins
- An App's MCP server can be added to Claude in one click, from the App's MCP tab
- Manager-tenant App origins drop the tenant prefix, and marketplace betas serve from their own
-betalabels - An App that widens its pack dependency range installs again
- App and MCP tool descriptions keep their full text instead of stopping at the first string literal
- Apps resolve external URLs correctly behind reverse proxies
- An App deep link survives password login on a path-prefixed deployment
- Apps opened from an external link load fully, and survive an expired session
- Apps served from their own origin can sign out
- Scripts posted through an App's resource URL path keep their full contents
- App documentation opens in place rather than taking over the window, and its links, stylesheets and images all work
- A dependency slot that only the owner can resolve is surfaced to viewers instead of failing quietly
- Dependency errors say whether Informer or the provider returned them
- System backup imports carry App workspaces across intact
- Bundle imports check versions correctly, and the global App origin registry stays out of exported bundles
AI and Assistants
- The Help Center chat cites the articles it answers from, and reads Informer's own documentation site
- AI chat keeps working when the License Manager is unreachable
- AI chat works for users whose username is an email address
- Scheduled chat prompts run, a one-time schedule runs once, and a failed run says so
- Chat scheduling is manageable everywhere it is offered
- An Assistant can be asked a question over the API without consuming a stream
- Large document uploads to Assistants index reliably
- Text fields and code editors keep focus instead of losing it to the AI chat
- A Magic Visual created earlier stays visible whether or not AI is enabled
- Restored the New Chat action, top-level chat history, and Restart chat on the remaining Assistant surfaces
- Restored authentication for embedded Assistants framed cross-origin
Usage, billing and licensing
- Storage usage reaches the License Manager and is billed
- AI billing charges every tool-loop step, embeddings, and provider web search
- Scheduled Jobs run without being held back by credits they never spend
- The License page reflects a swapped license without a manual sync
- A suspended usage profile reads as suspended rather than as an unlimited one
- Restored license installation on air-gapped servers
Informer GO
- An SSO user can sign in to Informer GO in a browser
- GO surfaces load and sign in behind tenant path prefixes
- Apps open in the GO desktop app when served from their own origin, and open outside Electron where that is the right behavior
- Cmd+R and closing a window behave as expected in the desktop app
- The launcher chat opens in the mode you asked for, and an unreachable API leaves the tab responsive
Integrations
- An Integration administrator can see and revoke the shared connection their App uses
- App-owned Integrations follow their App's owner at transfer time, and their owner cannot be changed directly
- A connection survives a token refresh that failed for reasons unrelated to authorization, such as the License Manager being unreachable
- Upgrading succeeds when two people have connected the same Integration
- Restored the Edit action for API Connections in the Integrations list
Jobs, Reports and Templates
- Job email HTML inserts honor the filters applied to them
- Aggregate counts render as counts when there is no data, rather than NaN
- Custom-script response parsers complete on large and deeply nested responses
- Cloud published Reports can be revoked
Security and access
- Password login rejects LDAP filter injection
- App responses and bundle exports keep encrypted secrets out of their payloads
- Sharing a Datasource directly to a User grants access to that Datasource, not tenant-wide create rights
- The OAuth token endpoint answers with RFC 6749 error bodies
Administration
- The health endpoint answers as a readiness probe for cloud infrastructure
- The API Tokens page loads for every token type
- Team member dialogs can be dismissed with a Done button
API Changes
New Routes
| Route | Purpose |
|---|---|
POST /api/assistants/{id}/_ask | Ask an Assistant a question and receive a JSON answer rather than a stream. Takes a prompt or a messages array; the Assistant supplies its own model, instructions, skills, datasets, and knowledge. Exposed as the inf:assistant-ask rel on non-draft Assistants. |
GET /api/apps/_origin-preflight | Superuser check that per-app origin routing is correctly configured for a deployment. |
Updated Routes
| Route | Change |
|---|---|
GET /api/health | A bare GET with no diagnostic query flags is now an unauthenticated readiness probe, returning 200 when healthy or 503 naming the failed checks. Flagged diagnostic requests return 401 when unauthenticated, and basic auth is no longer accepted on this route. |
POST /api/oauth/access_token | Failures now return the RFC 6749 error body {error, error_description} instead of {statusCode, error, message}. |
PUT /api/integrations/{id}/owner | Rejects an app-owned integration with 400. Change the owning App's owner instead. |
GET /api/integration-connections | Also returns shared-mode connections, so an App's administrator can see and revoke the credential their App uses. |
GET /api/session | Returns hasSharedDatasources alongside maxAccessLevel. |
Known Issues
- Canceling a dataset refresh that merges duplicates can leave background processing running
- Assistant knowledge uploads of .xls and .doc files fail without an error
2026.1.1
August 2026
New Features
- Introduced the Informer Marketplace: discover, purchase, install, and publish packaged Informer Apps
- Added MCP server support for Apps, exposing an app's AI tools to external AI clients and Informer AI chats
- Added app-to-app dependencies with automatic OpenAPI discovery
- Added app-owned integrations: apps declare and manage their own service connections
Apps
- The App Storage admin tab gains a SQL query workbench, and portable data backup and restore
- Apps carry their own documentation, readable in place
- App development can wrap workspace queries in an atomic transaction
- Apps built in the UI stay editable rather than being marked as managed
- App data restore and cloning succeed on schemas with cyclic foreign keys
- App export to PDF completes when a non-essential resource fails to load
- Apps read nested library folders, and deploys upload the
lib/andshared/source directories - App resource management preserves resources through a rename
- The Delete App confirmation describes what it will actually remove
- Apps render behind reverse proxies
- App Builder gains chat image upload, and file upload works again
- The App Copilot panel can be resized and remembers its width
AI and Assistants
- Assistant chats read the files uploaded to them
- Chats open scrolled to the most recent message
- Assistant welcome screens show curated suggestions
- Ask AI appears on Library files that are indexed
- Bulk favoriting works for Assistants and Libraries
- Secret selection works in the web search skill settings
- Restored the Restart Chat action
Datasources and queries
- The Datasource connection test reports an unreachable Datasource instead of reporting success
- Blank query inputs bind NULL, and configured defaults bind their own values
- Boolean script field filter counts are correct in Dataset preview
- New installs run queries out of the box with Elasticsearch or OpenSearch authentication enabled
- Datasource connection handling is hardened, and connection details stay out of responses
- JDBC Datasources accept key pair authentication
- Native SQL queries accept user field placeholders
Datasets, Reports and Templates
- Data View filter chips reflect the filter mode in use, rather than always reading "Match All"
- Plugin-provided Template filters render their output
- PDF export allows slow Templates the time they need to render
- The Dataset PDF export "Include group summary" option is honored
- Grouped Dataset PDF exports name their summaries
- Export downloads succeed in embedded JWT deployments
- A Template can be shared from its view page
- Trend chart labels are translated, and a stray legend label is gone
Integrations
- Integrations accept additional allowed base URLs, including host wildcards, for multi-host services
- OAuth Integration connections support PKCE
- Integration icon changes are saved, and report when they are not
- API Base URI is marked as required
- Library OAuth connect binds to the right user's Integration when several own the same Library type
- App Integration slots resolve when the user's OAuth connection already exists
Informer GO
- The iOS app gains Face ID lock, Keychain-stored tokens, a branded splash, and status-bar theming
- API requests work in proxied and relocated deployments
- An expired session prompts to sign in rather than rendering a login form inside an embedded frame
- The Sign Out button does what it says
- Informer GO runs against a 2026.1.0 server
Usage, billing and licensing
- The Usage dashboard counts charged usage only, and Top Consumers is split by category
- A Job that fails for insufficient AI credits says so plainly
- The license disconnect message is accurate, and offers a Retry
- Manage Payment Methods is clearer, and card validation is back
Security and performance
- Sign-in is hardened with rate limiting and expanded account lockout
- App platform security and resource policy enforcement are strengthened
- Large base64 response bodies are handled without overflowing the regexp stack
- AI usage and audit log queries run faster
- Restored IR CLI websocket commands
API Changes
No existing routes were renamed or removed in this release.
Updated Routes
| Route | Change |
|---|---|
POST /api/apps/{id}/workspace/_query | Adds mode (read/write, default read) and dryRun; sql limit raised to 5 MB; writes require write mode, one statement per call, and are audited |
GET /api/apps/{id}/workspace/_dump | Adds schemaOnly query parameter |
POST /api/apps/{id}/_deploy | Accepts optional { managed: boolean } body |
POST /api/apps/{id}/_copy | Refuses managed (CLI-deployed/marketplace) apps with 403 |
GET /api/apps/{id}/dependencies | Response extended with binding/connection state fields (optional, owned, connected, canConnect, sharedConnection, targetImageUrl, and pack fields); bound now indicates the target is resolvable by the caller |
PUT/DELETE /api/apps/{id}/dependencies/{name} | Manifest-owned (deploy-managed) bindings refuse manual rebinding; invalid targets are rejected with 400 |
POST /api/datasources/{id}/_ping | Options now nested under options; always returns 200 with { status, message } (no more 503); requires the datasource ping permission |
POST /api/datasource-drivers/{id}/_ping | Adds id to ping an existing datasource with its saved connection; connection may be null; body optional. Permission checks now depend on the payload: unsaved connections require create or edit-connection rights, saved datasources require the ping permission |
GET /api/datasources/{id}/connection | Now requires the datasource edit permission |
PUT/DELETE /api/datasources/{datasourceId}/visuals/{id} | Fixed, previously failed with 404/500 |
POST /api/chats, PUT /api/chats/{id} | Adds appIds to attach apps (MCP tools) as chat context |
POST /api/integrations, PUT /api/integrations/{id} | Adds altBaseUris (supports leading *. host wildcards) |
POST /api/toolkits | OAuth endpoint fields restricted to http(s) URIs |
POST /api/oauth/authorize, /api/oauth/access_token | Adds optional resource (RFC 8707); scopes capped by the client's allowed scopes |
POST /api/oauth/device_token | Scope capped by the client's allowed scopes |
PUT /api/settings | Adds oauthDynamicRegistration (default off) |
PUT /api/settings/apps | customOrigins[].origin validated as a wildcard-free https origin; list capped at 50 |
PUT /api/settings/apps/resources/{id} | Omitting resources now preserves existing resources instead of resetting them |
POST /api/settings/apps/resources/{id}/_refresh-sri | Response drops results.assets (assets are no longer integrity-refreshed); failed entries are flagged; capturedAt/capturedBy advance only when a hash actually changes |
POST /api/settings/apps/resources/_preview | Now restricted to superusers, with hardened URL fetching |
POST /api/tenants | License multi-tenant entitlement now enforced for all users, including superusers |
POST /api/_sync-tenant-licenses | Result rows gain an activated boolean |
POST /api/login/{domain} | May return 429 (configurable login rate limiting) |
PUT /api/search-clusters/{id} | Omitting createUsers now leaves the setting unchanged |
POST /api/favorites | The assistants array now favorites assistants (previously ignored) |
GET /api/usage/subscription | Serves the last-cached subscription when the License Manager is unreachable |
/api/apps/{id}/view/api/... | App server routes enforce JSON bodies (415 otherwise); multipart passes through to inner routes; session/credential endpoints answer 403 from app channels |
New Routes
There are many new API routes in 2026.1.1 related to the Marketplace, MCP support, app administration (backup/restore, query history, icons, unmanage), and sign-in. For the comprehensive list, see the API reference.
Known Issues
- The API Token admin page has display issues
- Magic Reports opened in the React app viewer are missing print to PDF
- Edit Name/Description is missing from Templates
2026.1.0
July 2026
New Features
- Introduced Informer GO
- Introduced Informer Apps
- Introduced Magic Reports
- Added PWA support for Informer GO on Android and iOS
- Added App AI Agents, Automations, public webhooks, server-side route handlers, and per-app workspace databases
- Introduced the AI & Billing page and a Unified Credit Pool
- Introduced new Informer GO Docs help site
- Promoted Toolkits and Integrations to top-level components
- Began converting parts of the client to React
Datasets and queries
- Merge Duplicates gains new Postgres engines, with aggregations and an expand-to-intervals flow step
- Pivot tables keep a custom column order between visits
- Pivot "Tabular with Subtotals" exports include the Overall subtotal rows
- xlsx documents are handled more reliably
- The Dataset vacuum Job detects and cleans up orphaned search indexes
- Inclusive "between" criteria on imported I4 Reports evaluate as inclusive
- Empty-prompt I4 inputs take the I4 default field label and criteria type
- Live Excel API key export works
Jobs
- A query error leaves Job polling running
- Job export attachments are skipped when a Dataset has zero records
- Normal users can delete from the Jobs list
- The cloud sync-libraries Job can be isolated so it does not hold up the Job queue
AI and Assistants
- Amazon Bedrock joins the supported AI providers
- Assistant security is tightened
Authentication and access
- passport-windowsauth rejects invalid logins
- SAML callback URLs are built with
resolveUrl, so they follow the deployment's external URL - Active Directory logins can use the mail attribute as the username
PUT /api/licensesucceeds for non-manager tenants
Administration and platform
- Request Logs show full error stack traces, in a cleaner detail view
- Backups that previously could not be restored now restore
- Integration request handling is hardened
- AngularJS static asset serving is hardened
- The AngularJS sidenav and assorted client UX issues are resolved
API Changes
Routes Renamed
The OAuth client-application API moved out of /api/apps to make room for Informer Apps. Every OAuth-client sub-route moved correspondingly; the OAuth flow endpoints (/api/oauth/access_token, /api/oauth/authorize, /api/oauth/device_*, /api/oauth/scopes) keep the same paths.
| Old Route | New Route | Behavior |
|---|---|---|
/api/apps | /api/oauth-clients | Create and update now also accept PKCE, refresh-token, and SVG-icon options; otherwise unchanged |
/api/apps-list | /api/oauth-clients-list | Unchanged (renamed only) |
/api/app-templates | /api/oauth-client-templates | Unchanged (renamed only) |
/api/apps/{id} | /api/oauth-clients/{id} | Unchanged (renamed only) |
/api/apps/{id}/secrets | /api/oauth-clients/{id}/secrets | Unchanged (renamed only) |
/api/apps/{appId}/secrets/{id} | /api/oauth-clients/{oauthClientId}/secrets/{id} | Unchanged (renamed only) |
/api/apps/{id}/_revoke | /api/oauth-clients/{id}/_revoke | Unchanged (renamed only) |
/api/apps/{id}/icon | /api/oauth-clients/{id}/icon | Unchanged (renamed only) |
Updated Routes
Routes that existed in 2025.2.13 whose request contract changed in 2026.1.0.
| Route | Change |
|---|---|
POST /api/integrations, PUT /api/integrations/{id} | Payload adds mode (per-user/shared), authType (oauth2/apiKey/basic/bearer/none/tokenExchange), apiKey, apiKeyLocation (header/query), apiKeyName, headers, and shared. apiBaseUri is now required on create; name and type are optional on update |
POST /api/assistants, PUT /api/assistants/{id} | The model payload field is replaced by modelId; temperature, seed, and format are removed |
POST /api/billing/cards | Raw card fields (number, expMonth, expYear, cvc, address, …) are replaced by a single token from client-side tokenization |
New Routes
There are many new API routes in 2026.1.0 related to Informer Apps, AI, Toolkits, Integrations, and much more. For the comprehensive list, see the API reference.
Removed Routes
| Method | Route | Replacement / Notes |
|---|---|---|
| POST | /api/_chat | Replaced by /api/models/{id}/_chat |
| POST | /api/assistants/{id}/_chat | Replaced by /api/models/{id}/_chat |
| GET | /api/ai-usage | Replaced by /api/usage |
| GET | /api/billing/account | Replaced by /api/usage |
| PUT | /api/billing/account | Replaced by /api/usage |
| GET | /api/billing/ai/models | Replaced by /api/models |
| POST | /api/billing/_process-payment | Replaced by /api/usage/_purchase |
| POST | /api/billing/_review-order | Replaced by /api/usage/_purchase-preview |
| PUT | /api/billing/ai/providers/{providerId}/endpoint | Replaced by /api/providers/{providerId} |
Known Issues
- App Editor chat and memories persist when a draft is rolled back
- Uploading files to the App Editor is currently broken
- Viewing app logs over websocket can error
- wsToken is unavailable for this version, it will be fixed in an upcoming version
- Apps do not work on deployments configured with a custom apiRoot
- Apps ignore x-forwarded reverse-proxy headers when building URLs
- Shared users may receive a 403 error when printing a shared App or Magic Report to PDF
2025.2.15
July 2026
Fixes and Improvements
- Restored time zone support (
moment().tz()) in Templates and scripts - Fixed Dataset aggregations rendering "NaN" in templated output
- Fixed custom script response parsers missing response and request headers
- Restored Query and Datasource access in custom scripts and pre-request scripts
- Fixed Magic Visuals failing to render with certain chart configurations
2025.2.14
June 2026
Fixes and Improvements
- Resolved a Template and PDF rendering failure
- Security and stability improvements to server-side script execution
Behavioral Changes
| Area | Description |
|---|---|
| Server-side user scripts | Server-side user scripts now run in a fully isolated execution environment. Scripts using the standard built-in libraries (lodash/_, moment, inflect) continue to work unchanged; only scripts that relied on Node or other host globals need updating. |
2025.2.13
May 2026
Fixes and Improvements
- Upgraded Puppeteer to improve PDF accessibility compliance
- Tightened restrictions on TCL/ECL statement usage for enhanced security
- Upgraded lodash for enhanced security
- Token secret rotation improvements for search cluster connections, Salesforce Datasources, and Enrole Datasources
- Resolved an error encountered in certain Dataset filter scenarios
- Fixed an "Access denied" error when running a Job that has no refresh function
- Embedded list pages now apply URL parameters instead of stale saved filters
2025.2.12
April 2026
Fixes and Improvements
- Fixed multi-value date fields failing to normalize correctly when values are undefined vs null
- Fixed incorrect Elasticsearch settings on first boot requiring manual PostgreSQL intervention to correct
- Fixed an admin account management issue
- Fixed Excel exports on Datasets causing a memory leak that could eventually crash the server
- Fixed dashboard visuals not rendering on cold page load
2025.2.11
March 2026
Fixes and Improvements
- Fixed an account lockout bypass
- Fixed column-specific conditional formatting not working while editing Queries
- Fixed Dataset date range filters returning incorrect results in certain time zone configurations
- Fixed adding aggregates to a Summary Table duplicating all previously-selected aggregations
- Fixed 'Send Email to Job Owner' option not appearing in burst emails
- Fixed SAML domain login incorrectly overwriting the user's saved profile time zone
- Fixed Active Directory login failures and Dataset scan connection resets over LDAPS
- Fixed a Job permission enforcement issue
- Fixed Universe scan failing when encountering fields with invalid attributes
- Fixed inability to connect to Universe Ideal flavor databases
- Fixed Job SFTP action resulting in connection reset errors
- Fixed Email Modern Auth (OAuth) BCC not working
- Fixed Template
_exportAPI double-compressing responses - Fixed async Template export tasks not reporting accurate download size or processor errors
- Fixed duplicate system cleanup Jobs appearing in Job list and duplication during tenant copy
- Fixed U2 SELECT Queries with missing foreign keys causing command buffer issues
- Improved Bundle and Deploy workflow for clarity and ease of use
- Improved Log Setting auto-reset user experience
- Improved Elasticsearch cluster connection test reliability during server deployment
- Upgraded PostgreSQL to version 16.13
API Changes
Removed
| Field | Description |
|---|---|
resetLogLevelsAt (Settings) | Removed from GET /api/settings and PUT /api/settings. Log levels now reset automatically on a recurring schedule. Sending the field on PUT is silently ignored. |
New Endpoints
| Endpoint | Description |
|---|---|
POST /api/search-clusters/{id}/_ping | Tests connectivity to a search cluster. Requires root manager superuser. Returns 200 on success, 503 if unreachable, or 409 on version/configuration mismatch. The HAL representation of search clusters now includes an inf:ping link. |
New Response Fields
| Endpoint | Field | Description |
|---|---|---|
POST /api/templates/{id}/_export (async) | errors | Async task result now includes an optional errors array alongside download and downloadUrl. |
Behavioral Changes
| Area | Description |
|---|---|
| Job Query access enforcement | When a Job refreshes a Query-backed Dataset, the server now verifies the Job owner still has read access. Jobs where the owner has lost access will fail with 403 Forbidden. |
| Case-insensitive login | POST /api/login now performs a case-insensitive username match, fixing login and lockout behavior for mixed-case usernames. |
| System job IDs normalized | Built-in system Jobs now use fixed deterministic UUIDs. External tooling referencing system Jobs by UUID should re-query after upgrade. |
2025.2.10
March 2026
Fixes and Improvements
- Fixed Elasticsearch client socket exhaustion issue affecting 2025.2.9 deployments
- Enabled search cluster management for non-multi-tenant environments
2025.2.9
February 2026
New Features
- Enabled tenant-specific Elasticsearch configurations for improved isolation and performance
- Added burst file upload support for SFTP, OneDrive, and Library Job actions
- Added configurable log rotation support for Informer running on Windows
- Added configuration option to limit maximum concurrent Jobs per server
- Migrated Ellucian Experience authentication method to core product
- Added the concept of a JobWorker and a UI to manage worker threads
Fixes and Improvements
- Promoted jBase Datasource to general availability by removing beta designation
- Promoted Magic Visual to general availability for AI users by removing beta designation
- Upgraded pdfjs-dist to latest version
- Fixed issue where build number and date would change on the admin about page
- Added U2 field scan options to apply default settings to newly scanned fields
- Added automatic team synchronization for SAML users based on role
- Updated the version of the Snowflake JDBC driver
- Improved Magic Visual user interface and workflow
- Enhanced tenant deployment process for improved reliability
- New System Job to make log settings expire after a short time
- Added configuration option to disable distributed AngularJS client host pages
- Fixed server error when copying large Datasets with indexed data enabled
- Added option to include Template metadata (name, description, default inputs) in Deploy to Tenant action
- Removed the concept of 'priority' from Jobs (model, drivers, etc.)
- Added date formatting for Excel input parameters
- Changed PDF browser document title display to show name rather than ID
- Change search cluster connection editor to have Basic and Advanced tabs
- Updated orphan index management UI to support search clusters
- Updated Refactor Batch Upload Job action to leverage Job action attachments
- Fixed batch upload compatibility with Templates
- Added AI Assistant and Library management permissions for Data Wizard role
- Fixed Scalar Join field name preservation when merging bundles into existing empty Datasource
- Fixed PDF Template download failures caused by self-referential requests
- Fixed application freeze when creating snapshots before initial Dataset refresh
- Fixed Job data filter chips incorrectly reverting to "Match All"
- Fixed change owner tab visibility to properly reflect user permissions
- Improved date sorting logic in pivot tables for more intuitive results
- Fixed user profile page to display all values for multi-value user-defined fields
- Fixed merge duplicates dropdown requiring double-click to display
- Fixed Add Visuals button appearing disabled on smaller browser windows despite being functional
- Fixed search functionality in distinct values filter for numeric fields
- Fixed integration fields not populating on information page
- Removed limit of adding Datasets to Jobs
- Restored distinct icons for date_tz and timestamp data types
- Fixed error when clearing pivot fields from trend charts
- Fixed Dataset format column width settings not being applied
- Fixed AI Assistants unable to add visuals to Datasets
- Fixed Job schedule time radio button display not reflecting selected value
- Enhanced AI Assistants to display knowledge source attributions in responses
- Fixed misleading version number display when importing bundles from 2025.2.x
- Fixed exported reports to use user time zone instead of UTC for dates
- Fixed Template API rendering to respect input locks and default values
- Added encryption for password-like fields in JDBC Datasource additional properties
- Fixed Dataset cell drill-down displaying incorrect values on double-click
- Fixed Job history to update in after each task completes
- Fixed SMTP modern authentication requiring multiple attempts to save
- Fixed bundle restore ignoring disabled Job setting
- Fixed Job list displaying incorrect run times
- Fixed inability to remove codes from Datasource fields after assignment
- Improved Job history default sort order for better usability
- Fixed license update failures for expired tenants using Office 365 mail authentication
- Enforce Informer users to use ElasticSearch version 8+
- Fixed burst email action being removed with error when deleting associated data from Job
- Fixed integration connection authentication failures in embedded mode
- Fixed invalid options appearing in default input dialogs for required fields
- Improved PDF.js resource cleanup to prevent memory leaks
- Fixed Upload to Drive Job action failures when using delegated or shared credentials
- Fixed default response parser setting not persisting on web Datasources
- Fixed daily Job execution times being incorrect during daylight saving time transitions
- Fixed requestId field not populating in query_log table
- Fixed missing "no rows to show" message for ad hoc reports returning empty results in Jobs
- Fixed 404 errors when accessing nested remote links in field chooser
- Fixed a race condition occurring during Dataset indexing where streaming could get stuck
- Fixed Template rendering producing invalid download URLs in load-balanced environments
- Fixed overly strict validation preventing sharing rules import when only one principal type is present
- Improved merge duplicates flow step handling undefined values
- Fixed burst email failures when using comma-delimited multiple recipient addresses
- Fixed Job history displaying success status for Jobs with warnings
- Fixed bundle export to correctly filter Datasets by tenant, preventing data from other tenants from overwriting the exported data file
- Fixed batch uploads Job action losing user settings when toggling between options
- Removed extraneous blank chart title from Magic Visual downloads
- Fixed orphan-indices API endpoint errors when OpenSearch clusters are unavailable
- Fixed Job worker configuration not displaying correct max active Jobs value after reopening
- Fixed column chooser revert option not restoring user-cleared default values
- Fixed resetLogLevelsAt validation being cached at server startup
- Fixed Member Plus role preventing report/dashboard ownership transfer to team and blocking team-owned report edits
- Fixed serialization errors in successful tasks
- Fixed Batch Upload filenames to be dynamic by default
- Resolved missing reserved system role 'own_index' on AWS OpenSearch deployments
- Fixed issue where sending burst emails with XLSX attachments consumed all available node memory
- Corrected duplicate key violations when deploying bundles to tenant environments
- Improved date formatting consistency and flexibility for spreadsheet data sources
- Fixed incorrect tenant user selection on bundle routes during local domain authentication
- Resolved PDF export failures when 'show group summary pages at the beginning' option is enabled
API Changes
New Endpoints
| Endpoint | Description |
|---|---|
GET /api/tasks/{id} | Poll async task status and results |
GET /api/search-clusters | List search clusters |
GET /api/search-clusters/{id} | Get search cluster |
POST /api/search-clusters | Create search cluster |
PUT /api/search-clusters/{id} | Update search cluster |
DELETE /api/search-clusters/{id} | Delete search cluster |
POST /api/search-clusters/{id}/_rebuild-security | Rebuild search cluster security |
PUT /api/tenants/{id}/search-cluster | Assign search cluster to tenant |
GET /api/job-workers | List Job worker processes |
GET /api/job-workers/{id} | Get Job worker details |
GET /api/job-workers/my | Get current worker status |
POST /api/jobs/{id}/actions/{actionId}/_preview | Preview batch upload action |
GET /api/w/{id}.{ext?} | Export a visual |
New Parameters
| Endpoint | Parameter | Description |
|---|---|---|
POST /api/templates/{id}/_export | ?async=true | Returns { taskId, status } instead of blocking. Poll GET /api/tasks/{id} for result. |
2025.2.8
December 2025
Fixes and Improvements
- Improved Stream Error Handling and Thread Stability (addresses errors/crashes related to Microsoft SQL Connections, Linked Mapping Descriptors, and Dataset Refreshes)
- Resolved an issue where Filters and Input Value Keywords were not displaying correctly in Letterhead components
- Isolation of metadata across all file-based Datasets
- Ability to customize session auth options using config.json
- Increased security for multiple login attempt prevention
- The application now handles congested Elasticsearch instances more gracefully
- Fixed issue where long U2 Scans could leave a session unusable
2025.2.7
November 2025
Fixes and Improvements
- Updated Java connector to improve memory performance
2025.2.6
October 2025
Fixes and Improvements
- Fixed issue where logged-in sessions were incorrectly terminated
- Email addresses now verified against RFC5322 standards before sending
- Resolved failures in Jobs with multiple email addresses
- New configuration setting to disable email verification
- Enforces session idle expiration by deleting the session upon next attempt
Known Issues
- Jobs failing health checks still display as "running" status
- Java connector can cause out of memory errors (introduced in 2025.2.0; fix planned for 2025.2.7)
2025.2.5
October 2025
Fixes and Improvements
- Removed License Server Connection message
- Proper handling of Elasticsearch errors during Dataset refresh to prevent downstream errors
- Proper handling of Large PDF Export in Jobs
- Google Drive Library Shared Drive Option functionality now works properly and shows all Shared Drives
- Fixed Elastic APM integration with Informer
- Proper handling of incorrectly configured burst action to prevent Jobs from firing repeatedly
- Proper handling of merge-dups 'remaining Field' with 'unique values' selection mode to prevent errors
- Addressed Job Issues for improved reliability
- Proper handling of OAuth Callback with Tenant Prefix in URL path to prevent 404 errors
- Added target directory path restrictions for filesystem Job action
Known Issues
- Jobs that have failed a health check are still showing as running
2025.2.4
August 2025
- Invalid and edge cases using Merge Duplicates Flow Step is now handled gracefully
2025.2.3
August 2025
Fixes and Improvements
- Proper Handling of Magic Visual saving to RAG if nothing changed.
- Added more instruction in Calculated Fields CoPilot.
- Added more instruction in Powerscript CoPilot.
- Removed "Suggest a prompt" from Dispatcher AI Assistant.
- Fixed minor UI issues for AI Assistants
- Addressed issue with Google Drive Library shared drive dropdown.
- Proper handling of various data types for Merge Duplicates Flow Step
- Fixed Live Excel to honor API token.
2025.2.2
August 2025
Fixes and Improvements
- Added tracking fields on Query to support Informer 4 schedule import.
- Added 'auto sort' option to Merge Duplicates for Elasticsearch streaming and sorting.
- Added option to format dates for Excel in any text-based file export.
- Added 'send email to job owner' and attachments options to email/burst Job actions.
- Upgraded jQuery UI.
- Updated license expiry grace period so only Super Users receive banner notifications.
- Fixed concurrent Job Query logic.
- Fixed 404 Not Found error when editing the name of a letterhead.
- Addressed AI usage tracker not displaying July.
- Proper handling of Dataset refresh when disk space exceeds 90% to prevent crashes.
- Fixed Basic Auth SMTP not honoring port changes.
- Addressed issue where Informer would crash on some occasions when exporting to Excel.
- Fixed issue where Format Dates for Excel export option was checked by default.
- Updated Axios
API Changes
/api/health- incorporated the knowledge of new temporary Elasticsearch indexes, added matching url query param to health route.
2025.2.1
August 2025
Fixes and Improvements
- Addressed issue where logging into an AD Domain would result in an ECONNRESET for some Windows platforms.
- Addressed issue where certain Templates take long to load.
2025.2.0
July 2025
New Features
- Modernized Server Architecture.
- Added Google Docs Library Driver.
- Job Action Upload to Drive (Google, OneDrive, Libraries)
- Template Input Preset - Member+ can now pre-configure inputs to a Template.
Fixes and Improvements
- Introduced the ability to have Thumbs Up/Down on the quality of response from AI.
- Added AI instructions to LM for future integration with Informer.
- Upgraded Froala
- Upgraded Highcharts
- Proper handling of Github Library Flow on multitenant systems using the root context method.
- Resolved issue where clicking into edit on an Assistant showed "404 not found" and a broken editor.
- Proper handling of Datasource deletion from the UI when its driver is missing.
- Addressed inability to edit an Assistant if a draft owned by another user already exists.
- Improved large PDF handling.
- Addressed issue where anyone could impersonate anyone in LM.
- Resolved O365 OAuth Email configs getting stuck in an authorization loop.
- Fixed non-trend multi-series drilldown issue.
- Addressed column alignment formatting options not working.
- Added permissions, license/access checks to saved Visual CRUD API routes.
- Fixed Gmail Modern Auth sporadic "invalid_token" error.
- Proper handling of Dispatcher Assistant instructions and suggestion button.
- Fixed Job Running Time column sorting issue.
- Ensured Assistants do not include library files/embeddings.
- Addressed inability to ask questions about library files from within Assistant editor.
- Fixed missing Email Test Connection.
- Resolved Sync Libraries (and maybe Index Files) Jobs hogging the Job queue.
- Fixed Dataset viewer breaking when Snapshot and current results are selected.
- Added prompt when canceling a Template to ask "do you want to keep or discard the draft?"
- Changed Universe i-desc scanning to exclude temp EVAL#####.# dicts by pattern matching in the Query.
- Fixed Hidden Fields not being grayed out when revealed.
- Addressed multiple failed entries in the Job History with N/A duration and current start time.
- Fixed Jobs getting stuck in running status if they have an editingId.
- Resolved error when exporting a saved Visual on a Dataset to CSV.
- Fixed issue where some previously created Assistants could not be edited.
- Added ability to edit Library description without also editing its name.
- Improved error message detail for incorrect file upload to Assistant.
- Included proper error message when attempting to directly access a chat page while AI is disabled.
- Resolved logging out via chat page leading to 400 instead of chat login page.
- Added bulk action for Libraries.
- Fixed broken/missing export options for table visuals.
- Corrected Job schedule showing wrong minutes when set for Weekly interval.
- Addressed Templates being accessible via the API, regardless of sharing.
- Fixed inability to drill down on a boolean column in pivots.
- Addressed column type not displaying when editing a Field in Datasource for generic-jdbc dbs.
- Corrected the display of "When" for the Run Time on Job.
- Fixed Multi-factor Authentication (MFA) showing None when enabled.
- Proper handling of Jobs with None internal
- Addressed issue where Github Library Flow throws a 404 on Multitenant systems using the root context method
- Upgraded various minor dependencies
API Changes
Route Renamed
/api/has-custom-image->/api/theming-image(same functionality, new name)
Parameter Changes
New query parameters:
/api/integrations: AddedsupportsUploadboolean parameter/api/libraries/list: Added filtering parameters:type(array) - Filter by library typeaccess(enum: "read-only", "read-write") - Filter by access level
Parameter format changes:
- Date format: Several month parameters changed from "date" format to "date-time" format
/api/theming-image:roleparameter is now REQUIRED with enum values["FAVICON", "MASTHEAD"]
Request Body Changes
/api/users/{username}/password-reset: Now accepts request body (previously had no body parameter)/api/apps/{id}/icon: Now accepts request body for PUT operations
Enhanced Functionality
- Library filtering: More granular control over library listings with type and access filters
- Integration uploads: New support for upload-capable integrations
Migration Notes
- Update any calls to
/api/has-custom-imageto use/api/theming-image - Verify date parameter formats if using month-based filtering
Known Issues
- Dataset format column width sometimes does not apply