▶️Introduction

You can integrate with FibriCheck Cloud in 3 ways:

SDK

By default the SDK's will connect to the production environment. Please make sure to point the SDK to the development environment for developing and testing your integration. You can find more information on how to configure this below.

This package serves as a Flutter wrapper around all FibriCheck cloud services.

To get started with the FibriCheck SDK you'll need to install it, and then get credentials which will allow you to access the backend.

Installation

In your project, you can add the package below to the pubspec.yaml file. Replace {TOKEN} with your personal access token. You can get a new one here. Make sure you enable the repo scope.

   flutter_fibricheck_sdk:
     git:
       url: https://{TOKEN}@github.com/fibricheck/flutter-sdk
       ref: v1.0.0

Quick Start

Make sure to correctly initalise the client to connect against the correct environment (development or production)

import 'package:flutter_fibricheck_sdk/flutter_fibricheck_sdk.dart';

// To use the FibriCheck development environment
_sdk = FLFibriCheckSdk.client("<consumerKey>", "<consumerSecret>", "dev");

// To use the FibriCheck production environment
_sdk = FLFibriCheckSdk.client("<consumerKey>", "<consumerSecret>");

await _sdk.authenticateWithEmail(
      ParamsOauth1WithEmail(email: "email", password: "password"),
      (consents) {
        _onConsentNeeded(consents);
      },
    );

The client method (default export) supports several options you may set to achieve the expected behavior:

For the env, Env.dev or Env.production enumeration from the library flutter_fibricheck_sdk can be used.

API

When you initialize the sdk, the returned object will have the following methods available.

class FLFibricheckSDK {
  /// Create an account based on a [UserRegisterData] object
  /// and returns [UserData] of the created user
  ///
  /// can throw [EmailUsedError]
  Future<UserData> register(UserRegisterData data) async {}
  
  /// Authenticate with an [ParamsOauth1WithToken] object and returns a
  /// [TokenDataOauth1] object
  ///
  /// can throw [ApplicationNotAuthenticatedError], [AuthenticationError],
  ///  [LoginTimeoutError], [LoginFreezeError], [TooManyFailedAttemptsError], [MfaRequiredError]
  Future<TokenDataOauth1> authenticateWithToken(
      ParamsOauth1WithToken credentials, void Function(List<Consent> consents) onConsentNeeded) async {}
  
  /// Authenticate with an [ParamsOauth1WithEmail] object and returns a
  /// [TokenDataOauth1] object
  ///
  /// can throw [ApplicationNotAuthenticatedError], [AuthenticationError],
  ///  [LoginTimeoutError], [LoginFreezeError], [TooManyFailedAttemptsError], [MfaRequiredError]
  Future<TokenDataOauth1> authenticateWithEmail(
      ParamsOauth1WithEmail credentials, void Function(List<Consent> consents) onConsentNeeded) async {}
  
  /// Clears oauth session data
  bool logout() {}
  
  /// Gives consent based on a [Consent] object
  /// Returns the number of affected records
  Future<int> giveConsent(Consent consent) async {}
  
  /// Send a measurement to the cloud
  Future<Measurement> postMeasurement(MeasurementCreationData measurementCreationData, String cameraSdkVersion) async {}
  
  /// Check if the user is entitled to perform a measurement
  Future<bool> canPerformMeasurement() async {}
  
  /// Updates the measurement context for a given measurement id
  Future<int> updateMeasurementContext(String measurementId, MeasurementContext measurementContext) async {}
  
  /// Update the user profile of the [userId] provided
  /// with the given [ProfileData] and returns the number of affected records
  Future<int> updateProfile(ProfileData updateData) async {}
  
  /// Get a measurement based on a [measurementId]
  Future<Measurement> getMeasurement(String measurementId) async {
  
  /// Get all measurements of the current user
  Future<PagedMeasurementResult> getMeasurements(bool newestFirst) async {}
  
  /// Returns a measurement report url for the given measurement id
  /// or creates one if it not yet exists.
  Future<String> getMeasurementReportUrl(String measurementId) async {}
  
  /// Returns a list of periodic reports
  Future<PagedPeriodicReportsResult> getPeriodicReports(bool newestFirst) async {}
  
  /// Returns the pdf of a periodic report as a string
  Future<String> getPeriodicReportPdf(String reportId) async {}
  
  ///Activates a prescription hash, so the user can perform a measurement
  Future activatePrescription(String hash) async {}
  
  /// Return the general configuration as a [GeneralConfiguration].
  Future<GeneralConfiguration> getGeneralConfiguration() async {}
  
  /// Return the user configuration as a [UserConfiguration].
  Future<UserConfiguration> getUserConfiguration() async {}
  
  /// Update the user with the id [userId] configuration.
  /// The [key] is the key where to save the value for the user.
  /// The [value] is an object that can be jsonEncoded.
  /// Return true if the update was done successfully.
  Future<bool> updateUserConfig(String key, Object value) async {}
}

REST API

FibriCheck offers a REST API to integrate FibriCheck in your application. A public Postman workspace is available where you can see and try-out all the relevant endpoints.

This workspace also contains an environment named FibriCheck Development that contains all the variables that are needed for the different API calls.

The variables consumerKey, consumerSecret, email and password need to be filled in before doing any API calls.

The accessToken and tokenSecret values are automatically filled in when performing the authentication call that is available as a request.

All variables that have the var_ prefix differ depending on the context and authenticated user.

Last updated