How resources are retrieved from Spine endpoints using the ReST API

Read Interaction

As per the FHIR spec, the read operation is a simple HTTP GET request, with the ID of the resource in the URL:

Request Example

GET[resourceType]/[id] /HTTP1.1

The ID is the unique ID of the resource on Spine - this will have been returned from a create or search interaction.

Response Example

Assuming the resource exists on Spine it will be returned in the HTTP response, with a 200 response code:

Date: Fri, 25 May 2018 16:09:50 GMT
Last-Modified: Fri, 25 May 2018 16:09:50 GMT
ETag: W/"25777f7d-27bc"

  "resourceType": "Subscription",
  "id": "ea0a4851-8720-4b49-b978-bdcf7102388c",
  "meta": {
    "lastUpdated": "2018-05-25T16:09:50+00:00",
    "versionID": "25777f7d-27bc",
    "profile": [

Caching READs

When a client does a READ operation to access a specific resource by ID, it may choose to include an If-None-Match header to specify the version ID of the latest version they have of that resource (see the versioning page for details of version IDs) - for example:

If-None-Match: W/"25777f7d-27bc"

If the version ID specified in the HTTP header matches the latest held on Spine, a HTTP 304 Not Modified status code will be returned to inform the client that they already have the latest version:

HTTP/1.1 304 Not Modified
Date: Mon, 18 Sep 2015 22:20:01 GMT

If a newer version of the resource does exist, it will be returned as normal, with the newer versionID as described above so the client can update its cache.

Similarly, a client can query for updates that have a Last-Modified data newer than the last time they queried, by specifying a date in an If-Modified-Since HTTP header:

If-Modified-Since: Wed, 21 Oct 2015 07:28:00 GMT
Tags: rest fhir