Skip to content

PolyProgrammist/near-openapi-client

Repository files navigation

near-openapi-client

Progenitor-generated client of NEAR JSON RPC API

Consists of two crates:

  • near-openapi-client - client to connect to the API, generated by progenitor
  • near-openapi-types - types used by client

Usage example:

Add near-openapi-client to your project dependencies:

cargo add near-openapi-client

Use the client to get latest block info:

use near_openapi_client as client;

// Setup client
const NEAR_RPC_URL_REMOTE: &str = "https://archival-rpc.mainnet.near.org";
let client_remote = client::Client::new(NEAR_RPC_URL_LOCAL);

// Construct request
let payload_block_final = client::types::JsonRpcRequestForBlock {
    id: String::from("dontcare"),
    jsonrpc: String::from("2.0"),
    method: client::types::JsonRpcRequestForBlockMethod::Block,
    params: client::types::RpcBlockRequest::Finality(client::types::Finality::Final),
};

// Make the request, get the response
let block_final: client::types::JsonRpcResponseForRpcBlockResponseAndRpcError =
    client_local.block(&payload_block_final).await?.into_inner();
println!("block_final: {:#?}", block_final);
Example response
response for block_final: Variant0 {
    id: "dontcare",
    jsonrpc: "2.0",
    result: RpcBlockResponse {
        author: AccountId(
            "test.near",
        ),
        chunks: [
            ChunkHeaderView {
                balance_burnt: "0",
                bandwidth_requests: Some(
                    V1(
                        BandwidthRequestsV1 {
                            requests: [],
                        },
                    ),
                ),
                chunk_hash: CryptoHash(
                    "59srn1AQyCxqhXuURBGomupX8tCEj25XXFW15YZDgnM6",
                ),
                congestion_info: Some(
                    CongestionInfoView {
                        allowed_shard: 0,
                        buffered_receipts_gas: "0",
                        delayed_receipts_gas: "0",
                        receipt_bytes: 0,
                    },
                ),
                encoded_length: 8,
                encoded_merkle_root: CryptoHash(
                    "79Bt7ivt9Qhp3c6dJYnueaTyPVweYxZRpQHASRRAiyuy",
                ),
                gas_limit: 1000000000000000,
                gas_used: 0,
                height_created: 6,
                height_included: 6,
                outcome_root: CryptoHash(
                    "11111111111111111111111111111111",
                ),
                outgoing_receipts_root: CryptoHash(
                    "H4Rd6SGeEBTbxkitsCdzfu9xL9HtZ2eHoPCQXUeZ6bW4",
                ),
                prev_block_hash: CryptoHash(
                    "DeJY83ZJbakCtkwe9J8RTE9TEAybp4E1GFCVrdki8Z6c",
                ),
                prev_state_root: CryptoHash(
                    "7t7WeJdAzh9qmKLHfVRboDZupfAjfy9FC3onAN1LRnyp",
                ),
                rent_paid: "0",
                shard_id: ShardId(
                    0,
                ),
                signature: Signature(
                    "ed25519:5G8UWLLuVk3WvQTnSHmT7EQoCz521EaaxQ8f5mgNVxJjFW7o9VFfxuG6D5bNfCjmoTVWbc9WrUbXg2L11iGWQw2g",
                ),
                tx_root: CryptoHash(
                    "11111111111111111111111111111111",
                ),
                validator_proposals: [],
                validator_reward: "0",
            },
        ],
        header: BlockHeaderView {
            approvals: [
                Some(
                    Signature(
                        "ed25519:4GobVKSiiRfwMBrukNeCLbiUQLAzVprFCSn5jDVqA8zm6oR9H8EudEogsBAedBqJKF8vXhohSC5Kfnsdw2XMXMw6",
                    ),
                ),
            ],
            block_body_hash: Some(
                CryptoHash(
                    "CjDTJC25qznGymgHiUrDwSgaqsme3deDNj3ftPWFfBew",
                ),
            ),
            block_merkle_root: CryptoHash(
                "EXTvaXuYTcvEd8KnWjhruX9NYNCTbXJrwfzEJAnELBds",
            ),
            block_ordinal: Some(
                7,
            ),
            challenges_result: [],
            challenges_root: CryptoHash(
                "11111111111111111111111111111111",
            ),
            chunk_endorsements: Some(
                [
                    [
                        1,
                    ],
                ],
            ),
            chunk_headers_root: CryptoHash(
                "6fPXKHJce8krAwsXfdMgsSgmUd5CgcJBpBFKBhb7QT2j",
            ),
            chunk_mask: [
                true,
            ],
            chunk_receipts_root: CryptoHash(
                "9ETNjrt6MkwTgSVMMbpukfxRshSD1avBUUa4R4NuqwHv",
            ),
            chunk_tx_root: CryptoHash(
                "7tkzFg8RHBmMw1ncRJZCCZAizgq4rwCftTKYLce8RU8t",
            ),
            chunks_included: 1,
            epoch_id: CryptoHash(
                "11111111111111111111111111111111",
            ),
            epoch_sync_data_hash: None,
            gas_price: "100000000",
            hash: CryptoHash(
                "8UgWEvtdVcEu6uYBFboZKDoLsWk5DC5tz656fW3BA4ZL",
            ),
            height: 6,
            last_ds_final_block: CryptoHash(
                "DeJY83ZJbakCtkwe9J8RTE9TEAybp4E1GFCVrdki8Z6c",
            ),
            last_final_block: CryptoHash(
                "AMu9bpsii9wjFukjFc5cMaBNCNDvmiz4Z7AmwBAMcDLh",
            ),
            latest_protocol_version: 78,
            next_bp_hash: CryptoHash(
                "ChxUrwNyJDYA9PbecbLq1KBvkj2mEW3nvzXHC244X2rT",
            ),
            next_epoch_id: CryptoHash(
                "GsJ8x5msDUv7Zz4LgCxoqzeyWKvNT2sHdFyEdR3vZrCZ",
            ),
            outcome_root: CryptoHash(
                "7tkzFg8RHBmMw1ncRJZCCZAizgq4rwCftTKYLce8RU8t",
            ),
            prev_hash: CryptoHash(
                "DeJY83ZJbakCtkwe9J8RTE9TEAybp4E1GFCVrdki8Z6c",
            ),
            prev_height: Some(
                5,
            ),
            prev_state_root: CryptoHash(
                "9wppbHBR63GhoJWW3ti6qhD5AAEmiNr1DKWQq9kLwrHM",
            ),
            random_value: CryptoHash(
                "6MypYizcvSPkaxgd7cXAgGfHo8TsnmouzLtCHnGASbKe",
            ),
            rent_paid: "0",
            signature: Signature(
                "ed25519:3jHUhecrkNYoTDrQ8jARWco8vCNCdrwPewZrv1HQeTE5tQj78fjAYkJbgeFo8wcyi6maTFFYRNdHQ8nrmFa1Pjc",
            ),
            timestamp: 1750759979825366257,
            timestamp_nanosec: "1750759979825366257",
            total_supply: "2050000000000000000000000000000000",
            validator_proposals: [],
            validator_reward: "0",
        },
    },
}

Generate libraries and test:

cargo install cargo-progenitor --git https://github.com/PolyProgrammist/progenitor --branch patch_rustfmt
./generate.sh
cd example && cargo test -- --nocapture

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages