Introduction
Before you begin, we recommend perusing the DeepAffex Developer Guide so that you have a basic understanding of NuraLogix's DeepAffex technologies and terminologies. Please be sure to read the first two chapters - Introduction and Getting Started.
The Web Measurement Service is designed for a simple use-case, explained in the scenario described below.
Scenario overview and concepts
The user visits your website hosting a single-page application (called "app" hereafter).
In the field, the app (which you develop) will manage:
- user authentication
- user consent
- collecting subject's profile information and
- collecting answers to subject's medical history questionnaire
- obtaining a token and a refresh token from the DeepAffex API
Then, the app will redirect the user to WMS with the profile information that is necessary to take a measurement. On WMS, the user will complete a measurement and then WMS will redirect the user back to the app with the results of the measurement.
Information will be passed from the app to WMS through a specially crafted URL (the "call-in" URL). Since this URL will contain personal information, it will be encrypted so that only a specially configured WMS will be able to read the information. Additionally, for the app to link the measurements results to the user's profile, a unique Partner ID will also be passed along with the user profile details to WMS.
The measurement results will be passed back via a preconfigured "callback" URL.
Measurement Flow (Two-Way Encryption)
The details of the measurement flow described above are captured in the following diagram.
sequenceDiagram autonumber participant TPAPI as Third-party Cloud participant APP as Third-party app participant WMS as Web Measurement Service participant DFX as DeepAffex API APP->>+TPAPI: Request short-lived DFX_AUTH_TOKEN TPAPI->>+DFX: Request short-lived DFX_AUTH_TOKEN DFX-->>-TPAPI: Issue short-lived DFX_AUTH_TOKEN & DFX_REFRESH_TOKEN TPAPI-->>-APP: Return short-lived DFX_AUTH_TOKEN & DFX_REFRESH_TOKEN Note over APP: PROFILE_DATA { "identifier": [PartnerID], "height": 175, "weight": 75, ... } APP->>APP: Generate SESSION_ID APP->>TPAPI: Send PROFILE_DATA for encryption TPAPI->>TPAPI: Encrypt PROFILE_DATA with WMS public key TPAPI->>TPAPI: Sign PROFILE_DATA with client private key TPAPI-->>APP: Encrypted and signed PROFILE_DATA APP->>APP: Construct WMS call-in URL Note over APP,WMS: WMS_URL: https://awe.na-east.nuralogix.ai/c/[CONFIG_ID]/[PROFILE_DATA]/[DFX_AUTH_TOKEN]/[DFX_REFRESH_TOKEN]/[SESSION_ID] APP->>WMS: Call WMS at WMS Call-in URL WMS->>WMS: Verify with client public key WMS->>WMS: Decrypt PROFILE_DATA with WMS private key WMS->>DFX: Forward DFX_AUTH_TOKEN & DFX_REFRESH_TOKEN loop Until measurement is successful WMS->>DFX: Create Measurement DFX-->>WMS: Return MeasurementID WMS->>DFX: Subscribe Results activate DFX loop Until all payloads are sent WMS-)DFX: Add Data DFX--)WMS: Send Results end deactivate DFX end WMS->>WMS: Encrypt with client public key WMS->>WMS: Sign with WMS private key WMS-->>APP: Signed and encrypted measurement results APP->>APP: Verify with WMS public key APP->>APP: Decrypt results with client private key Note over WMS,APP: https://thirdparty.com/example/measurementComplete?results=<<encrypted and signed results>>
(Click here to open a larger version of this diagram in a new window)
Measurement Flow (Legacy Encryption)
The details of the measurement flow described above are captured in the following diagram.
sequenceDiagram autonumber participant TPAPI as Third-party Cloud participant APP as Third-party app participant WMS as Web Measurement Service participant DFX as DeepAffex API APP->>+TPAPI: Request short-lived DFX_AUTH_TOKEN TPAPI->>+DFX: Request short-lived DFX_AUTH_TOKEN DFX-->>-TPAPI: Issue short-lived DFX_AUTH_TOKEN & DFX_REFRESH_TOKEN TPAPI-->>-APP: Return short-lived DFX_AUTH_TOKEN & DFX_REFRESH_TOKEN Note over APP: PROFILE_DATA { "identifier": [PartnerID], "height": 175, "weight": 75, ... } APP->>APP: Generate SESSION_ID APP->>APP: Encrypt PROFILE_DATA with public key and construct WMS URL Note over APP,WMS: WMS_URL: https://awe.na-east.nuralogix.ai/c/[CONFIG_ID]/[PROFILE_DATA]/[DFX_AUTH_TOKEN]/[DFX_REFRESH_TOKEN]/[SESSION_ID] APP->>WMS: Call WMS at WMS_URL WMS->>WMS: Decrypt PROFILE_DATA with private key WMS->>DFX: Forward DFX_AUTH_TOKEN & DFX_REFRESH_TOKEN loop Until measurement is successful WMS->>DFX: Create Measurement DFX-->>WMS: Return MeasurementID WMS->>DFX: Subscribe Results activate DFX loop Until all payloads are sent WMS-)DFX: Add Data DFX--)WMS: Send Results end deactivate DFX end WMS-->>APP: Send MeasurementID and Results back through CALLBACK_URL (SESSION_ID in Results) Note over WMS,APP: https://thirdparty.com/example/measurementComplete?results=<<base64encoded>>
(Click here to open a larger version of this diagram in a new window)