risq 0.4.1

Re-implementation of Bisq (https://github.com/bisq-network/bisq) in rust
schema {
  query: Query
}

type Query {
  offers(
    market: MarketPair
    direction: Direction
  ): Offers! @juniper(ownership: "owned")

  currencies: [Currency!]!

  markets: [Market!]!

  "Returns null unless --features \"statistics\" is enabled"
  ticker(market: MarketPair): [Ticker!] @juniper(ownership: "owned")

  "Returns null unless --features \"statistics\" is enabled"
  trades(
    market: MarketPair
    direction: Direction
    timestampFrom: UnixSecs
    timestampTo: UnixSecs
    limit: Int = 100
    sort: Sort = DESC
  ): [Trade!] @juniper(ownership: "owned")

  "Returns null unless --features \"statistics\" is enabled"
  hloc(
    market: MarketPair!
    timestampFrom: UnixSecs
    timestampTo: UnixSecs
    interval: Interval
  ): [Hloc!] @juniper(ownership: "owned")

  "Returns null unless --features \"statistics\" is enabled"
  volumes(
    market: MarketPair
    interval: Interval
  ): [Volume!] @juniper(ownership: "owned")
}

type Offers {
  marketPair: MarketPair!
  buys: [OpenOffer!]! @juniper(ownership: "as_ref")
  sells: [OpenOffer!]! @juniper(ownership: "as_ref")
  btcBuys: [OpenOffer!]! @juniper(ownership: "as_ref")
  btcSells: [OpenOffer!]! @juniper(ownership: "as_ref")
  formattedBuyPrices: [String!]! @juniper(ownership: "owned")
  formattedSellPrices: [String!]! @juniper(ownership: "owned")
}

enum Sort {
  ASC
  DESC
}

type Trade {
  marketPair: MarketPair! @juniper(ownership: "owned")
  direction: Direction! @juniper(ownership: "owned")
  paymentMethodId: String!
  offerId: ID! @juniper(ownership: "owned")
  formattedPrice: String! @juniper(ownership: "owned")
  formattedAmount: String! @juniper(ownership: "owned")
  formattedVolume: String! @juniper(ownership: "owned")
  "Number of milliseconds since Epoch as string"
  tradeDate: UnixMillis! @juniper(ownership: "owned")
}

type Hloc {
  periodStart: UnixSecs! @juniper(ownership: "owned")
  periodStartDateTime: DateTimeUtc! @juniper(ownership: "owned")
  formattedHigh: String! @juniper(ownership: "owned")
  formattedLow: String! @juniper(ownership: "owned")
  formattedOpen: String! @juniper(ownership: "owned")
  formattedClose: String! @juniper(ownership: "owned")
  formattedVolumeLeft: String! @juniper(ownership: "owned")
  formattedVolumeRight: String! @juniper(ownership: "owned")
  formattedAvg: String! @juniper(ownership: "owned")
}

type Volume {
  periodStart: UnixSecs! @juniper(ownership: "owned")
  periodStartDateTime: DateTimeUtc! @juniper(ownership: "owned")
  formattedVolume: String! @juniper(ownership: "owned")
  numTrades: Int! @juniper(ownership: "owned")
}
scalar DateTimeUtc

type Ticker {
  marketPair: MarketPair! @juniper(ownership: "owned")
  formattedLast: String @juniper(ownership: "owned")
  formattedHigh: String @juniper(ownership: "owned")
  formattedLow: String @juniper(ownership: "owned")
  formattedVolumeLeft: String! @juniper(ownership: "owned")
  formattedVolumeRight: String! @juniper(ownership: "owned")
  formattedBuy: String @juniper(ownership: "owned")
  formattedSell: String @juniper(ownership: "owned")
}

"Number of milliseconds since Epoch as string"
scalar UnixMillis
"Number of secs since Epoch as string"
scalar UnixSecs

enum Direction {
  BUY
  SELL
}

enum Interval {
  MINUTE
  HALFHOUR
  HOUR
  HALFDAY
  DAY
  WEEK
  MONTH
  YEAR
}

type Currency {
  code: String!
  name: String!
  precision: Int! @juniper(ownership: "owned")
  currencyTypeLowerCase: String!
}

type Market {
  pair: String!
  name: String!
  lName: String!
  lSymbol: String!
  lPrecision: Int! @juniper(ownership: "owned")
  lTypeLowerCase: String!
  rName: String!
  rSymbol: String!
  rPrecision: Int! @juniper(ownership: "owned")
  rTypeLowerCase: String!
}

"String of market pair eg. btc_eur"
scalar MarketPair

type OpenOffer {
  marketPair: MarketPair! @juniper(ownership: "owned")
  id: ID! @juniper(ownership: "owned")
  offerDate: UnixMillis! @juniper(ownership: "owned")
  direction: Direction! @juniper(ownership: "owned")
  btcDirection: Direction! @juniper(ownership: "owned")
  formattedAmount: String! @juniper(ownership: "owned")
  formattedBtcAmount: String! @juniper(ownership: "owned")
  formattedMinAmount: String! @juniper(ownership: "owned")
  formattedPrice: String! @juniper(ownership: "owned")
  formattedVolume: String! @juniper(ownership: "owned")
  formattedBtcVolume: String! @juniper(ownership: "owned")
  paymentMethodId: String!
  offerFeeTxId: String!
}