flow-rust-sdk 4.0.2

Flow-Rust-SDK utilizes the Flow gRPC AccessAPI to make requests on the flow blockchain.
Documentation
syntax = "proto3";

package flow.access;


service AccessAPI {
    // The following is copied from https://docs.onflow.org/access-api/
    // You should also reference https://github.com/onflow/flow/blob/master/protobuf/flow/access/access.proto
    rpc Ping(PingRequest) returns (PingResponse);

    rpc GetLatestBlockHeader (GetLatestBlockHeaderRequest) returns (BlockHeaderResponse);

    rpc GetBlockHeaderByID (GetBlockHeaderByIdRequest) returns (BlockHeaderResponse);

    rpc GetBlockHeaderByHeight (GetBlockHeaderByHeightRequest) returns (BlockHeaderResponse);

    rpc GetLatestBlock (GetLatestBlockRequest) returns (BlockResponse);

    rpc GetBlockByID (GetBlockByIdRequest) returns (BlockResponse);

    rpc GetBlockByHeight (GetBlockByHeightRequest) returns (BlockResponse);

    rpc GetCollectionByID (GetCollectionByIdRequest) returns (CollectionResponse);

    rpc SendTransaction (SendTransactionRequest) returns (SendTransactionResponse);

    rpc GetTransaction (GetTransactionRequest) returns (TransactionResponse);

    rpc GetTransactionResult (GetTransactionRequest) returns (TransactionResultResponse);

    rpc GetAccountAtLatestBlock(GetAccountAtLatestBlockRequest) returns (AccountResponse);

    rpc GetAccountAtBlockHeight(GetAccountAtBlockHeightRequest) returns (AccountResponse);

    rpc ExecuteScriptAtLatestBlock (ExecuteScriptAtLatestBlockRequest) returns (ExecuteScriptResponse);

    rpc ExecuteScriptAtBlockID (ExecuteScriptAtBlockIdRequest) returns (ExecuteScriptResponse);

    rpc ExecuteScriptAtBlockHeight (ExecuteScriptAtBlockHeightRequest) returns (ExecuteScriptResponse);

    rpc GetEventsForHeightRange(GetEventsForHeightRangeRequest) returns (EventsResponse);

    rpc GetEventsForBlockIDs(GetEventsForBlockIdsRequest) returns (EventsResponse);

    rpc GetNetworkParameters (GetNetworkParametersRequest) returns (GetNetworkParametersResponse);

    rpc GetLatestProtocolStateSnapshot (GetLatestProtocolStateSnapshotRequest) returns (ProtocolStateSnapshotResponse);

    rpc GetExecutionResultForBlockID(GetExecutionResultForBlockIdRequest) returns (ExecutionResultForBlockIdResponse);
}

// ping
message PingRequest {}
message PingResponse {}

// block headers
message BlockHeaderResponse {
  BlockHeader block = 1;
}
message GetLatestBlockHeaderRequest {
  bool is_sealed = 1;
}
message GetBlockHeaderByIdRequest {
  bytes id = 1;
}
message GetBlockHeaderByHeightRequest {
  uint64 height = 1;
}

// blocks
message BlockResponse {
  Block block = 1;
}
message GetLatestBlockRequest {
  bool is_sealed = 1;
}
message GetBlockByIdRequest {
  bytes id = 1;
}
message GetBlockByHeightRequest {
  uint64 height = 1;
}

// collections
message CollectionResponse {
  Collection collection = 1;
}
message GetCollectionByIdRequest {
  bytes id = 1;
}

// transactions
message SendTransactionResponse {
  bytes id = 1;
}
message SendTransactionRequest {
  Transaction transaction = 1;
}
message GetTransactionRequest {
  bytes id = 1;
}
message TransactionResponse {
  Transaction transaction = 1;
}
message TransactionResultResponse {
  TransactionStatus status = 1;
  uint32 status_code = 2;
  string error_message = 3;
  repeated Event events = 4;
}

// accounts
message AccountResponse {
  Account account = 1;
}
message GetAccountAtLatestBlockRequest {
  bytes address = 1;
}
message GetAccountAtBlockHeightRequest {
  bytes address = 1;
  uint64 block_height = 2;
}

// scripts
message ExecuteScriptResponse {
  bytes value = 1;
}
message ExecuteScriptAtLatestBlockRequest {
  bytes script = 1;
  repeated bytes arguments = 2;
}
message ExecuteScriptAtBlockIdRequest {
  bytes block_id = 1;
  bytes script = 2;
  repeated bytes arguments = 3;
}
message ExecuteScriptAtBlockHeightRequest {
  uint64 block_height = 1;
  bytes script = 2;
  repeated bytes arguments = 3;
}

// events
message EventsResponse {
  message Result {
    bytes block_id = 1;
    uint64 block_height = 2;
    repeated Event events = 3;
    Timestamp block_timestamp = 4;
  }
  repeated Result results = 1;
}
message GetEventsForHeightRangeRequest {
  string type = 1;
  uint64 start_height = 2;
  uint64 end_height = 3;
}
message GetEventsForBlockIdsRequest {
  string type = 1;
  repeated bytes block_ids = 2;
}


// network parameters
message GetNetworkParametersResponse {
  string chain_id = 1;
}
message GetNetworkParametersRequest {}

// protocol state
message ProtocolStateSnapshotResponse {
  bytes serializedSnapshot = 1;
}
message GetLatestProtocolStateSnapshotRequest {}

// execution results
message ExecutionResultForBlockIdResponse {
  ExecutionResult execution_result = 1;
}
message GetExecutionResultForBlockIdRequest {
  bytes block_id = 1;
}


message Block {
  bytes id = 1;
  bytes parent_id = 2;
  uint64 height = 3;
  Timestamp timestamp = 4;
  repeated CollectionGuarantee collection_guarantees = 5;
  repeated BlockSeal block_seals = 6;
  repeated bytes signatures = 7;
}

message BlockHeader {
  bytes id = 1;
  bytes parent_id = 2;
  uint64 height = 3;
}

message BlockSeal {
  bytes block_id = 1;
  bytes execution_receipt_id = 2;
  repeated bytes execution_receipt_signatures = 3;
  repeated bytes result_approval_signatures = 4;
}

message Collection {
  bytes id = 1;
  repeated bytes transaction_ids = 2;
}

message CollectionGuarantee {
  bytes collection_id = 1;
  repeated bytes signatures = 2;
}

message Transaction {
  bytes script = 1;
  repeated bytes arguments = 2;
  bytes reference_block_id = 3;
  uint64 gas_limit = 4;
  TransactionProposalKey proposal_key = 5;
  bytes payer = 6;
  repeated bytes authorizers = 7;
  repeated TransactionSignature payload_signatures = 8;
  repeated TransactionSignature envelope_signatures = 9;
}

message TransactionProposalKey {
  bytes address = 1;
  uint32 key_id = 2;
  uint64 sequence_number = 3;
}

message TransactionSignature {
  bytes address = 1;
  uint32 key_id = 2;
  bytes signature = 3;
}

enum TransactionStatus {
  UNKNOWN = 0;
  PENDING = 1;
  FINALIZED = 2;
  EXECUTED = 3;
  SEALED = 4;
  EXPIRED = 5;
}

message Account {
  bytes address = 1;
  uint64 balance = 2;
  bytes code = 3;
  repeated AccountKey keys = 4;
  map<string, bytes> contracts = 5;
}

message AccountKey {
  uint32 id = 1;
  bytes public_key = 2;
  uint32 sign_algo = 3;
  uint32 hash_algo = 4;
  uint32 weight = 5;
  uint32 sequence_number = 6;
  bool revoked = 7;
}

message Event {
  string type = 1;
  bytes transaction_id = 2;
  uint32 transaction_index = 3;
  uint32 event_index = 4;
  bytes payload = 5;
}

message ExecutionResult {
  bytes previous_result_id = 1;
  bytes block_id = 2;
  repeated Chunk chunks = 3;
  repeated ServiceEvent service_events = 4;
}

message Chunk {
  bytes start_state = 1;
  bytes event_collection = 2;
  bytes block_id = 3;
  uint64 total_computation_used = 4;
  uint64 number_of_transactions = 5;
  uint64 index = 6;
  bytes end_state = 7;
}

message ServiceEvent {
  string type = 1;
  bytes payload = 2;
}

message Timestamp {
  // Represents seconds of UTC time since Unix epoch
  // 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
  // 9999-12-31T23:59:59Z inclusive.
  int64 seconds = 1;

  // Non-negative fractions of a second at nanosecond resolution. Negative
  // second values with fractions must still have non-negative nanos values
  // that count forward in time. Must be from 0 to 999,999,999
  // inclusive.
  int32 nanos = 2;
}