Skip to content

Releases: Materials-Consortia/OPTIMADE

OPTIMADE v1.2.0

10 Jun 16:32
6358fc2
Compare
Choose a tag to compare

This release adds significant but optional new functionality to the specification; it also provides several clarifications to existing behaviour.

Minor OPTIMADE releases are always intended to be backwards-compatible for clients, meaning that any client code written for v1.1 should continue to work. Although the majority of features added in this release are optional for servers, there are a couple of mandatory format additions that are discussed below in the notes for implementations. We have clarified our approach to versioning explicitly in the specification under Versioning of this standard.

For a more academic summary of the changes, please see our paper: 10.1039/D4DD00039K.

In addition to the specification document itself, machine-readable schemas from this repository can now be found hosted at schemas.optimade.org, and HTML builds of the specification can be found at specification.optimade.org.

New features

  • Property definitions (#376): A new section titled Property Definitions has been added to the specification which significantly extends the way in which implementations can define and describe the custom properties they serve, including URIs, unit definitions, API support levels (for querying and sorting) as well as full support for JSON Schema constructs for describing the JSON representation of the property. These definitions form the basis of a new machine-readable form of the OPTIMADE specification found in the main repository and served at schemas.optimade.org.
  • Namespace prefixes for definitions (#473): The mechanism for providers to define custom properties under their own namespace/prefix has been extended to allow implementations to share common definitions. These so-called definition namespaces can be registered as providers in their own right and can serve property definitions in the new format.
  • Partial data (#467): Adds a mechanism and format for streaming, paginating or slicing individual properties within entries.
  • Per entry/property metadata (#463): Added a mechanism for providing metadata specific to a given entry or property.
  • Files endpoint (#360): The files entry type has been added to provide a robust way of linking entries to arbitrary file-based data relevant to the entry, such as alternative crystal structure representation formats, input or output files from computational procedures, or experimental data files.
  • Symmetry operation specification and space group fields (#480, #405, #464): Several fields have been added to the structures entry type to fully describe symmetry. Symmetry operations can be provided explicitly in space_group_symmetry_operations_xyz, as well as space group specifications in various forms: space_group_symbol_hall, space_group_symbol_hermann_mauguin, space_group_symbol_hermann_mauguin_extended, space_group_it_number.
  • Database licenses (#414,#497): Several fields have been added to programmatically describe the licensing status of data served by OPTIMADE APIs. A database-wide license can be provided as a set of SPDX identifiers in available_licenses, with a related field available_licenses_for_entries specifying specifically which licenses apply to individual entries and other non-substantial extracts from the database for cases where these differ from the database-wide licenses. The global field license can be used point to a human-readable license page (external or otherwise) that explains any caveats to the licensing arrangement.
  • Database metadata field (#424): Added an additional metadata field database for providing a human-readable description of a given database.
  • Backoff time (#411): Databases can now request ahead of time that clients apply a particular rate limit or back-off time via the request_delay metadata field.

Patches

  • Fuzzy comparisons on lists (#415): String comparisons like CONTAINS, STARTS WITH and ENDS WITH are now compatible with list filter operations like HAS, HAS ALL etc.
  • Boolean values (#348): Boolean values were overlooked in the first version of the filter grammar as no OPTIMADE fields required them. This functionality has been introduced for boolean fields using the syntax TRUE and FALSE. Only strict equality (=) and inequality (!=) comparisons on individual fields are supported.
  • Compatibility with JSON:API v1.1 (#461): References to JSON:API v1.0 have been updated to v1.1.
  • Typo, formatting and code snippet fixes.

Notes for implementations

As discussed above, the majority of this release involves the addition of more expressive metadata fields for property definitions, definition namespaces shared across providers, and licensing information, as well as mechanisms for serving files and partial data responses (for large entries, e.g., giant structures). We hope that the machine-readable schemas and property definitions now available at schemas.optimade.org will make implementing the specification much easier.

The mandatory format changes required to support v1.2 are limited to the following:

  • /info/<entry_type> endpoints MUST now have a top-level id and type field, e.g., the /info/structures MUST now serve {"id": "structures", "type": "info"}. This is for compliance with JSON:API and their previous omission should be treated as a specification bug.
  • In cases where a server implementation treats filters on non-prefixed but unknown OPTIMADE fields as errors, implementations MUST update their known property list to handle new fields added to OPTIMADE in this version, such that they can continue to follow the expected behaviour for Handling unknown property names.

OPTIMADE v1.2.0-rc.2

12 Apr 09:38
7af7eb6
Compare
Choose a tag to compare
OPTIMADE v1.2.0-rc.2 Pre-release
Pre-release

This is the final release candidate before v1.2.0; further changes are not expected to the the content of the specification at this point.

The full changelog can be found on GitHub at https://github.com/Materials-Consortia/OPTIMADE/v1.2.0-rc.2/develop/CHANGELOG.md, and an HTML build of the specification is available at https://optimade.org/specification.

OPTIMADE v1.2.0-rc.1

23 Dec 21:22
9b8f923
Compare
Choose a tag to compare
OPTIMADE v1.2.0-rc.1 Pre-release
Pre-release

v1.2.0-rc.1 (December 2022)

This is the first release candidate of v1.2.0 of the OPTIMADE API specification.
It should contain all of the new features in the specification, but their implementation may be modified in the final release.

Note: The OpenAPI schemas distributed in ./schemas have not yet been modified with the new features 1.2.0.

This minor release adds significant but optional new functionality to the specification, as well as providing several clarifications to existing behaviour.

New features

  • Property definitions (#376).
    A new section titled Property Definitions has been added to the specification which significantly extends the way in which implementations can define and describe the custom properties they serve, including URIs, unit definitions, API support levels (for querying and sorting) as well as full support for JSON Schema constructs for describing the JSON representation of the property.
  • Files endpoint (#360).
    The /files endpoint and corresponding files entry
    type
    has been added to provide a robust way of linking entries to arbitrary file-based data relevant to the entry, such as alternative crystal structure representation formats, input or output files from computational procedures, or experimental data files.
  • Boolean values (#348).
    Boolean values were overlooked in the first version of the filter grammar as no OPTIMADE fields required them.
    This functionality has been introduced for boolean fields using the syntax TRUE and FALSE.
    Only strict equality (=) and inequality (!=) comparisons on individual fields are supported.
  • Fuzzy comparisons on lists (#415)
    String comparisons like CONTAINS, STARTS WITH and ENDS WITH are now compatible with list filter operations like HAS, HAS ALL etc.
  • Backoff time (#411):
  • Database licenses (#414):
  • Symmetry data (#405):

Full Changelog: v1.1.0...v1.2.0-rc.1

OPTIMADE v1.1.0

08 Jul 15:20
6f1e115
Compare
Choose a tag to compare

This is release v1.1.0 of the OPTIMADE API specification.

This is a minor release that primarily patches minor specification errors and introduces one new feature.

New features

  • The implementation field of the general meta response has been updated to include an issue_tracker field (#339).

Patches

  • The mass field of the species attribute for the structures entry type has been updated from a float to a list of floats (#344).
    • This was deemed a specification bug that now is fixed in both the specification text and the schemas.
    • Note: this could constitute a breaking change for software implemented to strictly adhere to the v1.0.0 specification.
  • The specification text has been clarified in several places without change of intended meaning.
  • Multiple typos, grammatical errors, and incorrect API examples have been fixed.
  • The OpenAPI schemas are now fully compliant with the Swagger validator.

OPTIMADE v1.0.0

01 Jul 18:59
39f2a88
Compare
Choose a tag to compare

This is release v1.0.0 of the OPTIMADE API specification.

The specification has undergone a few changes since v1.0.0-rc.2, some not backward compatible.

A few highlighted changes directly affecting the API:

  • Several changes related to version negotiation for future releases of the API have been added.

  • The API may now be served on both the unversioned and versioned URLs.

  • The top-level meta field has undergone major revision:

    • It is now mandatory, with a few mandatory subfields (e.g., api_version), and most other fields made optional.
    • A link to a schema may be provided.
    • It no longer contains an index_base_url, since this functionality is covered by root links in the /links endpoint.
  • The unit field for describing properties in the /info endpoints is now standardized to use the Unified Code for Units of Measure.

OPTiMaDe API v1.0.0-rc.2

29 Jun 17:28
d287734
Compare
Choose a tag to compare
Pre-release

This is release candidate 2 of v1.0.0 of the OPTiMaDe API specification.

The specification has undergone a few large changes since the previous pre-release, some not backward compatible.

A few highlighted changes directly affecting the API:

  • Our links object types served under /links have been re-specified to better fit how other resource objects are handled, and the links now also provide some guidance for clients that seek to aggregate results.
  • A new structure property nperiodic has been introduced to allow queries on number of periodic dimensions.
  • New ways have been created to specify atoms at unknown coordinates in structures as either "implicit" or attached to a site; the prior option to specify coordinates as null has been removed.
  • The info endpoint for an entry type can now optionally specify type information for properties.
  • Several minor specification bugs/inconsistencies have been fixed throughout the specification.

A few other highlighted changes:

  • OPTIMADE is now written with all capital letters, instead of the previous invented mixed-case form.
  • The schemas have been updated to reflect the latest changes and use updated text descriptions from the specification.
  • The handling of index meta-databases has been clarified and improved, especially in relation to the centrally provided one.

Many thanks to all contributors!

OPTiMaDe API v1.0.0-rc.1

06 Feb 22:05
94f04c0
Compare
Choose a tag to compare
Pre-release

This is release candidate 1 of v1.0.0 of the OPTiMaDe API specification.

The specification has undergone major changes since the last release, many of them not backward compatible.

A few highlighted changes directly affecting the API:

  • The filter language grammar has undergone several changes.
  • When/how properties are to be included/excluded in responses has changed (some are always present, some by default, others only when requested.)
  • Several minor specification bugs/inconsistencies have been fixed throughout the specification.

A few other highlighted changes:

  • The license for the specification is now CC-BY 4.0.
  • The source format is now reStructuredText (rst) rather than markdown, primarily to simplify toc, cross references, and section number handling.
  • The makefile has a few additional helpful targets (see top of GNUmakefile for info).
  • The registry of known OPTiMaDe providers is no longer part of the specification, it has been moved to a separate repository 'providers'.
  • With this release, README.md now encourages implementing the latest released version rather than the development version.

OPTiMaDe API v0.10.0

19 Jul 15:02
235f75e
Compare
Choose a tag to compare
OPTiMaDe API v0.10.0 Pre-release
Pre-release

This is the v0.10.0 release of OPTiMaDe.

The specification has undergone major changes, some of them backwards incompatible.

Some select important changes:

  • Standardization of structural information (atom positions, etc.) in structures
  • The filter language grammar have undergone large changes, with many new features added as optional.
  • All info endpoints are now located under /info/...
  • Support for links to other API base urls under /links/... used in particular to indicate subdatabases for the same provider.
  • New entry type: bibliographic references.
  • Possibility to indicate relationships between entries, e.g., to indicate references for a structure.

OPTiMaDe API v0.9.5

09 Jan 01:05
9601aa2
Compare
Choose a tag to compare
OPTiMaDe API v0.9.5 Pre-release
Pre-release

This is the initial public release of the OPTiMaDe API.