Axiell WebAPI home page > Documentation > Release notes for WebAPI

Release notes for WebAPI

Bug fixes

  • The WebAPI login command on a database (not using Active Directory) returned a System.NullReferenceException. Fixed in
  • In a multilingual database (with full text indexing enabled) the API scan feature returned an SQLException: The multi-part identifier "thesau_term.language" could not be bound. Fixed in version
  • Combining an API q search with a selected facet parameter resulted in an SqlException: Invalid object name 'CTE_0'. Invalid object name 'CTE_0'. Fixed in
  • The generic image server plugin didn't handle audio/wav mime-type correctly. Fixed in
  • Video/audio did not play in Chrome/Edge despite ignoreScaleVideo was set to true. Fixed in
  • Running an OAI Token Set retrieval for a big set was slower per retrieved record than a small set, because for each token retrieval a count of the rstable was done. To improve performance yet again, a new column has been added to the resumptiontokens table that holds the completeListSize value of the initial search result. Fixed in version
  • Inherited data was no longer retrieved correctly. Fixed in
  • OAI rstables were missing an index on the offsetid column, causing slow OAI performance for certain queries. Fixed in
  • OAI performance was sometimes still slow, especially when retrieved records had a lot of child records. Improved in
  • Image rotation was no longer working. Fixed in

New functionality

Performance improvements

Earlier performance improvements for OAI have now been implemented in the WebAPI too, leading to over 60% shorter retrieval times.

WebAPI log file creation every 24 hours

Since a WebAPI log file (when enabled) may grow very fast, this may lead to file sizes which cannot be opened in a text editor anymore. From, the <logFolder> configuration in the globalConfiguration node of adlibweb.xml has some additional properties (like in Axiell Collections) to have a new log file created every day. Optionally you may set the level of logging to All, Error, Debug or Trace, depending on how extensive you’d like the logging to be. (Leave out -dd or -MM-dd to create a new file only once every month or year respectively.) You can also provide an optional MaxOldFiles argument to specify how much log files to keep (of the most recently created ones) while purging older log files when creating a new one. If MaxOldFiles is omitted or 0, purging is disabled. The default output log file name "OutputLog.txt" can be overridden by the setting too. Example:

<logFolder InputLog="WebApiInputLog.${date:format=yyyy-MM-dd}.txt" OutputLog="WebApiOutputLog.${date:format=yyyy-MM-dd}.txt" MaxOldFiles="10" Level="All">c:\temp\Logs</logFolder>

Limit configurable per OAI set

A <limit> to specify how many records of a search result will actually be retrieved could already be set in the globalConfiguration in adlibweb.xml. From WebAPI you can override this setting by specifying a <limit> per OAI_SET configuration.

Optional fallback image server configuration

From WebAPI, if you have multiple image server configurations, you can designate one of them as the fallback image server. This server will be tried when a searched image cannot be found in the (different) image server specified in the query. A fallback=true attribute should therefor be added to the <ImageServerConfiguration> element, like so:

<imageServerConfiguration name="generic" fallback="true">

<imageServerConfiguration name="images">

Only one image server configuration may have the fallback attribute, otherwise an error will pop up.

So, when calling server images with an image id that doesn’t exist, the WebAPI will try the fallback server called generic with the same properties.

Support for default values in generic Media Server plugin

From, the generic Media Server plugin offers support for default values. This comes in handy if sometimes a different value for a call parameter needs to be provided while most often a default value should be used if that different value is not available. A use case would be when you would gradually like to move your system from local storage of media files to a DAMS. The local storage would then be the default server while only if a certain value in a particular record field is present, the DAMS would have to be the server.

For this, an (optional) list of default parameters can now be specified underneath the <ImagePlugin> node. A default parameter and its value will be applied to the configured URL when either the parameter is missing from the configured URL of when the parameter is empty in the configured URL.

Below you can see an example configuration in which the server parameter in the configured ServiceUrl has custom placeholder called %altserver%. When the caller replaces it with an actual image server name in the query, then that image server will be used: if not, then the server=images argument will be applied and the images image server will be used:

<imageServerConfiguration name="generic">
    <ImagePlugin type="Axiell.GenericService.Plugin.GenericPlugin, Axiell.GenericService.Plugin">
         <DefaultParameter key="server" value="images" />

An example of a getcontent call using an image server called myaltserver would be the following: