Skip to main content

Module protocol

Module protocol 

Source
Expand description

Protobuf messages, generated from proto/wire.proto at build time.

Modules§

ark_to_host
Nested message and enum types in ArkToHost.
host_to_ark
Nested message and enum types in HostToArk.
slot_status
Nested message and enum types in SlotStatus.

Structs§

ArkToHost
ArkToHost represents a message sent from the Ark to the host via the USB connection. It embeds all possible message types to keep the protocol simple.
CloudSyncFinishRequest
CloudSyncFinishRequest is the completion of a previously initiated cloud sync procedure, this time being signed by a single identity currently used by the cloud.
CloudSyncFinishResponse
CloudSyncFinishResponse is the acknowledgement whether the device accepted the cloud sync from the server or rejected for some reason.
CloudSyncStartRequest
CloudSyncStartRequest requests the device to start a synchronization procedure against the cloud servers to establish the current time as well as the currently active cloud identity.
CloudSyncStartResponse
CloudSyncStartResponse is an initiation of a cloud sync from the device, authed to the requested cloud identity.
Error
Error is sent along a response to a failed request.
ExecutionCancelRequest
ExecutionCancelRequest cancels a previously started 3rd party app run or an in-progress upload.
ExecutionCancelResponse
ExecutionCancelResponse contains the data gathered during an app’s execution.
ExecutionResultResponse
ExecutionResultResponse contains the data gathered during an app’s execution.
ExecutionScheduleRequest
ExecutionScheduleRequest finalizes an upload and requests the device to execute the uploaded 3rd party app. The upload must have been completed (i.e. the sum of chunk sizes matches the declared size).
ExecutionScheduleResponse
ExecutionScheduleResponse acks that the execution was authorized and the task is now running. The host already holds the task id from the preceding ExecutionUploadStartResponse.
ExecutionStatusRequest
ExecutionStatusRequest checks the execution status of a previously started 3rd party app run.
ExecutionStatusResponse
ExecutionStatusResponse contains the status of a started 3rd party app execution.
ExecutionUploadChunkRequest
ExecutionUploadChunkRequest appends a chunk of data to a pending upload. Chunks must be appended in order and must not overrun the declared size.
ExecutionUploadChunkResponse
ExecutionUploadChunkResponse is an empty ack of the chunk upload request.
ExecutionUploadStartRequest
ExecutionUploadStartRequest begins a chunked upload of a WASM binary to execute. The declared size is used to pre-allocate the receive buffer and to reject oversized uploads early; the actual bytes are sent via subsequent ExecutionUploadChunkRequest messages.
ExecutionUploadStartResponse
ExecutionUploadStartResponse contains the task id to use for subsequent chunk, schedule and cancel messages.
FirmwareUpdateInitRequest
FirmwareUpdateInitRequest initiates a previously prepared firmware update procedure by providing the authenticated and encrypted firmware key.
FirmwareUpdateInitResponse
FirmwareUpdateInitResponse confirms whether a new firmware update process was started, or if the request was rejected and why.
FirmwareUpdateInstallRequest
FirmwareUpdateInstallRequest requests the currently pending (but already verified) firmware to be applied to disk. This message will cause the device to reboot if applied successfully.
FirmwareUpdateInstallResponse
FirmwareUpdateInstallResponse is the response whether the firmware was applied successfully or not.
FirmwareUpdatePrepRequest
FirmwareUpdatePrepRequest prepares a firmware update procedure. If any previous update procedure was in progress, it is aborted.
FirmwareUpdatePrepResponse
FirmwareUpdatePrepResponse confirms whether a new firmware update process was started, or if the request was rejected and why.
FirmwareUpdateUploadRequest
FirmwareUpdateUploadRequest requests appending a new chunk of data to the currently pending firmware upload process.
FirmwareUpdateUploadResponse
FirmwareUpdateUploadResponse is the response whether the requested chunk was accepted or rejected.
FirmwareUpdateVerifyRequest
FirmwareUpdateVerifyRequest requests decrypting the uploaded firmware and verifying its contents, preparing for the last step of actually installing the firmware update.
FirmwareUpdateVerifyResponse
FirmwareUpdateVerifyResponse is the response whether the firmware just uploaded passed all verifications and is ready for application.
GenuinityProofRequest
GenuinityProofRequest requests the device to generate a cryptographic proof of its own authenticity.
GenuinityProofResponse
GenuinityProofResponse is the device genuinity proof, an encrypted signature of the device.
HandshakeRequest
HandshakeRequest is sent by the client to initiate a new session.
HandshakeResponse
HandshakeResponse acknowledges starting a new session. It returns the device identity (public key) and various version information.
HostToArk
HostToArk represents a message sent from the host to the Ark via the USB connection. It embeds all possible message types to keep the protocol simple.
OnboardingRequest
OnboardingRequest is a vendor utility to onboard an Ark. Currently it contains the signed device genuinity attestation (certificate).
OnboardingResponse
OnboardingResponse is the acknowledgement of the onboarding.
PairingAcceptanceRequest
PairingAcceptanceRequest is a blocking poller to wait until the user accepts a pairing request or it times out.
PairingAcceptanceResponse
PairingAcceptanceResponse returns whether the user accepted the pairing or if it timed out. At this point, the device still needs to format itself.
PairingAckArkStorageRequest
PairingAckArkStorageRequest confirms from the app that the Ark’s key material was received correctly.
PairingAckArkStorageResponse
PairingAckArkStorageResponse confirms that the key ack was accepted.
PairingAuthRequest
PairingAuthRequest requests the initiation of a pairing.
PairingAuthResponse
PairingAuthResponse responds whether the device is in a state compatible with pairing (i.e. reset) and if so, it signs an authorization for the server to open a new rendezvous point; containing the xHPKE public key to use for encrypting messages to this Ark after pairing.
PairingCompletionRequest
PairingCompletionRequest is a blocking poller to wait until the device finishes any pairing maintenance operation (e.g. encrypting itself).
PairingCompletionResponse
PairingCompletionResponse returns whether the device finished preparing for live operation.
PairingSetAppIdentityRequest
PairingSetAppIdentityRequest injects the companion app’s identity, relayed by the cloud.
PairingSetAppIdentityResponse
PairingSetAppIdentityResponse confirms whether the remote identity was accepted by the Ark or not.
PairingSetAppStorageRequest
PairingSetAppStorageRequest injects the app’s storage key material into the pairing flow.
PairingSetAppStorageResponse
PairingSetAppStorageResponse confirms whether the remote storage material was accepted, and if so, bundles the ark device infos and ark key material.
PairingStatusRequest
PairingStatusRequest requests the initialization status from the device.
PairingStatusResponse
PairingStatusResponse is the initialization status response of the device.
RelayAppToArkFailure
RelayAppToArkFailure is returned if a low level protocol violation is detected when an app-to-ark response was processed.
RelayAppToArkRequest
RelayAppToArkRequest is an opaque request from the companion app that the Ark may respond to, or may flat out reject.
RelayAppToArkResponse
RelayAppToArkResponse is an opaque response from the companion app to an opaque Ark request. The ark will respond with the deferred response to the original request.
RelayArkToAppRequest
RelayArkToAppRequest is an opaque request from the Ark to the companion app, which will generally be sent as an interim response to some other request, requiring authorization from the app side.
RelayArkToAppResponse
RelayArkToAppResponse is an opaque response from the Ark to the companion app to an opaque request.
RelayJoinRequest
RelayJoinRequest requests authorization to join the communication relay with the companion app.
RelayJoinResponse
RelayJoinResponse responds whether the device is in a state compatible with relaying (i.e. paired) and if so, it signs an authorization for the server to join the rendezvous point.
SlotDeleteRequest
SlotDeleteRequest removes the contents of a filled slot. The slot must be in a healthy, filled state; corrupted or half-written slots must be cleaned up via SlotRepair instead.
SlotDeleteResponse
SlotListRequest
SlotListRequest requests the state of all slot slots on the device.
SlotListResponse
SlotListResponse contains the current state of every slot slot.
SlotMetaGeneAnnotations
SlotMetaGeneAnnotations contains metadata for the gene annotations slot. Includes download information so the dashboard can fetch it from public sources.
SlotMetaReferenceGenome
SlotMetaReferenceGenome contains metadata for the reference genome slot. Includes download information so the dashboard can fetch it from public sources.
SlotMetaSnpIndelCalls
SlotMetaSnpIndelCalls contains metadata for the user’s variant calls slot.
SlotMetaVariantCatalog
SlotMetaVariantCatalog contains metadata for the variant-catalog slot. Includes download information so the dashboard can fetch it from public sources.
SlotRepairRequest
SlotRepairRequest resets a slot to empty regardless of its current state. Unlike SlotDelete (which requires the slot to be filled), repair is a stateless force cleanup that removes any leftover metadata and/or files on disk. It is intended for recovering from corruption or half-written state after crashes.
SlotRepairResponse
SlotStatus
SlotStatus describes the current state of a single slot slot on the device.
SlotUploadCancelRequest
SlotUploadCancelRequest contains an upload session id to abort.
SlotUploadCancelResponse
SlotUploadCancelResponse is an empty ack of the cancellation request.
SlotUploadChunkRequest
SlotUploadChunkRequest contains a new chunk of data to append to a pending upload session.
SlotUploadChunkResponse
SlotUploadChunkResponse is an empty ack of the chunk upload request.
SlotUploadPeekRequest
SlotUploadPeekRequest can be used to send an ephemeral file chunk to the Ark and ask it to attempt to identify it for the caller. Its purpose is to allow quickly filtering out potentially huge slots without uploading them first (e.g. q 30GB compressed whole genome sequencing).
SlotUploadPeekResponse
SlotUploadPeekResponse contains the data identification based on the small chunk shared in the request.
SlotUploadProcessRequest
SlotUploadProcessRequest marks an upload session ready for processing and requests a progress report to be sent back. May be called multiple times.
SlotUploadProcessResponse
SlotUploadProcessResponse acks the completion of a slot upload and also contains the current processing progress.
SlotUploadStartRequest
SlotUploadStartRequest requests uploading a specific type of slot (e.g a whole genome variant call file, a bloodwork report).
SlotUploadStartResponse
SlotUploadStartResponse contains a unique session id for an approved upload and a maximum file limit after which the upload will be killed.
UnlockRequest
UnlockRequest requests the device to start the unlock procedure. This request is async, potentially returning a response only after confirming with the app.
UnlockResponse
UnlockResponse contains whether the unlock was successfully executed.

Enums§

SlotConfidence
SlotConfidence indicates how confident the device is in its classification of a peeked slot, based on content, filename, and size.
SlotKind
SlotKind identifies a slot slot on the device. Each value corresponds to a unique data type that the device can store and manage.
SlotOrigin
SlotOrigin describes the nature of the data in a slot, determining what actions are available to the user for filling it.