OpenAPI Specification
openapi: 3.0.0
info:
title: GTE Exchange Users API
version: 0.1.0
description: API for GTE trading and historical data
contact:
name: API Support
url: https://docs.gte.xyz
email: support@liquidlabs.inc
servers:
- url: https://api-testnet.gte.xyz/v1
description: GTE API Testnet HTTP Server
- url: wss://api-testnet.gte.xyz/ws
description: GTE API Testnet WebSocket Server
tags:
- name: Users
paths:
/users/{user_address}/lppositions:
get:
tags:
- Users
operationId: GetUserLpPositions
summary: Get LP positions for a user
parameters:
- name: user_address
in: path
required: true
schema:
$ref: '#/components/schemas/EvmAddress'
responses:
'200':
description: List of user's LP positions
content:
application/json:
schema:
$ref: '#/components/schemas/GetUserLpPositionsResponse'
'404':
description: User not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/users/{user_address}/portfolio:
get:
tags:
- Users
operationId: GetUserPortfolio
summary: Get user's portfolio
parameters:
- name: user_address
in: path
required: true
schema:
$ref: '#/components/schemas/EvmAddress'
responses:
'200':
description: User's portfolio
content:
application/json:
schema:
$ref: '#/components/schemas/GetUserPortfolioResponse'
'400':
description: Invalid request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: User not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/users/{user_address}/trades:
get:
tags:
- Users
operationId: GetUserTrades
summary: Get user trades.
description: Gets user trades on GTE. Returns all trades from all markets if `market_address` is empty.
parameters:
- name: user_address
in: path
required: true
schema:
$ref: '#/components/schemas/EvmAddress'
- name: market_address
in: query
schema:
$ref: '#/components/schemas/EvmAddress'
- name: limit
in: query
schema:
type: integer
default: 100
minimum: 1
maximum: 1000
format: uint
- name: offset
in: query
schema:
type: integer
default: 0
format: uint
responses:
'200':
description: List of user's trades
content:
application/json:
schema:
$ref: '#/components/schemas/GetTradeListResponse'
'400':
description: Invalid request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: User or market not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/users/{user_address}/open_orders:
get:
tags:
- Users
operationId: GetOpenOrders
summary: Get open orders for a user
parameters:
- name: user_address
in: path
required: true
schema:
$ref: '#/components/schemas/EvmAddress'
- name: market_address
in: query
required: true
schema:
$ref: '#/components/schemas/EvmAddress'
responses:
'200':
description: List of user's open orders
content:
application/json:
schema:
$ref: '#/components/schemas/GetUserOpenOrdersResponse'
'400':
description: Invalid request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: User or market not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/users/{user_address}/filled_orders:
get:
tags:
- Users
operationId: GetFilledOrders
summary: Get filled orders for a user
parameters:
- name: user_address
in: path
required: true
schema:
$ref: '#/components/schemas/EvmAddress'
- name: market_address
in: query
required: true
schema:
$ref: '#/components/schemas/EvmAddress'
responses:
'200':
description: List of user's filled orders
content:
application/json:
schema:
$ref: '#/components/schemas/GetUserFilledOrdersResponse'
'400':
description: Invalid request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: User or market not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/users/{user_address}/order_history:
get:
tags:
- Users
operationId: GetOrderHistory
summary: Get order history for a user
parameters:
- name: user_address
in: path
required: true
schema:
$ref: '#/components/schemas/EvmAddress'
- name: market_address
in: query
required: true
schema:
$ref: '#/components/schemas/EvmAddress'
responses:
'200':
description: List of user's order history
content:
application/json:
schema:
$ref: '#/components/schemas/GetUserOrderHistoryResponse'
'400':
description: Invalid request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: User or market not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
components:
schemas:
GetUserOrderHistoryResponse:
type: array
items:
$ref: '#/components/schemas/Order'
FilledOrder:
allOf:
- $ref: '#/components/schemas/BasicOrder'
- type: object
required:
- txnHash
- filledAt
- price
- sizeFilled
properties:
txnHash:
$ref: '#/components/schemas/EvmTxnHash'
filledAt:
type: integer
format: int64
description: Timestamp of when the order was filled in UTC millis
price:
type: string
description: Price in which the order was filled in quote tokens
sizeFilled:
type: string
description: Size filled in base token
UserPortfolio:
type: object
required:
- tokens
- totalUsdBalance
properties:
tokens:
type: array
items:
$ref: '#/components/schemas/TokenBalance'
totalUsdBalance:
type: number
format: double
description: User's total USD balance
BasicOrder:
type: object
required:
- orderId
- marketAddress
- side
properties:
orderId:
type: string
marketAddress:
$ref: '#/components/schemas/EvmAddress'
side:
$ref: '#/components/schemas/OrderSide'
GetUserOpenOrdersResponse:
type: array
items:
$ref: '#/components/schemas/OpenOrder'
Trade:
type: object
description: Trades in Launchpad and AMM markets.
required:
- timestamp
- txnHash
- maker
- taker
- price
- size
- side
- marketAddress
properties:
marketAddress:
$ref: '#/components/schemas/EvmAddress'
description: EVM address of the market
timestamp:
type: integer
format: int64
description: Timestamp of the trade in milliseconds
txnHash:
$ref: '#/components/schemas/EvmTxnHash'
description: Transaction hash of the trade
maker:
$ref: '#/components/schemas/EvmAddress'
description: EVM address of the maker
taker:
$ref: '#/components/schemas/EvmAddress'
description: EVM address of the taker
price:
type: number
format: double
description: Price of the trade in quote tokens
size:
type: number
format: double
description: Size of the trade in base tokens
side:
$ref: '#/components/schemas/TradeSide'
description: Side of the trade by the taker
Token:
type: object
required:
- address
- decimals
- name
- symbol
- totalSupply
- logoUri
- priceUsd
- volume1HrUsd
- volume24HrUsd
- marketCapUsd
properties:
address:
$ref: '#/components/schemas/EvmAddress'
decimals:
type: integer
description: Number of decimals for the token
name:
type: string
description: Name of the token
symbol:
type: string
description: Symbol of the token
totalSupply:
type: number
format: double
description: Total supply of the token
logoUri:
type: string
nullable: true
description: URI of the token's logo
priceUsd:
type: number
format: double
description: Price of token in USD
volume1HrUsd:
type: number
format: double
description: 1 hour volume in USD
volume24HrUsd:
type: number
format: double
description: 24 hour volume in USD
marketCapUsd:
type: number
format: double
description: Token market cap in USD
LpPosition:
type: object
required:
- market
- balance
- shareOfPool
- apr
- token0Amount
- token1Amount
properties:
market:
$ref: '#/components/schemas/Market'
description: Market in which the LP position is held
balance:
type: number
format: double
description: Amount of LP tokens a user holds
shareOfPool:
type: number
format: float
description: Percentage of the pool of the position
apr:
type: number
format: float
description: APR of the liquidity pool
token0Amount:
type: string
description: Amount of token0 in LP
token1Amount:
type: string
description: Amount of token1 in Lp
GetUserPortfolioResponse:
$ref: '#/components/schemas/UserPortfolio'
ErrorResponse:
type: object
required:
- message
properties:
message:
type: string
description: Error message
OpenOrder:
allOf:
- $ref: '#/components/schemas/BasicOrder'
- type: object
required:
- originalSize
- limitPrice
- sizeFilled
- placedAt
properties:
originalSize:
type: string
description: Original size of the order in base token
limitPrice:
type: string
description: Limit price of the order in quote token
sizeFilled:
type: string
description: Size filled in base token
placedAt:
type: integer
format: int64
description: Timestamp of when the order was first placed in UTC millis
GetUserFilledOrdersResponse:
type: array
items:
$ref: '#/components/schemas/FilledOrder'
GetTradeListResponse:
type: array
items:
$ref: '#/components/schemas/Trade'
Market:
type: object
required:
- marketType
- address
- baseToken
- quoteToken
- price
- priceUsd
- volume24HrUsd
- volume1HrUsd
- marketCapUsd
- createdAt
- tvlUsd
properties:
marketType:
$ref: '#/components/schemas/MarketType'
address:
$ref: '#/components/schemas/EvmAddress'
description: EVM address of the market
baseToken:
$ref: '#/components/schemas/Token'
description: Base token of the market. On AMMs, this token comes first in the pair
quoteToken:
$ref: '#/components/schemas/Token'
description: Quote token of the market. On AMMs, this token comes second in the pair
price:
type: number
format: double
description: Price of the base token in quote tokens.
priceUsd:
type: number
format: double
description: Price of the base token in USD.
volume24HrUsd:
type: number
format: double
description: Volume of the market in the last 24 hours in USD
volume1HrUsd:
type: number
format: double
description: Volume of the market in the last 1 hour in USD
marketCapUsd:
type: number
format: double
description: Market cap of the market in USD
createdAt:
type: integer
format: int64
description: Timestamp of when the market was deployed in UTC millis
nullable: true
tvlUsd:
type: number
nullable: true
format: double
description: TVL of the market in Usd. Null if not applicable.
OrderSide:
type: string
enum:
- bid
- ask
description: Side of the order
TradeSide:
type: string
enum:
- buy
- sell
description: Side of the trade
EvmTxnHash:
type: string
pattern: ^0x[a-fA-F0-9]{64}$
description: EVM transaction hash
GetUserLpPositionsResponse:
type: array
items:
$ref: '#/components/schemas/LpPosition'
MarketType:
type: string
enum:
- bonding-curve
- amm
- clob-spot
- perps
description: Type of the market
Order:
allOf:
- $ref: '#/components/schemas/BasicOrder'
- type: object
required:
- orderType
- originalSize
- limitPrice
- placedAt
properties:
orderType:
$ref: '#/components/schemas/OrderType'
originalSize:
type: string
description: Original size of the order in base token
limitPrice:
type: string
description: Limit price of the order in quote token
placedAt:
type: integer
format: int64
description: Timestamp of when the order was first placed in UTC millis
TokenBalance:
type: object
required:
- token
- balance
- balanceUsd
- realizedPnlUsd
- unrealizedPnlUsd
properties:
token:
$ref: '#/components/schemas/Token'
balance:
type: string
description: Balance of the asset
balanceUsd:
type: number
format: double
description: Balance of the asset in USD
realizedPnlUsd:
type: number
format: double
description: Realized pnl in USD
unrealizedPnlUsd:
type: number
format: double
description: Unrealized pnl in USD
EvmAddress:
type: string
pattern: ^0x[a-fA-F0-9]{40}$
description: EVM address
OrderType:
type: string
enum:
- limit
- fill