Preliminary release notes for WebAPI 3.8.1 (no release date yet)

Bug fixes

  • Only one multi-lingual value was written when the field contained multiple languages. Fixed in 3.8.1.3634.

  • The OpenTextImagePlugin could not be found and the WebAPI call would hang indefinitely. Fixed in version 3.8.1.3622.
  • For the insertrecord, updaterecord and writerecord commands with payload xml that contained a priref outside the boundaries of the dataset, it was still possible to write the record if it didn't exist yet. Fixed in 3.8.1.3612.

  • If an application had "specified rights" and Default Access None for Collect and Media, so the WebAPI had access to certain records only in which an IIS user has read-only access, then nested media fields were not retrieved for media records where the WebAPI should have had access. Fixed in 3.8.1.3593.

  • A search on priref failed to create a normal XML result. Fixed 3.8.1.3531.

  • When using the OAI API with a query to ListIdentifiers nothing was returned and the following error message was in the log files: "There is already an object named 'rstable5' in the database." Fixed in version 3.8.1.3513.

  • Images with an orientation set in the EXIF metadata lost their orientation when the image was resized. Fixed in version 3.8.1.3436.

  • The parts_reference field was not returned when Indexed link was set for the internal link. Fixed in 3.8.1.3431.

  • A security issue was found with command=getcontent. Fixed in 3.8.1.3425.

  • A SQLException was generated for a title search combined with a search on another field, or a selected facet. Fixed in version 3.8.1.3406.

  • Indirected searches on priref yielded a "priref indirection search - error". Fixed in 3.8.1.3405.

  • When you had set <highlight>true</highlight> in adlibweb.xml, you sometimes got an error like:
    An error occurred while parsing EntityName. Line 1, position 19. This happened when an ampersand (&) was part of the value you were searching for. Fixed in 3.8.1.3398.

  • When the length of Free text index keys was exceeded, SQL errors were thrown because the long keys weren't trimmed down to the maximum length before being indexed. Normally, that length isn't easily exceeded, but in this case text obtained by using OCR to read PDF files contained very long strings of strange characters and these were written to fields in records. Fixed in 3.8.1.3394.

  • Timeout (or unacceptable response times) happened with a q-search and a selected facet call. Fixed in 3.8.1.3385.

  • Adding truncation="None|Left|Right|Mid|All" to a <searchfield> had no effect. This was fixed in .3.8.1.3380. Note that with contains operators (automatically applies to q-searches), left truncation does not work: for that you will need to use = and *mypartialvalue* as search value.

  • Forcing new records failed because of missing text files in the application folder. From 3.8.1.3378 this is reported properly and the UpdateRecord call fails with a write exception and additional messages in the WebAPI output:
    <errorMessages>
    <message>Error opening text file '../texts/adlib.txt'</message>
    </errorMessages>

  • If retrieval of a media file via the WebAPI Piction plugin took too long (e.g. because the file was very large), the call timed out before the response was returned. This was fixed in 3.8.1.3370 with the addition of a new plugin configuration TimeOut setting underneath the <ImagePlugin> node to override the default timeout value of 60000 ms (1 minute): setting the value to something higher than the default will solve this issue. For example: <TimeOut>300000</TimeOut>

  • The getdeletedrecords command failed when the IIS server locale was not US-English. Fixed in version 3.8.1.3348.

  • There was an Object reference not set to an instance of an object error when searching on creation or modification dates. Fixed in 3.8.1.3343.

  • The result from the API after posting an updaterecord command had an empty <priref></priref> field. Fixed in 3.8.1.3324.

  • For the Sync CTS plugin, Deleterecord with theresolveLinks parameter set to false would throw a DatabaseRecordNotFoundException for a non-existing linked record. This was fixed in version 3.8.1.3320.

  • Command=getdeletedrecords returned an error System.IndexOutOfRangeException. Fixed in 3.8.1.3291: Getdeletedrecords returns the unique prirefs that are listed in the database's SQL _journal table as deleted (column 'type' = '2') AND which currently don't exist as record in the database. Prirefs that have been deleted and later have been reused are not returned by getedeletedrecords.

  • A POST of new records sorted on date field(s) caused SQL locks. Fixed in WebAPI version 3.8.1.3280.

  • There was an AdlibSqlException with a q-search on a date field (e.g. dating.date.start). Fixed in version 3.8.1.3265.

  • Output method text in API stylesheet returned text/xml in response. Fixed in 3.8.1.3274.

  • An InvalidCastException occurred with command=getpointerfile or listpointerfiles and <resolveLinks> set to false. This was fixed in version 3.8.1.3259.

  • For linked fields with a domain, no facets were returned. Fixed in 3.8.1.3227.

  • An AdlibSqlException was produced with q-search on a title field in combination with addToQuery on the document_type field. This was fixed in version 3.8.1.3215.

  • There was an ImagePathNotFoundException for a getcontent of video with backward slashes in the value (sub folders). Fixed in 3.8.1.3200

  • A WebAPI error was generated when .msg files were to be downloaded via the WebAPI: no decode delegate for this image format `MSG'. Fixed in WebAPI 3.8.1.3204.

New functionality

Natural language searching expanded with "overlaps" operator

Since Collections 1.15 and the associated WebAPI, you've been able to perform natural language searches in fields of the Period type. So you can search such fields on phrases like "12th century", "spring 2023", "2024" etc. However, if you did an equals-search on such phrases, you always implicitly performed a narrower search. So searching in Collections on e.g. Period = "spring 2023" would find records in which the period field contained dates in the spring of 2023. There was no way to do a wide search, to find records with dates outside the provided search key.

From WebAPI 3.8.1.3355 and the Collections version of early 2025 though, you can do a wide search on period fields, using the new "overlaps" operator. The narrower search must now be specified explicitly and is called "within" for these fields.

In WebAPI requests you can use overlaps and within but for the other, existing operators that you could also use on period fields you still have to use the mathematical form: >, >=, < or <=. Searching on an empty period would be done with ='' while searching on a non-empty period would proceed with =*. You also have to enclose search keys including spaces or hyphens by single quotes (or their URL encoded versions, for WebAPI requests, for example: wwwopac.ashx?database=collect&search=period%20within%20%272000-2002%27).

Apart from using natural language search keys, you can also use dates in the current region format (so English US dates must be formatted differently than English GB dates). Incomplete dates should at least have a year, possibly a month and possibly a day element.

Note that "overlaps" searches are pretty wide searches: if you were to search on Period%20overlaps%202000, you'd find records containing periods like: 2000-2002, circa 2010 and 21st century. And a search on Period%20overlaps%20%272001-2003%27 would find the same periods.
If you do a "within" search on a natural language key, like Period%20within%20%27circa 2000%27, you'd find records containing periods like 2000-2002, circa 2000, 1990, 1990-2000.
Remember that a natural language search key will be parsed (converted under the hood) to a matching date range and that a natural language value stored in a record will also have been parsed to a matching date range. Your search will ultimately only compare these date ranges.

New Axiell AWS S3 media plugin

From 3.8.1.3278, an Axiell WebAPI plugin for Amazon Web Services S3 (an object storage service that stores data as objects within buckets) is available that is capable of storing and retrieving media files. The plugin uses the AWS SDK, not the S3 API, so other S3 suppliers implementing that API are not supported. Click here for more information.