API Change History
Public release notes for all versions of Globus Search.
1.43.0 (2025-09-17)
-
Added an index-update api to support index modification. Initially only name and description modification are allowed. See more details here.
1.42.0 (2025-07-23)
-
Added a new field to search index read apis which enables client-side query caching.
-
This field,
content_last_modified_date, tracks the latest timestamp when a write operation (ingest or delete) modified the contents of the index.
-
1.41.0 (2025-07-16)
-
The
@versionfield is now included in OpenAPI documentation in all supported locations. -
POST search, scroll, and delete-by-query requests now default to using
@versionquery#1.0.0, scroll#1.0.0, and delete_by_query#1.0.0 formats respectively.-
Note: In POST search requests using query#1.0.0, GFacetResult no longer automatically includes entries that would otherwise have been excluded by a GFilter specified in the GSearchRequest object’s filters targeting the faceted field.
-
-
Improved index-list’s performance and robustness during data-layer index incidents.
-
Added a new api field: "index.available", to indicate whether an index is capable of serving queries and processing tasks.
1.39.0 (2025-06-16)
-
termsfacets now work correctly on numeric data. -
Add a new facet type,
distinct_count, which does approximate cardinality measurement for fields.-
Because the numerical characteristics of fields across very large datasets cannot be measured efficiently at query time, the
distinct_countfacet, like other metric facets (avgandmax), is not guaranteed to be perfectly accurate. Users who need perfect information should use the Scroll Query API to extract data. -
distinct_countshould be accurate on datasets under 10,000 items, and will typically have an error rate below 1% until hundreds of millions of items are counted.
-
1.38.0 (2025-06-04)
-
The Scroll API now allows unauthenticated usage. It previously was inconsistent with POST Query API and required callers to be authenticated.
1.37.1 (2025-05-02)
-
Globus Search now behaves better when it is unable to serve a query request.
In particular, users whose queries time out should no longer see very slow hanging requests.
1.37.0 (2025-04-30)
-
The Index List API now accepts a
filter_rolesquery parameter which takes a comma-delimited list of role names, allowing users to request a subset of indices on which they have specific roles.
1.35.0 (2025-04-02)
-
Added a new field,
q_settingsto all v1 POST-style queries, includingquery#1.0.0,scroll#1.0.0, anddelete_by_query#1.0.0.q_settingsexpects a dictionary as input with the keysmodeanddefault_operator.
1.30.0 (2024-11-13)
-
Add a new
delete_by_query#1.0.0document format for Delete By Query requests.The new format does not allow the use of fields, such as
sort, which were previously allowed by the API but which had no effect on the deletion.Delete By Query requests that do not specify that the
@versionisdelete_by_query#1.0.0will continue to function without modification.
1.29.0 (2024-11-06)
-
When getting information about a specific index, the response document now includes the permissions of the principal that made the request.
1.28.1 (2024-10-23)
-
Queries with version
query#1.0.0are now rejected if they define any facets with identical names. -
Queries with version
query#1.0.0now support facet-specificadditional_filtersfields.-
An aggregate limit of 96 has been applied to all
filters,post_facet_filters, andadditional_filtersin a single query.
-
-
Added a new scroll document version,
scroll#1.0.0, which handles filters akin to the newquery#1.0.0definition.
1.26.0 (2024-09-27)
-
Improved the behavior of authentication failures due to upstream errors.
-
Added a new query document version,
query#1.0.0, which:-
Replaces the keyword
post_filterwithpost_facet_filters. -
Removes the keywords
@datatypeand@versionfromsort,boost,facet, andfiltertype sub-documents. -
Removes support for "auto-listifying nested fields" in
sort,boost,facet, andfiltersub-documents. Nested fields must always be supplied as a list, never singleton objects.
-
-
Globus Search now supports a new filter type,
GFilterLike, which implements basic wildcard query semantics. A "like" filter takes the form{"type": "like", "field_name": "my_field", "value": "filter-expression"}.-
Filter expressions may contain
*, matching any number of characters, and?, matching any one character. -
The fields specified by "like" filters must be text fields.
-
-
Internal robustness and performance enhancements
1.25.0 (2024-08-28)
-
Added two new query filter types:
andandorto support composing and unioning query criteria together. For more information on how to use these filters, see GFilterAnd and GFilterOr. -
Added four new keywords to range filters:
gte,lte,gt,ltto allow for more precise range filtering. For more information on how to use these keywords, see POST Queries and Filters.
-
Removed the deprecated
result_format_versionparameter from thePOST QueryAPI.
1.24.0 (2024-08-21)
-
Removed the deprecated
result_format_versionparameter from the following three APIs:GET Query,Get By Entry ID,Get By Subject.
1.22.0 (2024-07-10)
-
Added BurstQueryCapacity rate limiting.
-
Search queries which take longer than 2 seconds to execute are now tracked in a 30-second expiring rate limit window (associated with the caller).
-
Any caller accumulating more than 90 of these "BurstSeconds" (query execution seconds beyond the 2-second allotment) will now receive a 429 on subsequent post-search, get-search, and scroll operations until their 30-second rate limit window expires.
-
1.21.0 (2024-05-31)
-
Globus Search now supports a new type of filter for searching geospatial datatypes. A
geo_shapefilter tests the relationship between data in the index and a provided GeoJSON Polygon.-
The new filter can be requested using
"type": "geo_shape"in a POST query filter. -
geo_shapefilters must contain ashapefield containing a GeoJSON Polygon. Other geometries may be added in the future. -
geo_shapefilters support a field,relation, which determines which relationship between shapes is being tested.relationcan be one ofintersectsorwithinand defaults tointersects. -
intersectsfilters can be used ongeo_shapeandgeo_pointdata, butwithinfilters can only be used ongeo_shapedata. -
GeoJSON Polygons are defined by RFC 7946, the GeoJSON format specification.
-
-
Globus Search now supports
post_filteras a parameter on filters, controlling whether they are applied before or after facets are calculated. The default behavior forpost_filter, when omitted, matches Globus Search’s previous behavior for facet and filter interactions. -
Internal robustness and performance enhancements
1.20.0 (2023-10-18)
-
A new filter type has been added,
"type": "exists". These filters take no additional parameters beyond the type and the field name, and match documents where a desired field is present with a non-null value. -
Add support for filters of type
"not", which negate their contained filter. A "Not Filter" contains another filter inside the"filter"field and inverts the meaning of that filter. For example, a filter of the form{ "type": "not", "filter": { "type": "match_all", "field_name": "foo", "values": [ "bar" ] } }will match any document in which the field
foodoes not contain the stringbar. For more information on how to use"not", see the reference documentation on POST Queries and Filters. -
Internal robustness improvements
1.19.1 (2023-08-02)
-
Fixed an issue in which specifying a negative boost factor on a query would result in opaque errors. These are now caught and rejected with a more specific error message.
1.19.0 (2023-06-28)
-
Globus Search will no longer represent boolean values internally as strings; they will be represented as booleans. This results in an unavoidable backwards-incompatible API change.
-
This fixes a bug in which ingesting a document with the strings
"True"or"False"would return documents on query containing booleantrueorfalse. -
For existing indices with mappings already defined, documents will continue to ingest successfully, as boolean values are allowed for string fields.
-
For any existing documents prior to this change containing the boolean values
trueorfalse, Globus Search responses will now contain"True"and"False". This reflects the data transformation which happened in the past and affected existing documents, but which is no longer re-transformed on output. -
In certain cases, some sequences of documents which would have previously ingested successfully will now fail. In particular, it used to be valid to first index a boolean value (
trueorfalse) for a field and later store string values in that field. This is no longer allowed, as the boolean type of the field is now correctly assigned and enforced. -
For assistance updating existing indices to translate data, or to help assess the impact of this change on applications, please contact
support@globus.org
-
-
The
match_anyandmatch_allfilter clauses now accept boolean values. In JSON, these aretrueandfalse. These will only match on boolean field types, not on data which was translated to"True"or"False"in a past version of Globus Search.-
For users wishing to filter on boolean fields which predate the v1.19.0 release, a filter of the following form can be used to match booleans:
{ "field_name": "foo", "type": "match_any", "values": [ "True", true ] } -
For users wishing to filter on boolean fields created after the v1.19.0 release,
match_anyandmatch_allfilters cannot take string values. Note that this only holds for newly defined fields. For any such new fields, thematch_anyandmatch_allfilters should only contain the true boolean valuestrueandfalse, as in:{ "field_name": "foo", "type": "match_any", "values": [ true, false ] }
-
-
Index management APIs are now available under the
/v1/namespace:-
Index Create:
POST /v1/index -
Index Delete:
DELETE /v1/index/<index_id> -
Index Reopen:
POST /v1/index/<index_id>/reopen
-
The beta versions of the index management APIs are still available,
but officially deprecated. They are aliases of the /v1/ routes.
1.18.9 (2023-04-19)
-
Added support for batch document deletion via new
batch-delete-by-subjectroute-
For a detailed specification, see Batch Delete by Subject
-
-
A task requesting the deletion of a non-existent document is now marked as "SUCCESS"
1.18.8 (2023-03-30)
-
Fix task cleanup; tasks older than 30 days will now be deleted as expected
-
Include the Search version in a
versionfield forGET / -
When insufficient scopes are used for an API request, the
codefield is now set toForbidden.InsufficientScopesso that error summary info will more easily include the cause -
Improve the preparation of pending tasks, increasing performance
1.18.6 (2023-02-15)
-
Added the field
task_typeto response objects in theGetTaskandTaskListAPIs
-
Fixed error messaging on incorrectly typed fields whose name contains a
.
1.18.4 (2022-10-26)
-
Support for
all_authenticated_usersas a document visibility value-
More details can be found at Visibility Values
-
1.18.0
-
Range filters are now always inclusive on their upper bounds. They previously would be exclusive unless the upper and lower bounds matched exactly, which resulted in surprising semantics when date ranges were used.
-
Get by Entry ID now correctly handles the case of the null Entry ID. It previously returned all entries instead of the entry with a null ID.
-
Invalid facet names containing '[', ']', '>' are now detected and rejected with a specific error.
-
Delete by Subject is now allowed for users with the
writerrole on an index. This previously requiredadminorowner
1.17.2
-
A malformed Authorization header will always be treated as a 401 Unauthorized error
-
Internal robustness improvements
1.17.0
-
Queries with unbounded or large numbers of buckets in aggregations may now trigger a 400-class error (a bad query error) instead of a 500. These are triggered by users sending a type of query which exceeds internal limits
-
The
role_idshown in aNoSuchRoleerror is now rendered correctly
-
Beta support for
geo_bounding_boxfilters andgeo_pointandgeo_shapedatatypes. These are now documented in our openapi and redoc documentation but are not yet meant for general use -
Improvements to robustness to reduce the frequency of failed queries
-
Ingest errors may now contain a field in
additional_detailsnamedcaused_bywhich shows a detailed message about the cause of the failure
1.16.0
-
Some request failures due to internal timeouts have been fixed
-
A new (beta) API for index deletion is now available to index owners and admins,
DELETE /beta/index/<index_id>-
A deleted index enters a
delete-pendingstate prior to deletion. For trial indices, deletion will take place within a few minutes. For non-trial indices, the index will be unusable but will only be deleted after 30 days -
Owners of a non-trial index in the
delete-pendingstate can use the reopen API,POST /beta/index/<index_id>/reopento change the index status back toopenfromdelete-pending -
When an index is marked
delete-pending,PENDINGtasks on that index are immediately stopped and set to a state ofCANCELLED. Tasks which are already inPROGRESSare allowed to complete
-
-
A new field is added to Index List and Index Show APIs,
status.statushas a value of either"open"or"delete-pending", depending on the index state
1.15.4
-
@contextexpansion, which is no longer used by any indices, has been removed
-
Fixed an issue in which rate limiting could rarely cause requests to fail incorrectly
1.15.2
-
The
@contextexpansion feature on Ingest is now considered deprecated and will be disabled on all new indices-
When context-expansion is disabled, the
contentfield is left unmodified prior to data being indexed, and@contextmay be a valid field name
-
-
Delete By Query operations with
filterclauses were not handled correctly, resulting in failing tasks
-
The
is_trialandsubscription_idattributes are now included in the Index Show and Index List APIs
1.15.0
-
A new (beta) index creation API is now available to all Globus users
-
The user who creates an index will be given an
ownerrole on it -
Users are still only allowed to be
owneron one trial index. In effect, this means that each user can only create one index -
Available at
POST /beta/index, the call accepts adisplay_nameanddescription -
Indices created in this way are marked as trials and may be automatically deleted after a period of time. Contact support@globus.org to associate a trial index with your subscription and convert it to non-trial status
-
-
Globus Search has a new rate limit of 5 requests/second
-
Internal performance improvements
1.14.0
-
There is now a limit on the number of roles per index. No more than 50 roles may be created.
-
The
subjectfield is now limited to 500 bytes (not characters)
-
Allow the use of a bare wildcard for an advanced query string, or as the right-hand side of a field expression. These expressions were removed in 1.13.0 and are being reintroduced here.
-
may only appear on its own, either as the full query or the right-hand-side of a field, as inorfoo:*
-
-
A new role,
owner, has been added to Search with all of the permissions ofadmin-
Multiple users may have
owneron an index. There is no limit on the number of owners other than the limit on total number of roles.
-
-
A new role deletion API is now available for index admins and owners for removing permissions for users (
DELETE /v1/index/<index_id>/role/<role_id>)-
Roles may be deleted by role ID, retrieved via role listing
-
The last
ownerrole on an index may not be deleted. Attempting to remove it will result in an error -
adminusers can otherwise deleteownerroles andownerusers can deleteadminroles -
An
adminorowneruser is permitted to remove their own permissions on an index
-
-
A new role creation API is now available for index admins and owners for adding permissions for users (
POST /v1/index/<index_id>/role)-
Roles may be assigned to any valid principal URN, meaning any identity or group
-
Only users with
ownerpermissions can createownerroles -
Duplicate roles are not allowed
-
A trial index may only have one owner assigned.
ownerrole creation is not allowed on these
-
-
Role responses from creation and role listing now include the role ID (for use in role delete)
-
Internal enhancements and robustness improvements
1.13.0
-
Remove support for API operations by
index_name(deprecated behavior). All APIs now require the use of theindex_idinstead -
Remove support for "query templates" (unused feature)
-
The request payload limit has been changed to 10MB
-
A bad Authorization header will now always be rejected with an error, even when making an API call which does not require authentication.
-
Major improvements to advanced query parsing. New errors should help indicate which part of a large query was malformed.
-
The slash (
/) character no longer needs to be escaped in advanced queries. This means thathttps\://foo:baris a valid search, equivalent to what previously had to be expressed ashttps\:\/\/foo:bar
-
-
Add new
/v1/index/<index_id>/role_listAPI accessible to index admins-
Index writers cannot view the role list
-
Like
index_list, this API requires theurn:globus:auth:scope:search.api.globus.org:allscope
-
-
Add a new
/v1/index_listAPI which lists indices on which you havewriteroradminpermissions-
Calls to
/v1/index_listrequire theurn:globus:auth:scope:search.api.globus.org:allscope
-
-
The set of date formats accepted and autodetected are now stricter to avoid incorrect date detection. See the doc on datatype mapping for details
-
Numerous internal enhancements!
1.12.0
-
Autogenerated documentation for Globus Search is now available. This documentation is subject to change as the API changes.
-
An openapi specification can be found at
https://search.api.globus.org/autodoc/openapi.json -
The openapi spec is rendered at
https://search.api.globus.org/autodoc/redoc
-
-
A new API is added alongside
/searchcalled/scroll-
Scrolling is not limited to 10,000 results, and can therefore be used for deep pagination
-
Scrolling does not support sorting, faceting, or boosting
-
This API uses marker-style pagination in which an opaque marker is returned on each request and can be used to request the next page of results
-
-
Sorted queries with will now always return results with a stable ordering, even when the sort criteria do not guarantee a stable sort
1.11.4
-
Improved validation for facets and filters in a number of cases. Facets of one type (e.g. terms) may not contain fields specific to another facet type (e.g. the histogram field for numeric histograms)
-
Improve performance on very large query results
1.11.2
-
Bad authentication data on queries now correctly produces a
401 Unauthenticatedresponse
-
New role based filtering of results using the
principal_setsfield-
Entry documents may now include a mapping,
principal_sets, which lists collections of principal URNs -
You can filter queries with a new parameter,
filter_principal_sets, which matches your identities and groups against theprincipal_setsof various entries -
This mechanism can be used for cases like role-based filtering, e.g. listing
adminsof an object and asking forfilter_principal_sets=admins
-
-
bypass_visible_tois now supported on Get Entry and Get Subject -
Type mismatches on ingest now produce more detailed error messages
-
If the type of an ingested field does not match the data in the index, Search will now attempt to produce a more useful error message in the failed task document
-
New data should be found in the
additional_detailsfield of a failing task
-
-
The internal
/unstable/API has been renamed to/beta/ -
Internal stability enhancements
1.11.1
-
Deleting the last entry of a subject now correctly deletes the subject rather than leaving the subject in place but empty
1.11.0
-
Internal performance, robustness, and security improvements
-
Convert synchronous write operations into asynchronous tasks
-
delete-by-subject,delete-by-entry-id, anddelete-by-queryoperations now all run asynchronously as tasks, which can be monitored just likeingesttasks -
These operations have had their responses changed to return
task_id. The standard successful response for a newly submitted task is{"acknowledged": true, "task_id": …} -
The
delete-by-subjectanddelete-by-entry-idresults are encoded simply in the status of their relevant tasks asSUCCESSorFAILED -
The
delete-by-queryresult, which shows the number of documents deleted, is now exposed through theadditional_detailsfield of the resulting task document onSUCCESS -
delete-by-subjectanddelete-by-entry-idreturn the field{"removed": true}in all cases for backwards compatibility. This field is not meaningful and will be removed in a future release -
delete-by-queryreturns the field{"num_subjects_deleted": 0}in all cases for backwards compatibility. This field is not meaningful and will be removed in a future release
-
-
Task records now expire after 90 days — attempting to lookup a task more than 90 days after its completion date will return a 404
1.10.0
-
Fix an issue in which date histogram facets returned an extra, empty facet named
"meta"
-
Become strict on inputs and error on unknown fields and unknown parameters
-
This applies to query parameters and POST/PUT method bodies
-
Unexpected fields and unexpected parameters will cause validation errors, with an HTTP status of 400
-
-
This provides a safer development environment in which typos cannot lead to parameters being unintentionally ignored. For example,
/search?q=foo&limitt=1will cause an error, rather than simply ignoring the malformed parameter,limitt-
Added support for sum and avg metric facets.
-
-
These are requested by setting the facet’s
typetosumoravg, and return numeric results forvalue -
For
sumandavgfacets, the additional fieldmissingis supported, to define a value to be used for documents without the relevant field name. By default, missing values are ignored and do not count towardssumoravg
1.9.1
-
Fix the enforcement of
visible_topolicies on facets when data is partially visible to the user-
If a single subject contained at least two entries, one visible to the user and one non-visible, facets returned results for the non-visible entry
-
Subjects which do not contain entries visible to a user were not visible by this method
-
The facet did not need to be on a field in the visible entry, so this method could have been used to discover the presence non-visible field names via a guess-and-check approach
-
1.9.0
-
Queries using filters without a query string will no longer produce errors
-
Improvements to input validation, ensuring that various inputs produce more consistent and better error messages
-
As a consequence of this change, some error messages have changed in format slightly
-
The following values for the
codefield have been removed: BadRequest.DocumentValidationError, BadRequest.UnsupportedDocumentVersion, BadRequest.UnexpectedDatatype, BadRequest.IncompleteDocument. Instead, any errors related to input validation will use BadRequest.ValidationError -
No HTTP status codes have changed. Validation errors are still HTTP 400s
-
-
Search will no longer accept connections using old SSL versions. TLSv1.2 or later is required, as a security measure
-
Internal security and stability improvements
1.8.0
-
Requests which have both invalid parameters and improper Authorization headers will more consistently get Unauthorized errors (HTTP 401), not Bad Request errors (HTTP 400)
-
Empty
GMetaListingest documents are now rejected with a validation error, including a message describing the cause
-
Backwards Incompatible: The default
result_format_versionhas been changed in all contexts to2019-08-27 -
Search results now include a
has_next_pagefield for easier pagination
1.7.2
-
Using non-RFC UUID variants in
<index_id>fields will now be rejected with validation errors (HTTP 400)
1.7.1
-
Remove behavior which drops
nulland other nullary values. These will now propagate through correctly so that documents can containnull.
1.7.0
-
Performance optimizations for repeated searches in a short window
-
Admins of an index may now bypass
visible_torestrictions by settingbypass_visible_to=Trueon their Searches-
In this mode, index admins may see all documents in an index, regardless of
visible_torestrictions -
pass
bypass_visible_to=Truein a GET search or set"bypass_visible_to": truein a POST search -
this capability is not available on non-query APIs (e.g. get-by-subject)
-
-
Queries may now set
result_format_version=2019-08-27in order to get results in a new format-
This parameter changes the format of
GMetaResultdocuments. Details on the two format versions are provided in theGMetaResultdocumentation -
The
result_format_versionparameter is also available on Get-By-Subject and Get-By-EntryID operations -
In a future release, this behavior will become the default, but you will be able to ensure you continue to get results in the current format if you start passing
result_format_version=2017-09-01 -
In the long term, the
2017-09-01result format will be deprecated and removed
-
-
Remove deprecated resource_type parameter
1.6.0
-
Significant improvements to internal handling of Ingest Tasks
-
Overall Task throughput has been improved
-
Tasks will no longer take a long time to fail when they mismatch the underlying schema
-
Task processing order has been improved to treat Indices more fairly
-
1.5.0
-
Ingesting fields over 32 KB in size will be rejected with an HTTP 400, rather than queuing as tasks which will ultimately fail
-
New JSONSchema validation can be set (by a service administrator) on an index
-
Schema validation is applied during ingest request processing and accepts or rejects documents at that time
-
Documents passing schema validation may later fail due to type mismatches if the detected underlying field type does not match the schema specification
-
1.4.3
-
Ingest document sizes over 10MB are now caught as errors immediately and trigger and HTTP 400 response instead of queuing as tasks which will ultimately fail
1.4.1
-
nullin amatch_anyormatch_allfilter causes a validation error (HTTP 400)
-
Accelerate handling of ingest payloads smaller than 5MB
1.4.0
-
GMetaResult documents include a new field,
entry_ids, containing the array of entry IDs for the elements of thecontentarray-
For any index
i, the value atentry_ids[i]is the entry ID forcontent[i] -
This "unzipped" representation of
entry_idswas chosen to avoid making backwards-incompatible changes in the response format.
-
1.3.2
-
Sorting on nonexistent fields gives accurate error
-
Fix errors on certain malformed range queries
1.3.0
-
Timeout errors were incorrectly classified as 502. This is corrected and they are now returned as HTTP 504 errors
-
Certain range filters were mishandled and resulted in errors
-
Histogram bucketing facets on text-type fields now produces a better error
-
Major documentation refresh
-
Add the new Task API which supports getting a task and a list of tasks
-
/v1/task/<task_id>gets a current Task document. To make this call, you must have permissions to ingest data into the index which is referred to by the task -
/v1/task_list/<index_id>gets a list of the 1000 most recent Tasks which were started against an index
-
-
The Ingest API no longer attempts to synchronously write data to an index, but returns a
task_idhandle for the asynchronous background task-
Clients which depended on the
num_documents_ingestedfield on ingest will now find that it always has a value of0 -
A successful return from an ingest API call no longer guarantees that data was written to the index successfully — callers must now check the status of the generated Task using the new Task API
-
1.2.6
-
NaN,Infinity, and-Infinityare now rejected with an informative 400-class error, as they cannot be stored in Globus Search as Float values
-
Error documents now include the
request_idfor better troubleshooting. Please include therequest_idwhen reporting unexpected errors
1.2.3
-
Numeric histograms with bad ranges correctly result in 400 errors
-
Handle malformed dates which failed parsing
1.2.0
-
Fix Group membership checks to include full identity set
-
Unauthed use of restricted APIs no longer produces (incorrect) 403s, but 401s instead
-
Index Locking. When data is being reindexed by Search (e.g. because of a requested update to schema information), the index will now enter a Locked state.
-
Previously, writes were allowed but had a risk of being discarded by the reindex operation.
-
While an index is Locked, attempts to write to it will return 409 Conflict Errors. Any impacted operations have had their documentation pages updated.
-
-
Unicode-aware Sorting. Sorts on text fields containing non-ascii characters should now better reflect typical character orderings.
-
This supports all unicode text fields.
-
There are known cases where language-agnostic unicode sorting differs from typical phonebook ordering for a specific language. These are not bugs in Search.
-
1.1.1
-
In certain situations, Index IDs were not being treated equivalently to Index Names for permissions checks. Using Index IDs should now work correctly for APIs which incorrectly returned 403 errors.
1.1.0
-
Add support for Delete-by-Query operations
-
Delete-by-Query requires
adminprivileges -
This operation can delete documents which are not visible to the caller, so it should be used with great care. Please read the documentation carefully before using
-
-
All indices are now reachable using their Index ID value in place of the
<index_name>— this is now the preferred method of reaching an index-
All operations will continue to work normally with the current
index_namevalues -
Simply
GET /v1/index/<index_name>and look at the resulting Index ID value to get the ID of an index for which you know the name. At the bottom of these notes, we provide an example of doing this -
In a future version, we plan to remove the uniqueness constraint on
index_nameand make it an editable display name field for indices. At that time it will cease to be possible to resolve anindex_nameto anindex_idvalue
-
-
A new namespace has been added to Globus Search under
/unstable/(as opposed to/v1/). Such APIs will not be included in our documentation or release notes, and may change without warning. They are for internal use only.
1.0.1
-
Fix the advanced query parsing’s handling of spaces in parenthesized expressions. The bugfix in v1.0.0 introduced failures on expressions like
foo ( bar)and(foo ) bar. These should now parse correctly
1.0.0
-
Fix the advanced query parsing’s handling of operators applied to parenthesized expressions. Expressions like
foo (bar baz)^2should now parse correctly
0.4.1
-
Fix the handling of operators inside of field values in advanced query parsing. Expressions like
foo:(bar && baz)should now parse correctly
-
Enforce size limits on indices — each index is now limited to a total size
-
If your quota is too low, please contact us about raising it
-
All current indices should be well within their quotas
-
If you fill your quota, you may notice that your usage may mildly exceed your stated quota. This is not a bug. Search can’t accurately evaluate the storage cost of documents until they are stored, so quota enforcement is done by checking if you have exceeded your quota.
-
-
Add an API endpoint for getting data about indices, including their current quota and usage
-
This is a simple GET call which returns a GSearchIndex document
-
0.4.0
-
GMetaEntry.visible_tois now required to only contain "public" or Principal URNs-
Other values will cause 400 BadRequest errors due to a malformed document
-
-
Users are no longer prevented from writing/deleting one another’s
GMetaEntrydocuments-
If two users,
BobandAlice, both ingestGMetaEntrydocuments with the samesubjectandidvalues (missing ornullvalues included), the last write will win! Only one document will be created. Previously, one document would be created for each user
-
-
GMetaEntry.idvalues may no longer contain the character !. We have plans to give this character special meaning in the future, and are considering it a reserved character in this specific context henceforth
0.3.0
-
No longer works with
datasearch-clientversions 0.1.0 and lower. Please ensure that if you are using thesearch-client, you are using v0.2.0 of that library.-
The
search-clientwas renamed in v0.2.0 fromdatasearch-client, which is why both names are written here.
-
search-client do not, and are not meant to, match
the versions of the Search API. Any similarities in version numbers are purely
incidental.
-
Drop support for calls to
/v1/<index_name>/*. Calls to index-oriented APIs (Query, Ingest, Entry Operations) must always be written as/v1/index/<index_name>/*. This was the preferred convention referred to in v0.2.0 -
Support for the
urn:globus:auth:scope:datasearch.api.globus.org:allscope, deprecated in v0.2.0, is being dropped.
-
Sorting and Faceting on long field contents now works
-
We have repaired a bug regarding support for long field values. This applies to the contents of single fields, not the depth or length of their field names. i.e. In the document {"a": "b"}, this refers to "b".
-
Values longer than 10000 characters will not be included in Facet results. They are also considered "last" by Sorting, regardless of their "true" sort ordering.
-
-
New Preferred Syntax for
visible_to. Values invisible_toother than "public" should now be qualified in the Principal URN format.-
Existing
visible_toentries have been upgraded, so you do not need to reindex your data.
-
-
Begin renaming resource_type to query_template. We feel this name more accurately represents the meaning/usage of this parameter. The current changes are carefully kept backwards compatible, but we recommend transitioning all usage to the newer forms.
-
Add new parameter, query_template which is a rename of resource_type to GET /v1/<index_name>/search. We recommend starting to use query_template for GET-style searches, as resource_type will be dropped in an upcoming release
-
Add a new @version for GSearchRequest documents, 2017-09-01. We intend to drop support for the 2016-11-09 versioned documents in a future release
-
GSearchRequest version 2017-09-01 takes query_template as an attribute, in lieu of resource_type
-
Unversioned GSearchRequest documents currently are treated as version 2016-11-09. We will change this in a future release
-
-
Add a new APIs for fetching Query Templates These are unauthenticated; query template contents are considered publicly readable.
-
GET /index/<index_name>/query_template/<template_name> can be used to lookup an existing query template.
-
GET /index/<index_name>/query_template can be used to get a list of query templates associated with an index.
-
-
Numerous enhancements to error output for debugging purposes
-
Internal robustness and stability improvements
0.2.0
-
Drop support for calls to
/v1/searchand/v1/ingest. Calls now must always be qualified with a relevant index name. The preferred new form is/v1/index/<index_name>/searchand/v1/index/<index_name>/ingest. -
A number of conditions which caused malformed advanced-mode queries to trigger 500-class errors now produce (more correct) 400-class errors
-
Advanced mode queries now require that the following characters be escaped with a preceding
\character in fieldnames:.:+-()*\/Additionally, spaces must be backslash-escaped -
Any documents specifying a fieldname for use must escape any dots contained in the fieldname. No other special characters should be escaped, ONLY
.. This applies to GBoost, GFacet, GFilter, GSort
-
Advanced mode queries support the use of
.as a path separator. Given the document
{
"a": {
"b": 1
},
"a.b": 2
}
we take a.b to refer to the value 1, and a\.b to refer to the value 2.
-
Documents specifying fieldnames can use
.as a path separator, with the same meaning as in advanced queries -
Add sorting functionality to structured queries, using the new GSort document type within the GSearchRequest document.
-
Add new Entry Operations APIs and Subject Operations APIs
-
Includes support for deletion of metadata, requiring only that you are allowed to index data — no new permissions control these operations yet
-
-
Fieldnames are no longer required to be URIs. Any JSON document is now a valid GMetaContent document
-
Add new documentation pages, which we will be updating regularly
-
Add support for new scope names,
urn:globus:auth:scope:search.api.globus.org:all,urn:globus:auth:scope:search.api.globus.org:search,urn:globus:auth:scope:search.api.globus.org:ingest-
The
…:searchscope can only be used for Searches — not for Ingesting data or the new entry and subject operations -
The
…:ingestscope can only be used for ingesting and the new entry and subject operations, not for Searches -
urn:globus:auth:scope:datasearch.api.globus.org:allis still supported, but considered deprecated. It will be supported at least until version 0.3.0, but you should begin moving off of it
-
-
Internal stability and security fixes
-
Internal changes and bugfixes to data storage layer
-
Simplify several error messages and make them clearer