Creating a release candidate procedure
The syndication server, Atomio, can clone a syndication feed and keep a static copy.
Timing of this snapshot must be coordinated with all the affected content owners/approvers for the Authoring server to ensure they are not part way through setting syndication status on resources – i.e. their current syndicated resources on the Authoring server represent a stable state.
Prerequisites
The following prerequisites are required
- The syndication server must have network connectivity to the Authoring server’s syndication endpoint
- The syndication server must have a configured set of client credentials enabling it to read the Authoring server’s syndication endpoint, refer to Configure the syndication server to create release candidates. If FHIR security labels are in use on the Authoring server, it is necessary to grant these credentials read access to all security labels in use on resources that should be included in the snapshot.
- A set of client credentials with write access to the syndication server
Procedure
This process is intended for Administrators, and can be automated. Presently there is no user interface for this feature, therefore if performed manually a tool such as Postman could be used. The documentation below describes the necessary requests using cURL, which can be imported into Postman.
Get a bearer token
The following cURL command gets a bearer token from the authorisation server.cURL command to get a bearer token
curl --location --request POST 'https://authorisation-server/auth/realms/realm-name/protocol/openid-connect/token' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --data-urlencode 'grant_type=client_credentials' \ --data-urlencode 'client_id=XXX' \ --data-urlencode 'client_secret=YYY'
|
where the following placeholders require completion for the specific installation
authorisation-server | host name of the authorisation server for the solution |
realm-name | realm id for the solution |
XXX | client_id for the client credentials with appropriate access to the syndication server |
YYY | client_secret for the client credentials with appropriate access to the syndication server |
The response will include a JSON payload similar to the followingToken response
{ "access_token" : "AAA" , "expires_in" : 3600, "refresh_expires_in" : 1800, "refresh_token" : "BBB" , "token_type" : "bearer" , "not-before-policy" : 1601356578, "session_state" : "12bd48fc-5373-410b-a016-f208fc827095" , "scope" : "" }
|
Where “AAA” will be a long string of characters. This is the bearer token required in the next step.
Clone the Authoring server feed
The syndication server exposes a REST API call used to clone a syndication feed. This can be used to create a snapshot of the Authoring server’s syndication feed representing the approved content state in the server.
Inputs to this request are
- the URL of the syndication feed to clone
- the name to use to identify the new clone on the syndication server
The URL of the syndication feed to clone is the URL of the Authoring server’s syndication feed. The name used to identify the new cloned feed on the syndication server can be any name unique (not yet used) on the server. However it is useful to establish a convention which will help easily identify the release candidate feeds. A naming convention of “release-candidate-YYYYMMDDThhmm” is recommended, so for example “release-candidate-20200815T1300” to indicate a release candidate taken at 1pm on the 15th of August 2020.
Below is an example of the REST call required to create a release candidate snapshotRelease candidate creation REST request
curl --location --request POST 'https://syndication-server/feed/$clone?name=release-candidate-20200815T1300&url=https://authoring-server/synd/syndication.xml' \ --header 'Authorization: Bearer AAA
|
where the following placeholders require completion for the specific installation
Placeholder | Required value |
syndication-server | host name of the syndication server |
authoring-server | host name of the Authoring terminology server to clone the feed from |
AAA | the bearer token taken from the earlier step |
Release candidate creation repsonse
{ "name" : "release-candidate-20200815T1300" , "url" : "https://syndication-server/feed/release-candidate-20200815T1300/syndication.xml" }
|