Skip to content

HTTP Protocol

haipo yang edited this page May 16, 2017 · 44 revisions

测试地址

192.168.1.1:8080

接口约定

接口使用基于 HTTP 协议的 JSON RPC 方案,HTTP 请求方法必须为 POST, URL 为:/ , Content-Type 为:application/json

Server 不做缓存,请调用方做好数据缓存

Request

  • method: 方法,String
  • params: 参数,Array
  • id: Request id, Integer

Response

  • result: Json 对象,null 表示失败
  • error: Json 对象,null 表示成功,非 null 表示失败
  1. code: error code
  2. message: error message
  • id: Request id, Integer

通用 error code:

  • 1: invalid argument
  • 2: internal error
  • 3: service unavailable
  • 4: method not found
  • 5: service timeout

资金接口

资金查询

  • method: balance.query
  • params: 不固定参数,第一个参数为用户ID,后面为资产名列表,如果列表为空,则返回用户所有资产情况
  1. user_id:用户 ID,Integer
  • result: {"asset": {"available": "amount", "freeze": "amount"}}
  • example:
"params": [1, "BTC"]
"result": {"BTC": {"available": "1.10000000","freeze": "9.90000000"}}

资金变更

  • method: balance.update
  • params:
  1. user_id: 用户 ID,Integer
  2. asset: 资产名,String
  3. business: 业务类型,String
  4. business_id: 业务 ID,Integer, 多次相同 user_id, asset, business, business_id 的操作只会成功一次
  5. change: 变化金额,String, 负数表示扣除
  6. detail: Json 对象,附带信息
  • result: "success"
  • error code:
  1. repeat update
  2. balance not enough
  • example:
"params": [1, "BTC", "deposit", 100, "1.2345"]
"result": "success"

资金历史

  • method: balance.history
  • params:
  1. user_id: 用户 ID, Integer
  2. asset: 资产名,可以为空
  3. business: 业务,可以为空,多个业务以 ',' 分割
  4. start_time: 起始时间,0 表示不限制,Integer
  5. end_time: 结束时间,0 表示不限制, Integer
  6. offset: 偏移位置,Integer
  7. limit: 数量限制,Integer
  • result:
{
    "total":
    "offset":
    "limit":
    "records": [
        {
            "time": timestamp,
            "asset": asset,
            "business": business,
            "change": change,
            "balance":balance,
            "detail": detail
        }
        ...
    ]

交易接口

下现价单

  • method: order.put_limit
  • params:
  1. user_id: 用户 ID,Integer
  2. market: 市场名,String
  3. side: 1: 卖单, 2: 买单,Integer
  4. amount: 数量,String
  5. pride: 价格,String
  6. taker_fee_rate: String, taker 费率
  7. maker_fee_rate: String, maker 费率
  8. source: String, 来源,最长不超过30个字节
  • result: success
  • error:
  1. balance not enough
  • example:
params: [1, "BTCCNY", 1, "10", "8000", "0.002", "0.001"]

下市价单

  • method: order.put_market
  • params:
  1. user_id: 用户 ID,Integer
  2. market: 市场名,String
  3. side: 1: 卖单, 2: 买单,Integer
  4. amount: 数量或金额,String
  5. taker_fee_rate: taker 费率
  6. source: String, 来源,最长不超过30个字节
  • result: success
  • error:
  1. balance not enough
  • example:
params: '[1, "BTCCNY", 1, "10","0.002"]'

取消订单

  • method: order.cancel
  • params:
  1. user_id: 用户ID
  2. market:市场
  3. order_id: 订单ID
  • result: success
  • error:
  1. order not found
  2. user not match

成交详情

  • method: order.deals
  • params:
  1. order_id: 订单ID, Integer
  2. offset
  3. limit
  • result:
  • example:
"result": {
    "offset":
    "limit":
    "total":
    "records": [
        {
            "time": 时间戳
            "amount": 数量
            "price": 价格
            "deal": 成交金额
            "fee": 费用
            "deal_order_id": 对手交易 ID
            "role": 角色,1:Maker, 2: Taker
        }
    ...
    ]

订单列表

  • method: order.book
  • params:
  1. market:
  2. side: 方向,1:卖单,2:买单
  3. offset:
  4. limit:
  • result:

订单深度

  • method: order.depth
  • params:
  1. market:市场名
  2. limit: 数量限制,Integer
  3. interval: 间隔,String, 比如 "1" 表示间隔 1 个单位, "0" 表示无间隔
  • result:
"result": {
    "asks": [
        [
            "8000.00",
            "9.6250"
        ]
    ],
    "bids": [
        [
            "7000.00",
            "0.1000"
        ]
    ]
}

查询未成交订单

  • method: order.pending
  • params:
  1. user_id: 用户 ID,Integer
  2. market: 市场名,String
  3. offset: 偏移量,Integer
  4. limit: 限制量,Integer
  • result:
  • example:
"params": [1, "BTCCNY", 0, 100]"
"result": {
    "offset": 0,
    "limit": 100,
    "total": 1,
    "records": [
        {
            "id": 2,
            "ctime": 1492616173.355293,
            "mtime": 1492697636.238869,
            "market": "BTCCNY",
            "user": 2,
            "type": 1, // 1: 限价单,2:市价单
            "side": 2, // 1:卖单,2:买单
            "amount": "1.0000".
            "price": "7000.00",
            "taker_fee": "0.0020",
            "maker_fee": "0.0010",
            "source": "web",
            "deal_money": "6300.0000000000",
            "deal_stock": "0.9000000000",
            "deal_fee": "0.0009000000"
        }
    ]
}

未成交订单详情

  • method: order.pending_detail
  • params:
  1. market:
  2. order_id: 订单ID,Interger
  • result:

查询已成交订单

  • method: order.finished
  • params:
  1. user_id: 用户 ID,Integer
  2. market: 市场名,String
  3. start_time: 起始时间,0 表示不限制,Integer
  4. end_time: 结束时间,0 表示不限制, Integer
  5. offset: 偏移量,Integer
  6. limit: 限制量,Integer
  • result:

已成交订单详情

  • method: order.finished_detail
  • params:
  1. order_id: 订单ID,Interger
  • result:

行情接口

市场价格

  • method: market.last
  • params:
  1. market
  • result: "price"

成交历史

  • method: market.deals
  • params:
  1. market:
  2. limit: 数量,不超过 10000
  3. last_id: id 限制
  • result:
"result": [
    {
        "id": 5,
        "time": 1492697636.238869,
        "type": "sell",
        "amount": "0.1000",
        "price": "7000.00"
    },
    {
        "id": 4,
        "time": 1492697467.1411841,
        "type": "sell",
        "amount": "0.1000"
        "price": "7000.00",
    }
}

KLine

  • method: market.kline
  • params:
  1. market: 市场
  2. start: 开始时间,Integer
  3. end: 结束时间, Integer
  4. interval: 周期秒数, Integer
  • result:
"result": [
    [
        1492358400, 时间
        "7000.00",  开盘
        "8000.0",   收盘
        "8100.00",  最高
        "6800.00",  最低
        "1000.00"   成交量
    ]
]

市场状态

  • method: market.status
  • params:
  1. market: 市场名
  2. period: 周期秒数,Integer, 比如 86400 表示过去 24 小时
  • result:
"result": {
    "period": 86400,
    "last": "7000.00",
    "open": "0",
    "close": "0",
    "high": "0",
    "low": "0",
    "volume": "0"
}

今日市场状态

  • method: market.status_today
  • params:
  1. market: 市场名
  • result:
{
    "open": 今日开盘
    "last": 最新价格
    "high": 最高价格
    "low":  最低价格
    "volume": 24小时成交量
}
Clone this wiki locally