Internal Data Flows
Request Flow
sequenceDiagram
    participant RP
    participant Blockchain
    participant IdP
    participant AS
    RP->>Blockchain: Create request
    RP->>IdP: Send request (with private data) through private channel (MQ)
    IdP->>IdP: Check request integrity against blockchain
    IdP->>Blockchain: Create response to the request
    IdP->>RP: Send response (with private data)
    RP->>RP: Check IdP responses
    opt With data request
      RP->>AS: Send data request (with private data) through private channel (MQ)
      AS->>AS: Check request and IdP responses integrity against blockchain
      AS->>RP: Data response
      RP->>RP: Check data response integrity against blockchain
      RP->>Blockchain: Set data received
    end
    RP->>Blockchain: Close request
RP→IdP
RP creates a request and send to IdP
Blockchain
Data type: JSON
| Property Name | Data Type | Description | Remarks | 
|---|---|---|---|
| mode | number | ||
| request_id | string | ||
| min_idp | number | ||
| min_ial | number | ||
| min_aal | number | ||
| request_timeout | number | ||
| data_request_list | array of Data Request Blockchain | Empty if no data request | |
| request_message_hash | string | ||
| idp_id_list | array of string | List of IdP node IDs RP requests to | |
| purpose | string | 
Data Request Blockchain
| Property Name | Data Type | Description | Remarks | 
|---|---|---|---|
| service_id | string | ||
| as_id_list | array of string | List of AS node IDs RP requests to | |
| min_as | number | ||
| request_params_hash | string | 
Private Channel (Message Queue)
Data type: JSON
| Property Name | Data Type | Description | Remarks | 
|---|---|---|---|
| mode | number | ||
| reference_group_code | string | Mode 2 and 3 | |
| namespace | string | Mode 1, Mode 2 and 3 (on-the-fly onboard) | |
| identifier | string | Mode 1, Mode 2 and 3 (on-the-fly onboard) | |
| request_id | string | ||
| min_ial | number | ||
| min_aal | number | ||
| request_timeout | number | ||
| data_request_list | array of Data Request | Empty if no data request | |
| data_request_params_salt_list | array of string | Empty if no data request | |
| request_message | string | ||
| request_message_salt | string | ||
| initial_salt | string | ||
| rp_id | string | Sender node ID (acted as RP) | |
| creation_time | number | UNIX Timestamp in milliseconds on request creation from RP machine. | |
| chain_id | string | ||
| height | integer | Block height which the request on blockchain is in.  IdP need to sync to this height in order to continue the flow.  | 
Data Request
| Property Name | Data Type | Description | Remarks | 
|---|---|---|---|
| service_id | string | ||
| as_id_list | array of string | List of AS node IDs RP requests to | |
| min_as | number | 
IdP→RP
IdP create a response to a request from RP and send back to RP
Blockchain
Data type: JSON
| Property Name | Data Type | Description | Remarks | 
|---|---|---|---|
| request_id | string | ||
| ial | number | ||
| aal | number | ||
| status | string | ||
| signature | string | Signed request message padded hash | 
Private Channel (Message Queue)
Data type: JSON
| Property Name | Data Type | Description | Remarks | 
|---|---|---|---|
| request_id | string | ||
| mode | number | ||
| accessor_id | string | Mode 2 and 3 | |
| idp_id | string | IdP node ID | |
| chain_id | string | ||
| height | integer | Block height which the IdP response on blockchain is in.  RP need to sync to this height in order to continue the flow.  | 
RP→AS
RP sends data request to AS after got consent from user through IdP
Private Channel (Message Queue)
Data type: JSON
| Property Name | Data Type | Description | Remarks | 
|---|---|---|---|
| request_id | string | ||
| mode | number | ||
| namespace | string | ||
| identifier | string | ||
| service_data_request_list | array of Service Data Request | ||
| request_message | string | ||
| request_message_salt | string | ||
| response_private_data_list | array of Response Private Data | ||
| request_timeout | number | ||
| initial_salt | string | ||
| rp_id | string | Sender node ID (acted as RP) | |
| creation_time | number | UNIX Timestamp in milliseconds on request creation from RP machine. | |
| chain_id | string | ||
| height | integer | Block height which the IdP response on blockchain is in.  AS need to sync to this height in order to continue the flow.  | 
Service Data Request
| Property Name | Data Type | Description | Remarks | 
|---|---|---|---|
| service_id | string | ||
| request_params | string | ||
| request_params_salt | string | 
Response Private Data
| Property Name | Data Type | Description | Remarks | 
|---|---|---|---|
| idp_id | string | ||
| accessor_id | array of string | Mode 2 and 3 | 
AS→RP
AS sends data response back to RP
Blockchain
Data type: JSON
| Property Name | Data Type | Description | Remarks | 
|---|---|---|---|
| request_id | string | ||
| service_id | string | ||
| signature | string | Signed data | 
Private Channel (Message Queue)
Data type: JSON
| Property Name | Data Type | Description | Remarks | 
|---|---|---|---|
| request_id | string | ||
| service_id | string | ||
| signature | string | ||
| data | string | ||
| data_salt | string | ||
| as_id | string | AS node ID | |
| chain_id | string | ||
| height | integer | Block height which the data response on blockchain is in.  RP need to sync to this height in order to continue the flow.  | 
RP (Set data received)
RP confirms data recieved from AS to blockchain
Blockchain
Data type: JSON
| Property Name | Data Type | Description | Remarks | 
|---|---|---|---|
| request_id | string | ||
| service_id | string | ||
| as_id | string | AS node ID | 
RP (Close request, Timeout request)
Blockchain
Data type: JSON
| Property Name | Data Type | Description | Remarks | 
|---|---|---|---|
| request_id | string | ||
| response_valid_list | array of Response Valid | 
Response Valid
| Property Name | Data Type | Description | Remarks | 
|---|---|---|---|
| idp_id | string | IdP node ID | |
| valid_ial | boolean | Validity of IdP response IAL | |
| valid_signature | boolean | Validity of IdP response signature | 
Register Identity (Onboard) Flow
Register Identity
Blockchain
Data type: JSON
| Property Name | Data Type | Description | Remarks | 
|---|---|---|---|
| reference_group_code | string | ||
| new_identity_list | array of Identity | ||
| ial | number | ||
| mode_list | array of number | Only 2 and 3 are allowed | |
| accessor_id | string | ||
| accessor_public_key | string | ||
| accessor_type | string | Public key type | Currently, only RSA is allowed | 
| request_id | string | Request ID of consented request from user for registering identity | 
Identity
| Property Name | Data Type | Description | Remarks | 
|---|---|---|---|
| identity_namespace | string | ||
| identity_identifier_hash | string | SHA-256 hash of identity identifier | 
Revoke Identity Association Flow
Revoke Identity Association
Blockchain
Data type: JSON
| Property Name | Data Type | Description | Remarks | 
|---|---|---|---|
| reference_group_code | string | ||
| identity_namespace | string | ||
| identity_identifier_hash | string | SHA-256 hash of identity identifier | |
| request_id | string | Request ID of consented request from user for revoking identity association | 
Add Accessor Flow
Add Accessor
Blockchain
Data type: JSON
| Property Name | Data Type | Description | Remarks | 
|---|---|---|---|
| reference_group_code | string | ||
| identity_namespace | string | ||
| identity_identifier_hash | string | SHA-256 hash of identity identifier | |
| accessor_id | string | ||
| accessor_public_key | string | ||
| accessor_type | string | Public key type | Currently, only RSA is allowed | 
| request_id | string | Request ID of consented request from user for adding accessor | 
Revoke Accessor Flow
Revoke Accessor
Blockchain
Data type: JSON
| Property Name | Data Type | Description | Remarks | 
|---|---|---|---|
| accessor_id_list | array of string | ||
| request_id | string | Request ID of consented request from user for revoking accessor | 
Update IAL
Blockchain
Data type: JSON
| Property Name | Data Type | Description | Remarks | 
|---|---|---|---|
| reference_group_code | string | ||
| identity_namespace | string | ||
| identity_identifier_hash | string | SHA-256 hash of identity identifier | |
| ial | number |