Reach WebSocket + ProtoBuf based protocol, version 0
- Initialisation messages
InitandInitAuthenticatedSessionboth communicate the desired protocol version for the respective sessionInitis a request for all the information necessary to receive and send messagesInitAuthenticatedSessionindicates desire to establish a session allowing for operations specific to reachable peers and attestants.
- All responses, including generic Ok/Error ones are represented by the
wire::ResponseenumOkcan be assumed to be the default response type when no other response type is specified belowUnsupportedis the response if the node does not support the requested protocol version during initialisationDecode Erroris the response if any supplied data could not be successfully decoded, including Protocol Buffer Message conversion errorsVerification Errormay be a response to requests with signatures of which the verification failedNot Foundmay be a reply to requests involving IDs that do not identify any information currently stored on the node. All IDed requests are marked as such in the table below
| request | user role | response | IDed | description |
|---|---|---|---|---|
wire::Init | reach::Reach | EnvelopeIdHint hint polls, pre-MessageVault upload | ||
wire::InitAuthenticatedSession | reach::AuthenticationChallenge | request an authenticated session | ||
envelope::EnvelopeId | envelope::Envelope | Yes | download Envelope | |
message_vault::MessageVaultId | message_vault::MessageVault | Yes | download MessageVault | |
message_vault::AddMessageVault | message_vault::SealedMessageVaultId | add/upload MessageVault | ||
envelope::EnvelopeSeed | envelope::SealedEnvelopeId | add/upload Envelope | ||
envelope::RemoveEnvelopeIdHint | Yes | remove EnvelopeIdHint by Envelope.id and removal token | ||
reach::AuthenticationAssurance | Reachable, Attestant | proof of signing ability for authenticated session | ||
wire::ListEnvelopeIds | Reachable | envelope::EnvelopeIds | lists all EnvelopeIds currently stored on this node | |
reach::ReachablePublicKeyRing | Reachable | add ReachablePublicKeys for a reachable peer | ||
reach::RemoveReachablePublicKeys | Reachable | Yes | remove ReachablePublicKeys for a reachable peer | |
hint::AddSharedPublicKeys | Attestant | TODO | ||
reach::AddReachableVerifyingKeys | Attestant | add/onboard new ReachableVerifyingKeys | ||
reach::RemoveReachableVerifyingKeys | Attestant | Yes | remove/offboard ReachableVerifyingKeys |
Protocol processing state change
State changes indicated by "→". If no state changes are indicated, as well as in case of failures
(Unsupported, Verification Error etc.) state remains unchanged after processing the request.
- Init:
reach::Init→ Readyreach::InitAuthenticatedSession→ Pending Authentication
- Ready:
envelope::EnvelopeIdmessage_vault::MessageVault→ Pending Envelope Uploadenvelope::RemoveEnvelopeIdHint
- Pending Envelope Upload
message::AddEnvelope
- Pending Authentication:
reach::AuthenticationAssurance→ Authenticated (Attestant) | Authenticated (Reachable) | Ready (Error)
- Authenticated (Attestant):
hint::AddSharedPublicKeysreach::AddVerifyingKeysreach::RemoveVerifyingKeys
- Authenticated (Reachable):
wire::Request::ListEnvelopeIdsreach::AddReachablePublicKeysreach::RemoveReachablePublicKeys