Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
date-time picker fixed, when the selected date was cleared, it ended in an invalid state.
context.service functions (loadState, stateSet, …) are available in the Flow design phase (not only during the flow runtime), so they can be used in the auxiliary components called from component.json (using the source
“static calls”).
If an OAuth2 refreshAccessToken function returns 400, 401, or 403, the token is marked as invalid (and no more attempts to refresh it will be executed).
Improved logs of Axios exceptions (size reduced).
The security of the component authentication pages (/auth-service and /auth-pre) has been improved by changing how the configuration was passed onto the pages. Previously, configuration was passed via URL query parameters. Newly, this configuration is rendered directly by the backend (Appmixer engine) making it impossible for external malicious injections.
Handling PRECONDITION_FAILED - unknown delivery tag error. When the RabbitMQ was restarted and some messages were being processed, their acknowledgment failed with the PRECONDITION_FAILED exception, which resulted in a broken RabbitMQ connection.
Improved sandbox around the JavaScript modifier and the context.evalJavaScript
function.
MongoDB driver was updated to the newest version to support MongoDB up to version 7.0.
Fix for token refresh for the pwd authentication type https://docs.appmixer.com/appmixer/component-definition/authentication#password The username/password can be exchanged for a token that can have an expiration date. This update fixes the refresh of the token.
New redirectUri option for the Microsoft OneDrive module. If defined, the OneDrivePicker (used by UploadFile and ExportFile connectors) will use it instead of the default redirectUri (which is https://[your-appmixer-api-url] /plugins/appmixer/microsoft/onedrive/picker).
context.loadOutputSchemaProperties function used by the Each component fixed. Did not work properly if a component with dynamic output port options was connected to the Each.
If a module has .npmrc file, it is now used for the automatic rebuild that is triggered if Appmixer is started with a newer version of Node.
UI.Wizard: The account is duplicated resulting in freezing UI, fixed.
Backoffice Insights range selector fixed (includes the last month now).
New redirectUri option for the Microsoft OneDrive module. If defined, the OneDrivePicker (used by UploadFile and ExportFile connectors) will use it instead of the default redirectUri (which is https://[your-appmixer-api-url] /plugins/appmixer/microsoft/onedrive/picker).
context.loadOutputSchemaProperties function used by the Each component fixed. Did not work properly if a component with dynamic output port options was connected to the Each.
If a module has .npmrc file, it is now used for the automatic rebuild that is triggered if Appmixer is started with a newer version of Node.
MongoDB driver was updated to the newest version to support MongoDB up to version 7.0.
Fix for token refresh for the pwd authentication type https://docs.appmixer.com/appmixer/component-definition/authentication#password The username/password can be exchanged for a token that can have an expiration date. This update fixes the refresh of the token.
New optional query parameter for webhooks API - enqueueOnly. If true then the webhook will be enqueued and 202 returned immediately to the caller.
Possibility to override redirect/callbackUrl per service.
Fix - updating a module through the API did not update shared service level files.
Fix - inspector groups were ignored in a dynamically generated inspector (through source call in component.json).
New context function context.evalJavaScript() which allows the connector to execute untrusted code. Example https://docs.appmixer.com/appmixer/v/5.2/component-definition/behaviour#context.evaljavascript-code-jsondata
Fix for the ADD USER RULES FOR INSTALLED CONNECTORS button in the Backoffice, it added an extra dot in the rule(s).
Backoffice Insights page - To Date fixed to include the last day of the month.
date-time picker fixed, when the selected date was cleared, it ended in an invalid state.
context.service functions (loadState, stateSet, …) are available in the Flow design phase (not only during the flow runtime), so they can be used in the auxiliary components called from component.json (using the source
“static calls”).
If an OAuth2 refreshAccessToken function returns 400, 401, or 403, the token is marked as invalid (and no more attempts to refresh it will be executed).
Improved logs of Axios exceptions (size reduced).
The security of the component authentication pages (/auth-service and /auth-pre) have been improved by changing how the configuration was passed onto the pages. Previously, configuration was passed via URL query parameters. Newly, this configuration is rendered directly by the backend (Appmixer engine) making it impossible for external malicious injections.
Explore the new features in version 5.0.0 that make automation easier once again for your customers and internal teams.
The Wizard configuration now offers enhanced flexibility, allowing the inclusion of the following new sections (as opposed to just inspector fields which was the case in the previous versions of Appmixer):
Account: allows you to add an account field manually. Previously, account fields were automatically added which made it easier to configure wizards but did not allow you to: add different account sections for different components (imagine you have a flow with 2 GDrive components to upload files. Previously, you could only create a wizard that uploads to one GDrive account. Newly, you can add 2 account sections allowing the end-user to upload files to two different GDrive accounts.
Inspector Field: same as before, i.e. adding a field that represents a configuration field in the Inspector.
Inspector Fieldset: allows you to add aLL fields of a component automatically. In other words, you don’t need to add fields manually if you want the end-user to configure the entire component. This also applies to dynamic fields that you previously could not add to the Wizard (e.g. fields for adding all column values of the google.spreadsheets.CreateRow component - which are loaded dynamically based on the sheet/worksheet selected by the user and therefore are not known at design time).
Custom Field: allows you to add a completely custom field of any type (Text, Textarea, Number, Toggle, Color, Date-time, Select, Multiselect, Select button group) to collect your own custom data from the end-user:
You name your field in the “JSON path” input and then refer to it by adding the “Custom Fields” variable in your inspector fields:
And applying the “JSON path” modifier to it to select the field that you defined in the Wizard builder:
Text: add header/subheader or a paragraph of custom text to your Wizard. This is great to give additional textual information to your end-users.
Image: add any custom image to your wizards. This is great to give your end-users additional information about the integration, usually in the form of icons or infographics.
Connecting new accounts uses a minimal scope. For example, the appmixer.google.gmail module has several components. The NewEmail component requires Google authentication scopes:
"https://mail.google.com/",
And the SendEmail component requires scopes:
"https://mail.google.com/",
"https://www.googleapis.com/auth/gmail.compose",
In the previous version of Appmixer, when any Google Gmail component was authenticated, the system joined all the Google Gmail scopes together. That means that even if the user used only NewEmail and not the SendEmail component, the system asked for permission to send emails. Newly, only the scope for the component that is being authenticated will be used. This allows the user to give Appmixer only the permissions it needs to execute the particular flow/integration.
Note that if the user wants to use multiple components from the same module with different scopes, they will have to authenticate them all, and the system will create multiple tokens with the appropriate scopes.
Custom "Connect account" button in Inspector/Wizard: allows you to customize the button to authenticate to components. This is especially useful to make sure that connectors follow the developer guidelines of the vendors of the 3rd party apps, therefore making it easier for your own apps to pass the vendor’s verification procedures.
New Object Modifiers:
The JSON Path modifier now supports all JSON Path expressions. (https://github.com/dchester/jsonpath)
The Share dialog text changed:
Error message boxes now contain more information about the reason of the errors:
Authentication popups can be fully customized.
Upgraded to Node 18 (LTS). This also means that all the components need to be compatible with Node 18.
New function context.replaceFileStream(fileId, content). https://docs.appmixer.com/appmixer/v/5.0/component-definition/behaviour#async-context.replacefilestream-fileid-stream
New System Configuration options (https://docs.appmixer.com/appmixer/v/5.0/appmixer-backoffice/system-configuration):
COMPONENT_RECEIVE_TIMEOUT (defaults to 23 minutes). The receive() function should return within that timeout. Otherwise, an error will be thrown and the input message will be retried.
COMPONENT_FACTORY_TIMEOUT (defaults to 5 minutes). If the engine fails to create a component instance within this time, an error will be thrown. The input message will be retried.
BROKER_MESSAGE_ACK_TIMEOUT
Textarea input type added to the connector authentication popup (Used in MongoDB connector, for example).
Output port schema options. Newly, the component output options can be defined by using JSON schema. This is especially useful if your components return arrays and you want your end-users to be able to easily work with the properties of the array item objects. Before, there was no easy way for end-users to know what properties that can point to (e.g. by using the JSON Path modifier) inside array items. With the JSON schema defined for array items, the user can newly easily select the array item properties either in the variables picker of components following the “Each” utility (i.e. when looping over the array items) or in the modifiers (Map, JSON Path, …).
Error log from a component is by default limited to 51200 bytes. This can be newly controlled by the LOG_COMPONENT_ERROR_MAX_BYTES system configuration option.
GET /auth/flow/{flowId} response object structure has changed. More information in https://docs.appmixer.com/appmixer/v/5.0/migration-from-4.5#get-auth-flow-flowid
The GET /flows and GET /flows/count pattern option searches through flowId as well now:
More in https://docs.appmixer.com/appmixer/v/5.0/api/flows
Modules were renamed Connectors.
New Actions for Flows. Logs link to the Insights page in the Appmixer Studio with the flow preselected making it possible for admin users to explore the flow logs and therefore provide better customer support for end-users. Metrics will show the number of messages this flow generated.
Upgraded to Node 18
context.setTimeout() supported
context.lock() supported
Please visit https://docs.appmixer.com for full documentation.
Appmixer is now fully compatible with AWS managed services - tested with OpenSearch 2.7, DocumentDB 4.0.0, Amazon MQ 3.8.34, Amazon ElastiCache 6.2.6 and logstash 7.6.12 with OpenSearch plugin
Optional token (API keys, OAuth tokens, …) encryption (self-managed Appmixer only).
User files (files created in flows, or through the /files API) can be stored in MinIO/S3 storage (self-managed Appmixer only).
Configurable public files route.
Added DB index to fs.files.metadata.fileType.
APPMIXER_API_URL configuration support suffix. In the previous version, it was not possible to set the URL to https://acme.com/suffix, the suffix was removed.
OneDrive and GDrive picker fixes (did not work properly, when connected account was changed).
New context.job.lock() function in the component plugin contex (used in the latest Task module 1.0.2, instead of context.lock()).
A memory issue is fixed. In some cases, the memory usage was going up and the engine had to be restarted regularly. This was caused by an upgrade (in Appmixer 5) of one of the libraries (Ajv) and the way that the library caches JSON schemas.
Storage.OnItem[Added|Removed|Updated] connectors had a critical bug preventing normal operation that was fixed.
A little change in the way the engine looks for a compatible connector version. This only applies to connectors located in the file system (not published/updated through the API/CLI/Backoffice). Before this change, when upgrading to a newer version of Appmixer (to a newer Docker image with connectors), you could have seen an error: No compatible version of [component type] found for requested version [version]. This happened if that newer Docker image contained a newer version of a connector that was not stored in DB (not published/updated through the API/CLI/Backoffice).
Fix for Googlepicker. It did not open if it was used in an Integration Wizard (bug introduced in 5.1.1).
Modifiers are now applied in static calls - source (in the flow design phase). An example:
Consider a component with a dynamic input port inspector. The inspector definition is returned by calling the SourceWithModifiers component and sending it a few parameters. The entityType parameter is taken from properties and passed to the input in port of the source component. Based on the value of the user provided property entityType, the SourceWithModifiers component returns different input fields of the inspector. Now assume that the entityType value is defined with a variable and even a modifier can be applied to it.
In this example, the entityType is taken from the flow’s custom fields (and a modifier JSONPath is applied to it). In the previous versions of Appmixer the value propagated to the source component (SourceWithModifiers in this case) was not resolved, i.e. the potential variables and modifiers applied to the propagated parameter where not correctly evaluated when they reached the source component (SourceWithModifiers).
Fix for manifest markers in the component.json (https://docs.appmixer.com/appmixer/component-definition/manifest/marker).
Fix for checking the component’s output port message size. The output port message size is limited to 15MB, in certain cases, an input message for the component and its size was incorrectly covered in the limit, too.
Fixed bug in the context.loadOutputSchemaProperties() introduced in 5.1.1
Fixed a bug in clearing node cache before requiring component’s codes into memory.
Fix for UI/SDK code freeze in case of a large number of links/connectors in certain scenarios.
PUT /flows/{flowId} API endpoint was optimized and significantly improved performance (especially with large flows) by avoiding variables scopes check with each update.
Node version updated to 18.16.1 and the OS switched from Linux Alpine to Debian which resolved the DNS issues for some Salesforce sandbox URLs.
Fix for GET /files?filter=userId:XYZ and GET /files/count?filter=userId:XYZ. These endpoints did not return correct results if the userId was specified in the filter and the user was not admin.
Filepicker input type shows only files created by the signed-in user. Before this, the admin users saw all the files there, but when a file that does not belong to the owner (admin) is used in a flow, the component working with that file returns an error.
Two fixes for the new Output Port JSON Scheme definition introduced in 5.0.0.
Title not showing in the Inspector’s variables picker for attributes of nested objects.
Variables with iterable ancestors showing in Inspector’s variables picker.
Fix for Wizard’s input field - it was possible to get into an invalid state.
Authentication popup handling improved.
When a service (appmixer:microsoft for example) contained two plugins, it was possible that while loading such a plugin under a newer Node version (node_modules being re-installed), the plugin files could get corrupted.
Inspector Field max width overflow.
Possibility to secure the create user (POST /user) API endpoint. This helps prevent external API calls (possibly malicious) from creating users without any authentication. Newly, a user scope can be defined using the API_USER_CREATE_SCOPE system variable which will be required when calling the POST /user endpoint. Typically, an “admin” scope is set so that only admin users can create new user accounts. See https://docs.appmixer.com/appmixer/tutorials/appmixer-virtual-users for more information.
New connector context function context.loadOutputSchemaProperties(), which is now used by the Each connector (Controls module version 1.4.4). This fixes a few issues:
When Each connector was used in a loop in the flow, it could cause a crash of an Appmixer engine.
Add variable discovery for nested props:
Given the following output schema, when applying Each on "main" it does show the properties of the items in the next step (the next connected connector) in the flow, but applying Each on "sub.subitems" does not display the properties nor Index/Value, as if it doesn't recognize it as an array at all.
Fixed a bug where the Appmixer SDK was slow with a large connector definition.
Fixed a regression in the DELETE /files API endpoint (bug introduced in 5.1.0).
Fixed a problem with a wrong connector token that was cached. If connector A used another auxiliary connector B in the component.json (typically connector A needs a list of dynamic items to be displayed in the UI and it uses a different connector to populate such a list) and the scope of the tokens for connector A and B - defined in the component.json - was different, then the engine could store the token for B in cache for the connector A. When such a flow was started, it resulted in an error, the cached token for B did not work when the connector A was called with a new message.
Fixed a bug in the Integration Wizard, creating an account did not work if the authentication file (auth.js) was on the module ([vendor]/[service]/[module]/auth.js) level and not the service ([vendor]/[service]/auth.js) level.
Fix for GET /variables under certain conditions resulting in - 500 - Maximum call stack size exceeded.
Wizard variables of descendants not reloaded when account changes:
Wizard Fieldset inputs did not work with variables.
Validation in Integrations Wizard did not work properly when using variables.