monaco-grpc-sdk 0.6.3-develop.77c562b

Typed Rust gRPC client SDK for the Monaco Exchange API — generated from Protocol Buffer definitions
Documentation

monaco-grpc-sdk

Typed Rust gRPC client SDK for the Monaco Exchange API, generated from Protocol Buffer definitions.

Usage

Plaintext (development / localhost)

[dependencies]
monaco-grpc-sdk = "0.6"
tonic = { version = "0.14", features = ["transport"] }
tokio = { version = "1", features = ["full"] }
use monaco_grpc_sdk::monaco::api::orders::orders_service_client::OrdersServiceClient;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut client = OrdersServiceClient::connect("http://localhost:9090").await?;
    // ...
    Ok(())
}

TLS (remote / HTTPS endpoints)

The transport feature alone does not enable TLS. To connect to https:// endpoints, enable a TLS backend in tonic and a roots provider:

[dependencies]
monaco-grpc-sdk = "0.6"
tonic = { version = "0.14", features = ["transport", "tls-ring", "tls-webpki-roots"] }
tokio = { version = "1", features = ["full"] }

The gRPC service is exposed behind path-based routing on the same ALB as the REST API (see the v0.5.2 release notes). Connect to the environment host on port 443:

Environment Host
Development develop.apimonaco.xyz
Staging staging.apimonaco.xyz
use monaco_grpc_sdk::monaco::api::orders::orders_service_client::OrdersServiceClient;
use tonic::transport::{Channel, ClientTlsConfig};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let channel = Channel::from_static("https://develop.apimonaco.xyz")
        .tls_config(ClientTlsConfig::new().with_webpki_roots())?
        .connect()
        .await?;
    let mut client = OrdersServiceClient::new(channel);
    // ...
    Ok(())
}

Other languages — Buf Schema Registry

The proto definitions that back this SDK are published to BSR at buf.build/monaco-sdk/api. Pick a channel that matches the backend branch you're targeting:

Label Source branch Purpose
develop develop Latest dev snapshot, breaking changes possible
release-X.Y release/X.Y Release candidate
main main Latest stable

Example buf.gen.yaml for Go:

version: v2
plugins:
  - remote: buf.build/protocolbuffers/go
    out: gen/go
  - remote: buf.build/grpc/go
    out: gen/go
inputs:
  - module: buf.build/monaco-sdk/api:main
buf generate

Python, TypeScript, C++, Java, Ruby, Swift, Kotlin and more are available via BSR remote plugins.

Regenerating

After proto changes, run from the repo root:

make sdk-gen

This requires a valid BUF_TOKEN environment variable with access to buf.build/monaco-sdk/api.