improved

Behaviour change for Registry APIs

Registry APIs now support asynchronous processing with status indicators and global task IDs for workflows.

Breaking Changes

New status for registry operations

The behaviour of the Registry APIs has changed to support asynchronous processes. The response payload for all POST, PUT and DELETE endpoints will now include a status property.

{
   status: 'ACCEPTED' | 'PERSISTED'
   ...aditional metadata
}
  • ACCEPTED indicates that the request was captured and an asynchronous workflow has started.
  • PERSISTED indicates that the request is completed and the data has been persisted.

The bulk, bundle and purge endpoints will now return a taskId property in addition to their workflow IDs. This means that bulkId and purgeId will live side-by-side with a global taskId for the time being.

Eventually, these legacy IDs will be deprecated and only the global taskId will be supported.

New payload for single registry operations

When creating or upserting a single resource or relationship, the record data is now nested within a resource object in the response payload instead of being at the root-level.

// Previous response payload
{
  "data": {},
  "id": "abc",
  "meta": {}
}

// Current response payload
{
  "resource": {
    "data": {},
    "id": "abc",
    "meta": {}
  },
  "status": "PERSISTED"
}

Updated format for partition record/relationship source identifiers

A partition record/relationship often contains source identifiers in the meta.identifier section, pointing back to the source records/relationships that make it up. The previous convention for those identifiers was the following:

{
  "identifier": [
    {
      "system": "{sourceKey}",
      "value": "{sourceId}",
      "use": "source"
    }
  ]
}

// Example 
{
  "identifier": [
    {
      "system": "source-a",
      "value": "1234567890",
      "use": "source"
    }
  ]
}

The source identifier convention has been updated to provide more information about the source record or relationship. The new expected format is:

{
  "identifier": [
    {
      "system": "source",
      "value": "{sourceId}",
      "use": "{sourceKey}.{sourceRecordType}"
    }
  ]
}

// Example
{
  "identifier": [
    {
      "system": "source",
      "value": "1234567890",
      "use": "source-a.organization"
    }
  ]
}

Features

  • Adds option to use clinia models in the ingestion pipeline for chunking and embedding data

Improvements

  • Improvements in propagation performance of relationships from source to MDM to partitions.
  • Improved search performance for data partitions with better indexing
  • Clearer error messages for purge operations
  • Improve the consistency of relationship identifiers in GET endpoints and query filters