Skip to main content
Version: 12.10.0

WIP: Content Service

The content Services provides the App with informations about the look and feel. It will provide text as keys and informations about structure, feature-toggles etc.

To improve caching on client-side, the service will provide these information with an etag and supports the If-None-Match Header.

Content

Content is descriped in another Section

Flow

Caching

The client (mobile frontend) should not handle the data over and over again, the response from the content service will contain a Header-Field called etag containing a hash-value of the response.

In the request the app is able to set the If-None-Match Header field containing the etag of the last Response from the server, where the data is still available on the harddrive of the App. If the client-etag (send via the If-None-Match Header) and the remote etag (hash-value of the content) matches, the service will return an empty response with the Status-Code 304. If there is new data (etag does not match), the data will be returned with a 200 Status-Code.

Endpoints

This service provides three endpoints to control the way the App looks and feel to the enduser.

  1. config/version: This endpoint does not require any authentification and should be used to block the entry in the App, based on the Version number.
  2. config/login: This endpoint will be open to use without any authentification and will provide information about the App before Login, like available Insurances, Legal informations, text.
  3. config/app: This endpoint will be highly personalized and therefore the identity is needed to fulfill that.

version Endpoint

This endpoint is called on every App start to check if the Version is still allowed to enter the App. There are 2 states of restriction to an App:

  1. mandatory: This update must be done by the User, there is no way around this dialog - user must update
  2. non-mandetory: This dialog can be closed the update is just available and could be installed

login Endpoint

Besides the data that is published via the Headers, this Endpoint will normally respond with in a JSON Format. Top-Level Field will be descriped in different chapters.

{
"aok_selection": [ ... ],
"onboarding": { ... }
}

Onboarding

The onboarding field will provide information about the slider feature. For the first approach we will only control, if there is a skip button in the top right corner, or not.

{
"onboarding": {
"skip_button_displayed": true
},
...
}

AOK Selection

The field aok_selection will basically represent these Screens and the content that is displayed to the user. It contains all relevant informations about the AOK-Selection-Screen.

Used Strings in this format are localized and the key is send.

To receive the Screens like shown down below, a json like this must be provided:

AOK SelectionSelected AOKUnavailable AOK
selectionselectedunavailable
{
"aok_selection": [
{
"name": "plus_name",
"ik": "107299005",
"legal_links": [
{
"title_key": "plus_login_policy_title",
"url": "https://google.com"
},
{
"title_key": "plus_login_privacy_title",
"url": "https://google.com"
}
],
"login": {
"title_key": "plus_login_login_title",
"url": "https://dev-ey.navida-cloud.plus.aok.de/oauthbroker...",
"client_id" : "",
"redirect_url": "",
"scope" : "basic" ,
"format" : "json",
"response_type" : "code"
},
"register": {
"title_key": "plus_login_register_title",
"url": "https://dev-ey.navida-cloud.plus.aok.de/oauthbroker...",
"open_external": false
},
"text": "plus_login_text",
"guest": {
"title_key": "plus_login_guest_title"
}
},
{
"name": "bw_name",
"ik": "108018007",
"legal_links": [
{
"title_key": "bw_login_policy_title",
"url": "https://google.com"
},
{
"title_key": "bw_login_privacy_title",
"url": "https://google.com"
}
],
"login": {
"title_key": "bw_login_login_title",
"url": "https://dev-ey.navida-cloud.bw.aok.de/oauthbroker...",
"client_id" : "",
"redirect_url": "",
"scope" : "basic" ,
"format" : "json",
"response_type" : "code"
},
"register": {
"title_key": "bw_login_register_title",
"url": "https://dev-ey.navida-cloud.bw.aok.de/oauthbroker...",
"open_external": false
},
"text": "bw_login_text",
"guest": {
"title_key": "bw_login_guest_title"
}
},
{
"name": "other_name",
"text": "other_login_text",
}
],
...
}

app Endpoint

This Enpoint will use the selected AOK and user Info to generate the app content json. Top-Level Elements will descripe independent Sections within the App, if absent this section is not shown.

This config file will make use of the deeplinking functionality of the App. On click of cards, buttons etc. the desired deeplink will link to specific plugins and their Screens.

Data might be provided within the query parameter.

The structure is aligned with /login.

{
"activated_plugins": [ ... ],
"feed": { ... },
"features": { ... },
"your_area": { ... },
"settings": { ... }
}

Deeplinking

Example:

{
"type": "deeplink",
"link": "videoconsultation.navida.aok/details?id=12345"
}

This deeplink should link to the videoconsultation plugin. It should present the detail page of a specific Video-Consultation with the id 12345.

Discussion

Adding a schema might make it easier to automatically identify the host, and directly activate some sort of app functionality (to open the App). We could add navida:// as schema.

Json would then look like this:

{
"type": "deeplink",
"link": "navida://courses.navida.aok/details?id=12345"
}

Supported Sections

Home-Screen / FeedFeature PageMein BereichSettings
feedfeaturesmbereichsettings

Feature Page

The Feature Page will link to features, that the AOK activated and that the aok wants to display. The data-Items remain the same, and can be displayed in different sections, if an item is marked as login_required, the login page will be displayed.

The displayed Page should be represented by this structure:

{
"activated_plugins": [
"doctorsearch.navida.aok",
"mygoals.navida.aok",
...
],
"features": {
"show_logged_in_banner": true,
"sections": [
{
"title": "feature_stay_healthy_title",
"items": [
{
"title": "feature_doctor_search_card_title",
"icon": "https://assets.navida.de/123abc",
"card_style": "s",
"deeplink": {
"type": "deeplink",
"link": "navida://doctorsearch.navida.aok"
}
},
...
]
},
{
"title": "feature_stay_healthy_title",
"items": [
{
"title": "feature_doctor_search_card_title",
"icon": "https://assets.navida.de/123abc",
"card_style": "s",
"deeplink": {
"type": "deeplink",
"link": "navida://doctorsearch.navida.aok"
}
},
{
"title": "Stay strong Training - specific trainig",
"icon": "https://assets.navida.de/123abc",
"card_style": "s",
"deeplink": {
"type": "deeplink",
"link": "navida://courses.navida.aok/detail?id=stay_strong"
}
},
...
]
},
]
},
...
}