Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

The Key/Value store is available for storing properties and configuration values that does not fit into the FHIR based infrastructure.
Keys and values stored in this service SHALL NOT contain any clinical or personal sensitive information.

Vendor access

Access is granted to:

  • System users (called from BFF’s), per vendor registered as a client on Keycloak.
    Can create/modify/read:

    • Client data

    • Own user specific data

    • User data of any user usage of the client

  • Users (called from both BFF’s and client)

    • Can create/modify/read own user specific data

      • NOTE: Also modifiable by client associated system users.

    • Can read client specific data

Initial configuration (to be done by infrastructure team)

Vendors must contact operations to gain access with the following information:

  • realm

  • client id

  • system users

    • Multiple system users can access data for the client and it’s users

    • System users can access data for multiple clients and it’s users

Swagger open api macro
openapi: 3.0.1
info:
  title: API
  description: System resource and user storage with per key defined media type.
servers:
- url: https://kvstore.inttest.ehealth.sundhed.dk/kvstore/api
  variables: {}
- url: https://kvstore.exttest.ehealth.sundhed.dk/kvstore/api
  variables: {}
paths:
  /{realm}/property/{id}:
    get:
      summary: Returns the value to which the specified key or resource id is mapped.
      operationId: get
      parameters:
      - name: realm
        in: path
        description: Athentication realm
        required: true
        schema:
          type: string
        example: ehealth
      - name: id
        in: path
        description: 'The resource id whose associated value is to be returned '
        required: true
        schema:
          type: integer
          format: int32
        example: 432
      responses:
        "401":
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Defines the authentication method that should be used to
                gain access to a resource.
              style: simple
        "404":
          description: Not Found - The requested resource was not found.
        "200":
          description: Success
          headers:
            ETag:
              description: ETag version information to be used as If-Match header
                value on updates for optimistic locking support.
              style: simple
          content:
            text/plain: {}
            application/json: {}
            application/xml: {}
    put:
      summary: Replaces the value to which the specified key or resource id is mapped.
      description: The key or resource id must exists (been created by means of a
        POST). <br>It is not posible to change the media type.
      operationId: update
      parameters:
      - name: If-Match
        in: header
        description: 'Optional version precondition check. Use the ETag header value
          of a previous POST, GET, PUT to do optimistic locking '
        schema:
          type: string
        example: version32
      - name: realm
        in: path
        description: Athentication realm
        required: true
        schema:
          type: string
        example: ehealth
      - name: id
        in: path
        description: 'The resource id whose associated value is to be returned '
        required: true
        schema:
          type: integer
          format: int32
        example: 432
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                value:
                  type: string
      responses:
        "401":
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Defines the authentication method that should be used to
                gain access to a resource.
              style: simple
        "404":
          description: Not Found - The requested resource was not found.
        "201":
          description: No content - New value accepted
          headers:
            ETag:
              description: ETag version information to be used as If-Match header
                value on updates for optimistic locking support.
              style: simple
        "412":
          description: Precondition Failed - Optimistic locking error. Existing data
            has changed since last read.
    delete:
      summary: Remove the value and key to which the specified key or resource id
        is mapped.
      operationId: delete
      parameters:
      - name: realm
        in: path
        description: Athentication realm
        required: true
        schema:
          type: string
        example: ehealth
      - name: id
        in: path
        description: 'The resource id whose associated value is to be returned '
        required: true
        schema:
          type: integer
          format: int32
        example: 432
      responses:
        "401":
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Defines the authentication method that should be used to
                gain access to a resource.
              style: simple
        "404":
          description: Not Found - The requested resource was not found.
        "201":
          description: No content - Resource deleted
  /{realm}/property/lookup:
    get:
      summary: Returns the value to which the specified key or resource id is mapped.
      operationId: get_1
      parameters:
      - name: realm
        in: path
        description: Athentication realm
        required: true
        schema:
          type: string
        example: ehealth
      - name: key
        in: query
        description: 'The key whose associated value is to be returned '
        required: true
        schema:
          type: string
        example: my-key
      responses:
        "401":
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Defines the authentication method that should be used to
                gain access to a resource.
              style: simple
        "404":
          description: Not Found - The requested resource was not found.
        "200":
          description: Success
          headers:
            ETag:
              description: ETag version information to be used as If-Match header
                value on updates for optimistic locking support.
              style: simple
          content:
            text/plain: {}
            application/json: {}
            application/xml: {}
    put:
      summary: Replaces the value to which the specified key or resource id is mapped.
      description: The key or resource id must exists (been created by means of a
        POST). <br>It is not posible to change the media type.
      operationId: update_1
      parameters:
      - name: If-Match
        in: header
        description: 'Optional version precondition check. Use the ETag header value
          of a previous POST, GET, PUT to do optimistic locking '
        schema:
          type: string
        example: version32
      - name: realm
        in: path
        description: Athentication realm
        required: true
        schema:
          type: string
        example: ehealth
      - name: key
        in: query
        description: 'The key whose associated value is to be returned '
        required: true
        schema:
          type: string
        example: my-key
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                value:
                  type: string
      responses:
        "401":
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Defines the authentication method that should be used to
                gain access to a resource.
              style: simple
        "404":
          description: Not Found - The requested resource was not found.
        "201":
          description: No content - New value accepted
          headers:
            ETag:
              description: ETag version information to be used as If-Match header
                value on updates for optimistic locking support.
              style: simple
        "412":
          description: Precondition Failed - Optimistic locking error. Existing data
            has changed since last read.
    delete:
      summary: Remove the value and key to which the specified key or resource id
        is mapped.
      operationId: delete_1
      parameters:
      - name: realm
        in: path
        description: Athentication realm
        required: true
        schema:
          type: string
        example: ehealth
      - name: key
        in: query
        description: 'The key whose associated value is to be returned '
        required: true
        schema:
          type: string
        example: my-key
      responses:
        "401":
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Defines the authentication method that should be used to
                gain access to a resource.
              style: simple
        "404":
          description: Not Found - The requested resource was not found.
        "201":
          description: No content - Resource deleted
  /{realm}/properties:
    post:
      summary: Associates the specified value with the specified key or resource id
      operationId: create
      parameters:
      - name: realm
        in: path
        description: Athentication realm
        required: true
        schema:
          type: string
        example: ehealth
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                media-type:
                  type: string
                  default: TEXT
                  enum:
                  - TEXT
                  - JSON
                  - XML
                key:
                  type: string
                value:
                  type: string
      responses:
        "401":
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Defines the authentication method that should be used to
                gain access to a resource.
              style: simple
        "201":
          description: No content - New value create
          headers:
            ETag:
              description: ETag version information to be used as If-Match header
                value on updates for optimistic locking support.
              style: simple
            Location:
              description: Url to the create key/value
              style: simple
        "409":
          description: Conflict
  /{realm}/property/lookup/user:
    get:
      summary: Returns the value to which the specified key or resource id is mapped.
      operationId: get_2
      parameters:
      - name: realm
        in: path
        description: Athentication realm
        required: true
        schema:
          type: string
        example: ehealth
      - name: fhirId
        in: query
        description: Fhir user identifier
        required: true
        schema:
          type: string
        example: https://patient,exttest.ehealth.sundhed.dk/fhir/Patient/1234567
      - name: key
        in: query
        description: 'The key whose associated value is to be returned '
        required: true
        schema:
          type: string
        example: my-key
      responses:
        "401":
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Defines the authentication method that should be used to
                gain access to a resource.
              style: simple
        "404":
          description: Not Found - The requested resource was not found.
        "200":
          description: Success
          headers:
            ETag:
              description: ETag version information to be used as If-Match header
                value on updates for optimistic locking support.
              style: simple
          content:
            text/plain: {}
            application/json: {}
            application/xml: {}
    put:
      summary: Replaces the value to which the specified key or resource id is mapped.
      description: The key or resource id must exists (been created by means of a
        POST). <br>It is not posible to change the media type.
      operationId: update_2
      parameters:
      - name: If-Match
        in: header
        description: 'Optional version precondition check. Use the ETag header value
          of a previous POST, GET, PUT to do optimistic locking '
        schema:
          type: string
        example: version32
      - name: realm
        in: path
        description: Athentication realm
        required: true
        schema:
          type: string
        example: ehealth
      - name: fhirId
        in: query
        description: Fhir user identifier
        required: true
        schema:
          type: string
        example: https://patient,exttest.ehealth.sundhed.dk/fhir/Patient/1234567
      - name: key
        in: query
        description: 'The key whose associated value is to be returned '
        required: true
        schema:
          type: string
        example: my-key
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                value:
                  type: string
      responses:
        "401":
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Defines the authentication method that should be used to
                gain access to a resource.
              style: simple
        "404":
          description: Not Found - The requested resource was not found.
        "201":
          description: No content - New value accepted
          headers:
            ETag:
              description: ETag version information to be used as If-Match header
                value on updates for optimistic locking support.
              style: simple
        "412":
          description: Precondition Failed - Optimistic locking error. Existing data
            has changed since last read.
    delete:
      summary: Remove the value and key to which the specified key or resource id
        is mapped.
      operationId: delete_2
      parameters:
      - name: realm
        in: path
        description: Athentication realm
        required: true
        schema:
          type: string
        example: ehealth
      - name: fhirId
        in: query
        description: Fhir user identifier
        required: true
        schema:
          type: string
        example: https://patient,exttest.ehealth.sundhed.dk/fhir/Patient/1234567
      - name: key
        in: query
        description: 'The key whose associated value is to be returned '
        required: true
        schema:
          type: string
        example: my-key
      responses:
        "401":
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Defines the authentication method that should be used to
                gain access to a resource.
              style: simple
        "404":
          description: Not Found - The requested resource was not found.
        "201":
          description: No content - Resource deleted
  /{realm}/property/{id}/user:
    get:
      summary: Returns the value to which the specified key or resource id is mapped.
      operationId: get_3
      parameters:
      - name: realm
        in: path
        description: Athentication realm
        required: true
        schema:
          type: string
        example: ehealth
      - name: fhirId
        in: query
        description: Fhir user identifier
        required: true
        schema:
          type: string
        example: https://patient,exttest.ehealth.sundhed.dk/fhir/Patient/1234567
      - name: id
        in: path
        description: 'The resource id whose associated value is to be returned '
        required: true
        schema:
          type: integer
          format: int32
        example: 432
      responses:
        "401":
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Defines the authentication method that should be used to
                gain access to a resource.
              style: simple
        "404":
          description: Not Found - The requested resource was not found.
        "200":
          description: Success
          headers:
            ETag:
              description: ETag version information to be used as If-Match header
                value on updates for optimistic locking support.
              style: simple
          content:
            text/plain: {}
            application/json: {}
            application/xml: {}
    put:
      summary: Replaces the value to which the specified key or resource id is mapped.
      description: The key or resource id must exists (been created by means of a
        POST). <br>It is not posible to change the media type.
      operationId: update_3
      parameters:
      - name: If-Match
        in: header
        description: 'Optional version precondition check. Use the ETag header value
          of a previous POST, GET, PUT to do optimistic locking '
        schema:
          type: string
        example: version32
      - name: realm
        in: path
        description: Athentication realm
        required: true
        schema:
          type: string
        example: ehealth
      - name: fhirId
        in: query
        description: Fhir user identifier
        required: true
        schema:
          type: string
        example: https://patient,exttest.ehealth.sundhed.dk/fhir/Patient/1234567
      - name: id
        in: path
        description: 'The resource id whose associated value is to be returned '
        required: true
        schema:
          type: integer
          format: int32
        example: 432
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                value:
                  type: string
      responses:
        "401":
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Defines the authentication method that should be used to
                gain access to a resource.
              style: simple
        "404":
          description: Not Found - The requested resource was not found.
        "201":
          description: No content - New value accepted
          headers:
            ETag:
              description: ETag version information to be used as If-Match header
                value on updates for optimistic locking support.
              style: simple
        "412":
          description: Precondition Failed - Optimistic locking error. Existing data
            has changed since last read.
    delete:
      summary: Remove the value and key to which the specified key or resource id
        is mapped.
      operationId: delete_3
      parameters:
      - name: realm
        in: path
        description: Athentication realm
        required: true
        schema:
          type: string
        example: ehealth
      - name: fhirId
        in: query
        description: Fhir user identifier
        required: true
        schema:
          type: string
        example: https://patient,exttest.ehealth.sundhed.dk/fhir/Patient/1234567
      - name: id
        in: path
        description: 'The resource id whose associated value is to be returned '
        required: true
        schema:
          type: integer
          format: int32
        example: 432
      responses:
        "401":
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Defines the authentication method that should be used to
                gain access to a resource.
              style: simple
        "404":
          description: Not Found - The requested resource was not found.
        "201":
          description: No content - Resource deleted
  /{realm}/properties/user:
    post:
      summary: Associates the specified value with the specified key or resource id
      operationId: create_1
      parameters:
      - name: realm
        in: path
        description: Athentication realm
        required: true
        schema:
          type: string
        example: ehealth
      - name: fhirId
        in: query
        description: Fhir user identifier
        required: true
        schema:
          type: string
        example: https://patient,exttest.ehealth.sundhed.dk/fhir/Patient/1234567
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                media-type:
                  type: string
                  default: TEXT
                  enum:
                  - TEXT
                  - JSON
                  - XML
                key:
                  type: string
                value:
                  type: string
      responses:
        "401":
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Defines the authentication method that should be used to
                gain access to a resource.
              style: simple
        "201":
          description: No content - New value create
          headers:
            ETag:
              description: ETag version information to be used as If-Match header
                value on updates for optimistic locking support.
              style: simple
            Location:
              description: Url to the create key/value
              style: simple
        "409":
          description: Conflict
  /{realm}/user/property/{id}:
    get:
      summary: Returns the value to which the specified key or resource id is mapped.
      operationId: get_4
      parameters:
      - name: realm
        in: path
        description: Athentication realm
        required: true
        schema:
          type: string
        example: ehealth
      - name: id
        in: path
        description: 'The resource id whose associated value is to be returned '
        required: true
        schema:
          type: integer
          format: int32
        example: 432
      responses:
        "401":
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Defines the authentication method that should be used to
                gain access to a resource.
              style: simple
        "404":
          description: Not Found - The requested resource was not found.
        "200":
          description: Success
          headers:
            ETag:
              description: ETag version information to be used as If-Match header
                value on updates for optimistic locking support.
              style: simple
          content:
            text/plain: {}
            application/json: {}
            application/xml: {}
    put:
      summary: Replaces the value to which the specified key or resource id is mapped.
      description: The key or resource id must exists (been created by means of a
        POST). <br>It is not posible to change the media type.
      operationId: update_4
      parameters:
      - name: If-Match
        in: header
        description: 'Optional version precondition check. Use the ETag header value
          of a previous POST, GET, PUT to do optimistic locking '
        schema:
          type: string
        example: version32
      - name: realm
        in: path
        description: Athentication realm
        required: true
        schema:
          type: string
        example: ehealth
      - name: id
        in: path
        description: 'The resource id whose associated value is to be returned '
        required: true
        schema:
          type: integer
          format: int32
        example: 432
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                value:
                  type: string
      responses:
        "401":
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Defines the authentication method that should be used to
                gain access to a resource.
              style: simple
        "404":
          description: Not Found - The requested resource was not found.
        "201":
          description: No content - New value accepted
          headers:
            ETag:
              description: ETag version information to be used as If-Match header
                value on updates for optimistic locking support.
              style: simple
        "412":
          description: Precondition Failed - Optimistic locking error. Existing data
            has changed since last read.
    delete:
      summary: Remove the value and key to which the specified key or resource id
        is mapped.
      operationId: delete_4
      parameters:
      - name: realm
        in: path
        description: Athentication realm
        required: true
        schema:
          type: string
        example: ehealth
      - name: id
        in: path
        description: 'The resource id whose associated value is to be returned '
        required: true
        schema:
          type: integer
          format: int32
        example: 432
      responses:
        "401":
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Defines the authentication method that should be used to
                gain access to a resource.
              style: simple
        "404":
          description: Not Found - The requested resource was not found.
        "201":
          description: No content - Resource deleted
  /{realm}/user/property/lookup:
    get:
      summary: Returns the value to which the specified key or resource id is mapped.
      operationId: get_5
      parameters:
      - name: realm
        in: path
        description: Athentication realm
        required: true
        schema:
          type: string
        example: ehealth
      - name: key
        in: query
        description: 'The key whose associated value is to be returned '
        required: true
        schema:
          type: string
        example: my-key
      responses:
        "401":
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Defines the authentication method that should be used to
                gain access to a resource.
              style: simple
        "404":
          description: Not Found - The requested resource was not found.
        "200":
          description: Success
          headers:
            ETag:
              description: ETag version information to be used as If-Match header
                value on updates for optimistic locking support.
              style: simple
          content:
            text/plain: {}
            application/json: {}
            application/xml: {}
    put:
      summary: Replaces the value to which the specified key or resource id is mapped.
      description: The key or resource id must exists (been created by means of a
        POST). <br>It is not posible to change the media type.
      operationId: update_5
      parameters:
      - name: If-Match
        in: header
        description: 'Optional version precondition check. Use the ETag header value
          of a previous POST, GET, PUT to do optimistic locking '
        schema:
          type: string
        example: version32
      - name: realm
        in: path
        description: Athentication realm
        required: true
        schema:
          type: string
        example: ehealth
      - name: key
        in: query
        description: 'The key whose associated value is to be returned '
        required: true
        schema:
          type: string
        example: my-key
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                value:
                  type: string
      responses:
        "401":
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Defines the authentication method that should be used to
                gain access to a resource.
              style: simple
        "404":
          description: Not Found - The requested resource was not found.
        "201":
          description: No content - New value accepted
          headers:
            ETag:
              description: ETag version information to be used as If-Match header
                value on updates for optimistic locking support.
              style: simple
        "412":
          description: Precondition Failed - Optimistic locking error. Existing data
            has changed since last read.
    delete:
      summary: Remove the value and key to which the specified key or resource id
        is mapped.
      operationId: delete_5
      parameters:
      - name: realm
        in: path
        description: Athentication realm
        required: true
        schema:
          type: string
        example: ehealth
      - name: key
        in: query
        description: 'The key whose associated value is to be returned '
        required: true
        schema:
          type: string
        example: my-key
      responses:
        "401":
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Defines the authentication method that should be used to
                gain access to a resource.
              style: simple
        "404":
          description: Not Found - The requested resource was not found.
        "201":
          description: No content - Resource deleted
  /{realm}/user/properties:
    post:
      summary: Associates the specified value with the specified key or resource id
      operationId: create_2
      parameters:
      - name: realm
        in: path
        description: Athentication realm
        required: true
        schema:
          type: string
        example: ehealth
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                media-type:
                  type: string
                  default: TEXT
                  enum:
                  - TEXT
                  - JSON
                  - XML
                key:
                  type: string
                value:
                  type: string
      responses:
        "401":
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Defines the authentication method that should be used to
                gain access to a resource.
              style: simple
        "201":
          description: No content - New value create
          headers:
            ETag:
              description: ETag version information to be used as If-Match header
                value on updates for optimistic locking support.
              style: simple
            Location:
              description: Url to the create key/value
              style: simple
        "409":
          description: Conflict