Skip to content

Feature: Market Data API for Asset Pairs and Price Fetching #67

@erick303

Description

@erick303

Feature Request: Market Data API

Overview

Add market data capabilities to the Mesh API to support fetching available asset pairs and real-time/historical price data.

Requirements

1. Asset Pair Discovery

  • Endpoint to list all available trading pairs
  • Filter by base/quote assets
  • Include metadata (tick size, min/max order sizes, trading status)

2. Price Data Retrieval

  • Current spot prices for asset pairs
  • Historical price data (OHLCV - Open, High, Low, Close, Volume)
  • Configurable time intervals (1m, 5m, 1h, 1d, etc.)
  • Timestamp precision for price updates

Proposed API Structure

// proto/meshtrade/market_data/pair/v1/service.proto
service PairService {
  rpc ListPairs(ListPairsRequest) returns (ListPairsResponse);
  rpc GetPair(GetPairRequest) returns (Pair);
}

// proto/meshtrade/market_data/price/v1/service.proto
service PriceService {
  rpc GetCurrentPrice(GetCurrentPriceRequest) returns (Price);
  rpc GetHistoricalPrices(GetHistoricalPricesRequest) returns (stream Price);
  rpc SubscribePriceUpdates(SubscribePriceUpdatesRequest) returns (stream Price);
}

Use Cases

  1. Display available trading pairs in UI
  2. Show real-time price quotes for instruments
  3. Chart historical price data for analysis
  4. Calculate order values before submission
  5. Market data for algorithmic trading strategies

Acceptance Criteria

  • Protobuf definitions for market data services
  • Generated SDKs for Go, Python, TypeScript
  • Role-based access control (viewer roles should have access)
  • Documentation with code examples
  • Unit tests for all language SDKs

Technical Considerations

  • Use meshtrade/type/v1/Token for asset identification
  • Use meshtrade/type/v1/Amount and meshtrade/type/v1/Decimal for prices
  • Consider rate limiting for price streaming endpoints
  • Define appropriate METHOD_TYPE_READ for all methods
  • Create ROLE_MARKET_DATA_VIEWER role

Priority

High - Essential for trading operations and UI functionality

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions