SKOOR Webservice Changelog

9.0.1

  • Enforces user role checks on all endpoints. Notable changes that may be breaking:
    • Many data-modifying endpoints are now restricted to administrators:
      • POST /files/{filename}
      • POST /styles/{filename}
      • POST /translations/{language}
      • POST /scripts
      • POST /dataSources
      • Many more, see API docs
    • Many data-modifying endpoints are now restricted to editors:
      • POST /dashboards
      • PUT /dashboards/{id}
      • POST /devices
      • POST /devices/{id}
      • Many more, see API docs
    • Only a small set of endpoints is accessible without authentication.
    • Since the POST /translations/{language} endpoint is now limited to administrators while editors still need to translate dashboards, dashboard translations are now stored within dashboard objects rather than in the global translations store.
  • Uses strict rules on what a user is allowed to change about themselves and other users.
    • Only administrators are now permitted to change usernames. This resolves a username enumeration vulnerability that previously allowed users to guess other users’ usernames.
    • Most user settings are now restricted to administrators. Non-administrator users can only update their fullname, email, phone, startDashboardId, language, timeZone, and visuallyImpaired settings, as well as change their password and enable or disable MFA (unless it is enforced by an administrator).
    • Only administrators can modify settings for shared users.
    • User type can't be changed anymore from or to LDAP_MANAGED.
    • LDAP_MANAGED users can only update their startDashboardId, language, timeZone, and visuallyImpaired settings.
  • Limits POST /files/{filename} to the following mime types: image/avif, image/bmp, image/gif, image/heic, image/heif, image/jpeg, image/jp2, image/jpx, image/jxl, image/png, image/svg+xml, image/tiff, image/vnd.microsoft.icon, image/webp, audio/3 gpp, audio/3 gpp2, audio/aac, audio/flac, audio/midi, audio/mp4, audio/mpeg, audio/ogg, audio/opus, audio/wav, audio/webm, audio/x-aiff, audio/x-m4a, audio/x-ms-wma, video/3 gpp, video/3 gpp2, video/mp2t, video/mp4, video/mpeg, video/ogg, video/quicktime, video/webm, video/x-flv, video/x-m4v, video/x-matroska, video/x-ms-asf, video/x-msvideo, application/ttml+xml, application/x-subrip, text/vtt, text/plain, text/csv, text/markdown, application/json, application/xml, text/xml, application/yaml, text/yaml, application/pdf, application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document, application/vnd.ms-excel, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-powerpoint, application/vnd.openxmlformats-officedocument.presentationml.presentation, application/vnd.oasis.opendocument.text, application/vnd.oasis.opendocument.spreadsheet, application/vnd.oasis.opendocument.presentation, application/rtf, application/epub+zip, application/vnd.apple.pages, application/vnd.apple.numbers, application/vnd.apple.keynote
  • Limits PUT /styles/{filename} to the following mime types: text/css, text/plain
  • Limits POST /scripts/{script}/run to the following mime types: text/plain,text/csv, text/tab-separated-values, text/tsv, text/markdown, text/vtt, application/json, application/x-ndjson, application/jsonl, application/xml, text/xml, application/yaml, text/yaml, application/x-yaml, application/sql, text/sql, application/pdf, application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document, application/vnd.ms-excel, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-powerpoint, application/vnd.openxmlformats-officedocument.presentationml.presentation, application/vnd.oasis.opendocument.text, application/vnd.oasis.opendocument.spreadsheet, application/vnd.oasis.opendocument.presentation, application/rtf, application/epub+zip, application/parquet, application/x-parquet, application/avro, application/x-avro, application/vnd.apache.arrow.file, application/vnd.apache.arrow.stream, application/orc, application/x-orc, application/zip, application/x-zip-compressed, application/gzip, application/x-gzip, application/x-bzip2, application/x-xz, application/zstd, application/x-zstd, application/x-tar, application/x-7z-compressed

9.0.0

  • Adds number of source rows in .../columns/{column}/values and .../{id}/distinctValues endpoints. This can be used to build historgrams.
  • Adds new EndPoints for batch updating:
    • Users in a UserGroup: /userGroups/{id}/users
    • UserGroups of a User: /userGroups/users/{userId}
  • Introduces WebserviceUser/UserGroup to wrap ErangerUsers/UserGroup
  • Adds support to Password Policy
  • Adds support to MFA (Multi-Factor Authentication)
  • Introduces new UserRole Data_Editor
    • Can edit data from DataSources as long as user is scoped.
    • Can Access/Create/Edit DataQueries
    • Can View/Edit(RunConfigs/ScheduleConfigs)/Run Scripts
  • Clears passwords in script's envVariables and runConfigs.
  • Enables setting 0 Timeout for Scripts (No Timeout) and customize it in Run Configurations.
  • Import/Export
    • Improves import/export of dashboards with scripts by trying to match scripts in target systems by names.

8.1.31

  • Fixes bug that sometimes prevents the data query engine to find materialized tables.

8.1.30

  • Fixes bug that sometimes causes materialized data queries not to materialize properly.

8.1.29

  • Correctly handle filters on distinct count columns.

8.1.28

  • Enables automatic dashboard translations for all customers by providing a common DeepL API key.

8.1.27

  • Fixes bug that sometimes causes dashboards with URL name not to be saved properly.

8.1.26

  • Allows to provide header and footer to be rendered into PDF reports.

8.1.25

  • Adding SKOOR_USER_USERGROUP_IDS and SKOOR_USER_USERGROUP_NAMES to the environment variables in scripts.
  • Fixes race condition that causes data queries to be stuck in refreshing state.
  • Fixes bug that breaks data queries mixing templating and params.

8.1.24

  • Disables caching in CashPilot data source.

8.1.23

  • Updates dependency to fix Swagger UI.

8.1.22

  • Fixes bug that sometimes breaks nested data queries that use scoped tables.

8.1.21

  • Further enhances data query parsing to get references.

8.1.20

  • Mitigates other Exceptions when parsing data queries.

8.1.19

  • Mitigates some IndexOutOfBoundsExceptions when parsing data queries.

8.1.18

  • Does not print error if data query is empty.

8.1.17

  • Fixes bug that breaks dashboard import when there are dashboards with URL names.

8.1.16

  • Returns proper status code 401 if basic auth fails.
  • Properly handles Magellan organisations when materializing data queries accessing a StableNet Data Source.
  • In earlier versions, Data Queries based on a StableNet Data Source were always refreshed dynamically. This behavior has now been modified so that only queries relying on StableNet foreign tables are dynamically refreshed.
  • Fixes bug that sometimes causes missing data query references used for scopes or sub data queries.
  • Updates vulnerable dependencies.

8.1.15

  • Implements some required changes to support new features of StableNet FDW.
  • Data Queries
    • Provides existing data query as context when doing Text2SQL in data query editor.
    • Allows to generate example data queries for a given data source using Google vertex AI.
  • Scripts
    • Implements code generator endpoint
  • Adds new EndPoints to retrieve objects' tree
    • /root/tree
    • /{parentType}/{parentId}/tree
  • Clears the cached files and styles on the hard-drive upon restarting the webservice.

8.1.14

  • Allowed CORS origins can now be configured using the cors.allowed.origins property(comma-separated list). When web applications from other origins (e.g. StableNet Portal) need to send asynchronous requests to the SKOOR Webservice, their origin URLs must be added; otherwise, those applications will no longer function.

8.1.13

  • Fixes bug that causes database connection to hang.

8.1.12

  • Fixes searchPath Endpoints by trimming out the spaces in path segments.
  • Adjusts CashPilot data source for Multi User data sync.
  • Optimizes data query materialization
  • Filters out some scanner noise from log.
  • Allows to explain data queries without analyze.
  • Fixes data query table reference detection if table name is directly followed by a ). This sometimes prevented scopes to be applied properly.

8.1.12

  • Fixes searchPath Endpoints by trimming out the spaces in path segments.
  • Adjusts CashPilot data source for Multi User data sync.

8.1.11

  • Does not enable nor start service upon package update on standby systems.
  • Fixes a bug that breaks translation endpoint when providing an empty text array in payload.
  • Adds case insensitivity support to the searchPath Endpoints

8.1.10

  • Improves Script Export/Import
    • Adds script_metadata.json to the export.
    • Allows overwriting existing script with overwrite flag.
    • Allows importing metadata from script_metadata.json if it exists.
  • Dashboards
    • Prevents duplicate URL-Names.
  • Google Vertex AI (used for Script Copilot and Data Query Text to SQL functionality)
  • Makes python scripts run unbuffered (Outputs are shown directly in ConsoleOutput).

8.1.9

  • Changes owner of some config files to eranger.
  • Implements Basic auth for API calls.
  • Introduces two new endpoint in the ObjectSearchController
    • /root/searchPath to search for SKOOR-Objects using their path starting from root.
    • /{parentType}/{parentId}/searchPath to search for SKOOR-Objects using their path from a specific parent.
  • Reduces the number of concurrently refreshing materialized data queries to 8. This helps to reduce IO contention.
  • Fixes a bug in query cache that causes the same query being executed multiple times in parallel instead of taking the result from the query cache.
  • Limit Script log lines to 1000 and one log line to 10000 characters.

8.1.8

  • Scripts
    • Fixes a bug that prevents loading .env files in the script run, if they are not in root.
    • Fixes a bug that prevents saving changes to a script when being used in a Dashboard.
    • Refactors ScriptsConfig for better maintainability
  • DataSource
    • Reduces the uncached-TTL to 1 Secound
  • Data Queries
    • Fixes bug that breaks data query params on MySQL databases.

8.1.7

  • Data Queries
    • Adds support to force delete Data Query/ Data Query Group
    • Adds support to force publish Data Query
    • Removes dependantsCount from SimpleScriptConfig.
    • Removes LocalAI provider and make Google Vertex AI the new default.

8.1.6

  • Fixes empty SKOOR_SESSION_ID in Scripts.

8.1.5

  • Dashboard/DQs Import Export
    • Fixes importing Dashboards without Dashboard mappings.
    • Fixes checking the users and userGroups even if the Scopes and Permissions is false.
    • Adds a warning to the import notices, if the export system is newer than the target system.
  • Scripts Updates:
    • Unifies ScriptConifg without ScriptConfigType
    • Scripts use Runners. The Runner is chosen automatically according to the files present in the script's directory
      • PythonRunner: selected when main.py exists.
      • ShellRunner: selected when run.sh exists.
      • TalendRunner: selected when Talend assets are detected.
    • Adds Poetry opt-out by renaming or deleting pyproject.toml.
    • Extends ExtendedScriptConfig with dependentWidgets and Widgets details.
    • Extend SimpleScriptConfig with dependantsCount.
    • Adds requestParam for deleteScript to forceDelete scripts with dependents, otherwise throws an exception.

8.1.4

  • Fixes uploading Talend Scripts.
    • Removes version numbers from ZIP-Name i.e: newScript_1.3.zip will be imported as a script named newScript
  • Fixes correct assets mapping while importing Dashboards.
  • Makes Dashboard's name mandatory.

8.1.3

  • Allows to define composite indexes on materialized Data Queries.
  • Fixes mapping of Dashboard for Export/Import
  • CashPilot Data Source
    • Add pagination params to service URL
    • Use expression template and format for filters.
  • Allows to run python scripts on offline systems.

8.1.2

  • Data Sources / Data Queries
    • Allows to sort distinct values based on order by columns.
  • Fixes some bugs that prevented script scheduling and requeing to work properly.

8.1.1

  • Supports new puppeteer

8.1.0

  • Uses pagination when getting data from CashPilot
  • Provides endpoint to automatically translate using DeepL. To activate this feature a DeepL API key has to be provided in /etc/opt/eranger/eranger-webservice.cfg using the i18n.deeplApiKey property.
  • Introduces a new endpoint, /script/, along with a ScriptController, enabling custom script development.
    • Scripts provide a powerful tool for developing, running, customizing, and scheduling various types of scripts.
    • Scripts consist of three main sections:
      • Settings: Includes Name, Description, Timeout, Run Configurations, and Schedule Configurations.
      • Files: A file system-like structure supporting standard CRUD (Create, Read, Update, Delete) operations.
      • Run: Allows triggering and tracking script executions. Run history is capped at 1,000 jobs.
    • Supports uploading zip-based scripts in Python, Talend, and Shell.
    • Added support for webhook tokens, allowing scripts to be triggered via webhooks.
  • Allows to use FreeMarker Templates in DataQueries.
  • Check connectivity to external services like SKOOR AI and DeepL asynchronously to be able to deliver settings.json immediately.
  • Extends /alarms endpoint to also get permissions and properties of assigned objects.
  • Adds POST method to /alarms/{id}/comment and /alarms/{id}/assign.

8.0.22

  • Fixes bug that breaks sub queries in MySQL and some other caes.

8.0.21

  • Optimizes the way how sub queries are handeled (uses not materialized CTEs). This increases query performance by an order of magnitude in many use cases.

8.0.20

  • Do not cache value history for SLCs anymore because SLC values can be recalculated retrospectively.
  • Cleanup materialized data query caches in case of error other than timeout
  • Fixes a bug that prevented materialized data queries to be refreshed if we have a combination of materialized and not materialized queries.

8.0.19

  • StableNet Data Source
    • Fixes bug that causes queries to block when checking foreign tables.
  • Data Queries
    • Optimizes refreshing
    • Supports sub queries when using PostgreSQL CROSSTAB function
    • Allows to explain a data query plan using th /dataQueries/explain endpoint.

8.0.18

  • Removes dynamic data query caching entirely.

8.0.17

  • Fixes bug that prevented PostgreSQL connections to use parallel workers.

8.0.16

  • Fixes bug that breaks data query caching if foreign tables are involved.

8.0.15

  • Data Queries
    • Fixes bug that sometimes causes the same materialized data query to be updated concurrently.
    • Disables dynamic caching because this breaks the query planner in many situations.

8.0.14

  • Data Queries
    • Fixes bug that sometimes causes materialized data query tables to be empty after PostgreSQL server crash.

8.0.13

  • Data Queries
    • Allows to use WITH RECURSIVE.
    • Fixes bug that prevents data queries to be materialized in case of VARCHAR columns.

8.0.12

  • Fixes bug that causes nested data query to fail if sub queries are nestes in a specific way.
  • Deactivates row count estimates if foreign tables are involved.

8.0.11

  • Fixes Bug that causes some database connections stay in idle in transaction state for quite some time.
    • Increases number of concurrent database connections to 60.
  • CashPilot Data Source
    • Supports page_size and error_message_path of REST FDW. This allows to get paged results and to handle error messages.
    • Supports certificate, basic_auth_username and basic_auth_password of REST FDW.

8.0.10

  • Fixes bug that causes /alarmrecipients to fail.

8.0.9

  • Data Queries
    • Fixes bug that causes not updating data query columns immediately after publishing it.
    • Fixes bug that sometimes causes data queries to fail if a data source or data query is referenced multiple times.
  • Data Source
    • Allows to filter data using a single wildcard %
    • Fixes bug that causes scopes not to work properly.

8.0.8

  • Data Queries
    • Fixes bug that prevents deleting multiple data query groups in a row.
    • Allows to export data queries that reference data source scopes with deleted users.
    • Fixes bug that breaks selection of data source when creating data query.

8.0.7

  • Data Sources
    • Removes password when exporting list of data sources.

8.0.6

  • Data Sources
    • Better error handling when importing from XLSX files
  • Fixes bug that causes legacy config migration to fail if updated from 7.2.x instead of 7.3.x version.

8.0.5

  • Supports arabic text in PDF report footer.
  • Adds CashPilot data source.
  • Allows common table expressions (WITH queries) in data queries.

8.0.4

  • Fixes bug that causes legacy configurations not to be converted properly in case of multiple tenants.

8.0.3

  • Fixes broken config DB connections in case of multiple tenants.

8.0.2

  • Data Sources
    • Provides better error messages when importing data from XLS/XLSX files.

8.0.1

  • Data Sources
    • Uses RFC4180 compliant CSV parser when parsing import data.
  • Fixes bug that causes multi tenency configurations not to work properly in case of no default tenant.

8.0.0

  • Adds dataSources/{id}/tables/{table}/distinctValues and dataSources/{id}/tables/{table}/distinctValues which allow getting distinct values for column combinations.
  • Fixes bug that breaks sorting in data source preview if we sort by a columns containing duplicated values.
  • Moves the configuration from File System to Database. which includes (Files, Styles, Translations, DataSources, DataQueries)
  • Data Queries
    • Imporves renaming of Data Queries. Renaming a data query will change its name also in the dependent queries.
    • Improves Export/Import of DataQueries.
    • Optimizes caching of DataQueries.
  • Updates to Spring Boot 3.3.0.
  • Updates to Java 21.0.3.
  • Adds new aggregate function 'distinct_count'
  • GIS Controller: Geographic Information System
    • Adds /dataQuery/{id}/cluster which adds support to Geo Maps using data queries.
    • Adds gis/cluster which adds support for Geo Links in Geo Maps.
    • Filters empty addresses before geo coding.

7.3.21

  • Fixes bug that causes a "No mime type found for *.csv" error message on some systems when exporting a data source table.

7.3.20

  • Fixes import of data source table data.

7.3.19

  • Fixes bug that sometimes causes selects to fail if query contains an empty argument.

7.3.18

  • Does not throw away dynamic data query caches upon Web Service restart anymore.

7.3.17

  • Fixes bug that breaks table annotations.
  • Does more caching to speed up data queries even more.

7.3.16

  • Fixes bug that causes error when sub data query is referenced multiple times on different levels.

7.3.15

  • Even more fixes to improve data query performance.

7.3.14

  • Various fixes to improve data query performance.

7.3.13

  • Optimizes caching of static SKOOR Dashboard assets.
  • Fixes bug that prevents API calls to be cached.

7.3.12

  • Increases performance of distinct values endpoints.
  • Avoids materialized data queries with very large result sets blocking the whole webservice.

7.3.11

  • Uses the new stablenet_permission_hash table from StableNet FDW. This allows to highly optimize materialized data queries and caching in general.

7.3.10

  • Reuses Java HTTP client instances.
  • Does not invalidate StableNet Auth tokens anymore after selects, as this is now done automatically by SKOOR Auth. This saves one roundtrip to the SKOOR Auth Service.
  • Do not try to use unlogged tables for materialized data queries on MySQL backends.

7.3.9

  • Caches some database table metadata to reduce database access.

7.3.8

  • Reduce number of concurrently refreshed materialized data queries to 10.

7.3.7

  • The Data Query cache refresher no longer discards cached data if there's a temporary failure in refreshing StableNet authentication tokens.

7.3.6

  • Decreases data query dynamic cache limit from 100'000 to 10'000 rows. This should reduce writes to the disk for unmaterialized data queries.

7.3.5

  • Replaces deprecated server.tomcat.max-threads with server.tomcat.threads.max.

7.3.4

  • Increases number of concurrent connections to SKOOR Engine server.

7.3.3

  • Fixes a bug that prevents data query run to make use of materialized data.
  • Adjusts materialized data query refresh timeouts based on refresh interval.
    • none: 600s
    • daily: 600s
    • hourly: 60s
    • minutely: 10s
  • Limits materialized data query maximum row count based on refresh interval.
    • none: 10'000'000
    • daily: 10'000'000
    • hourly: 1'000'000
    • minutely: 100'000

7.3.2

  • Fixes bug that prevents data source tables from being exported.

7.3.1

  • Increases the Spring Boot max threads to 400.
  • Optimizes concurrency when refreshing materialized data queries.

7.3.0

  • Adds StableNet Data source type which uses the StableNet Foreign Data Wrapper.
  • Fixes bug that causes mismatch between Engine values and value definitions.
  • Fixes a bug that causes very bad database performance on big datasets when filtering for integer values.
  • Various other performance optimizations for big datasets.
  • New export / import endpoints for dashboards and data queries.

7.2.15

  • Fixes Data Source data import of XLS(X) files with missing trailing cells on some rows.

7.2.14

  • Fixes bug that causes the PUT /{parentType}/{parentId}/children to fail if parent is a SLC.

7.2.13

  • Increases inprocess database connection pool from 8 to 30 to allow more parallel requests.

7.2.12

  • Improves timeout behaviour on MySQL Data Sources.

7.2.11

  • More accurate result row estimate function for data sources and data queries.
  • Supports date trunc functions like month() and day() on MySQL as well.

7.2.10

  • Fixes time zone and daylight saving time issues on MySQL connections.
  • Provides ISO-8601 formatted times in the timezone of the web service instead of UTC (e.g. 2023-01-02T08:00:00+01:00 instead of 2023-01-02T07:00:00Z). This is much easier to read when working with the webservice and should not affect existing clients as those should always factor in the offset.

7.2.9

  • Also estimates row count on MySQL to improve query performance.

7.2.8

  • Correctly handles JSON operators ?, ?| and ?& in data queries.

7.2.7

  • Fixes handling of zoned date time params.

7.2.6

  • Fixes a bug that breaks PDF reports containing special characters in the footer fields.

7.2.5

  • Fixes broken position marker if data query contains errors.

7.2.4

  • Fixes deadlock when a slow data query is accessed multiple times in parallel.

7.2.3

  • Limit columns in data source /columns to current schema.
  • Fixes loading of data source scopes.

7.2.2

  • Fixes a bug that breaks requests to data sources and data queries that contain quotes in search query values.
  • Fixes data queries on databases that do not allow creating the cache schema.

7.2.1

  • Listens on all IPv4 and IPv6 addresses instead of only IPv4.

7.2.0

  • Allows to modify table schemas of data sources
  • Allows to change data of data sources
  • Implements annotations
  • Changes representation of revaluation active time that begin only contains the local time component instead of a full ISO-8601 string.
  • Refresh interval for materialized data queries.

7.1.3

  • Fixes a bug that causes /{type}/{id}/children requests to fail in case an object contains Alarmrecepients.

7.1.2

  • Data Sources
    • Fixes row number estimate in case of query contains IN() conditions.

7.1.1

  • Script data source
    • Fixes bug that causes error if offset is greater than number of returned rows.

7.1.0

  • Rejects values provided to /webcollector that are too far in the future
  • Estimates number of rows fetched from PostgreSQL databases instead of calculating it if the number of fetched rows is greater than 1'000'000. This massively increases query performance on big datasets.
  • Fixes bug that causes fetching job messages to fail if an object is not scheduled on a collector.

7.0.7

  • Data Queries
    • Fixes deadlock when refreshing nested data queries.
    • Fixes a bug that causes dependency resolution to find the same dependent multiple times.

7.0.6

  • Provides defaultParams in /dashboards/groups/nested request

7.0.5

  • Fixes bug that causes a select request on a script data source to crash if no offset and limit params are provided.
  • Fixes parsing of data queries containing with

7.0.4

  • Inventory Controller
    • Fixes handling of tree request with empty objects.

7.0.3

  • PDF Reports
    • Also fixes page wrap for tables

7.0.2

  • PDF Reports
    • Fixes page wrap
    • Fixes doubled table headers

7.0.1

  • Allows to export single data query
  • Fixes a bug that sometimes prevented detecting already materialized data queries upon service restart.

7.0.0

  • Improves data queries
    • Allows to materialize data queries similar to materialized views.
    • Remove Semver versions in favour of just dates.
    • Improves reference detection.
    • Enforces permissions from data source in dmvn testata query as well.
    • Caches data query results for better performance.
  • Pools PDF report rasterizers to improve performance.
  • Updates MySQL JDBC connector. Requires MySQL >= 8.
  • Adds InventoryController which provides optimized endpoints for the SKOOR Dashboard Inventory widget

6.4.3

  • Mainteneance release to incorperate changes from 6.3.4.

6.4.2

  • Supports PostgreSQL citext type and (more) other special types as well.

6.4.1

  • /files endpoint now defaults mime type of unknown files to application/octet-stream instead of returning null.

6.4.0

  • Allows to delete files using DELETE /files/filename.extension
  • Increases maximum upload file size from 1 MB to 10 MB

6.3.4

  • Ensures that PostgreSQL connections always use the external connection pooler.

6.3.3

  • Ensures that the current user has full permissions on a newly created dashboard group.

6.3.2

  • Speeds up Webservice startup by triggering migrations only once during update.

6.3.0

  • Allows operators like AND(), OR() when doing text search on data sources
  • Sorts reasons naturally when getting origin (drilldown)

6.2.5

  • Fixes creation of dashboard groups

6.2.4

  • Normalizes Dashboard permissions
    • Makes root "Dashboards" readable by any
    • Adds "Deny Any" to root "Dashboards" group for referenced objects
    • Removes "deny" rules fom all dashboard objects

6.2.3

  • Forces init permissions of dashboards to parent object

6.2.2

  • Fixes Dashboard fetching when user is moved into other groups or changes role.

6.2.1

  • Fixes Header Tile migration in case og only right header tile.

6.2.0

  • New Dashboard permission endpoints

6.1.4

  • Fixes Data Queries using aggregate functions without alias (e.g. count(*), sum(foo), ...)

6.1.3

  • Does dashboard migrations once per tenant instead of only once globally.

6.1.2

  • Data Queries
    • Fixes data queries that have deleted user as author.
    • Fixes Data Queries with null query strings

6.1.1

  • Data Queries
    • Does not use Commont Table Expressions on MySQL because old version of MySQL do not support those. Probably there will be a detection for this feature in a later Webservice version.

6.1.0

  • Data Queries
    • Usees Common Table Expressions (WITH queries) for sub queries instead of nested sub queries. No need to add an alias to a sub query anymore.
    • Strips comments before processing sub queries and params.
    • Measures query execution time and return duration
    • Allows default values for parameters and simplify parameter syntax (no more "params.")
  • Data Queries / Data Sources
    • Sub aggregates
  • Styles endpoint for storing custom CSS styles
  • Returns children in reason call

6.0.5

  • Fixes reading config from environment variables

6.0.4

  • Data Queries
    • Removes pinning logic
    • Always deletes groups recursively
    • Simplifies and fixes export/import

6.0.3

  • Returns a 404 instead of 500 HTTP status code in case of invalid dashboard

6.0.2

  • Allows to save invalid data queries. Return errors when getting data query instead
  • Does not add version markers anymore when publishing data queries
  • Fixes circular reference detection for sub data queries

6.0.1

  • Single request for dashboards including its children (/dashboards/{id}/nested)

6.0.0

  • Config from ENV
  • Allows to set darkmode on user
  • Many changes when getting dashboards
  • Removes some stuff now done by SKOOR Auth
  • Uses connection pool from PGPool-II if available