Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
65 changes: 65 additions & 0 deletions .github/workflows/api-validation.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
name: API Validation

on:
pull_request:
paths:
- 'openapi/**'
- 'script/**'
- 'docs/**'
- '.github/workflows/api-validation.yml'
push:
branches:
- main
- canary
paths:
- 'openapi/**'
- 'script/**'
- 'docs/**'
- '.github/workflows/api-validation.yml'
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
validate-apis:
name: Validate HTTP APIs (OpenAPI-driven)
runs-on: ubuntu-latest
timeout-minutes: 20
env:
OPENAPI_BASE_URL: https://openapi.longbridge.xyz
OPENAPI_OAUTH_DISCOVERY: https://openapi.longbridge.xyz/.well-known/oauth-authorization-server
OPENAPI_ACCESS_TOKEN: ${{ secrets.OPENAPI_ACCESS_TOKEN }}
OPENAPI_CLIENT_ID: ${{ secrets.OPENAPI_CLIENT_ID }}
OPENAPI_CLIENT_SECRET: ${{ secrets.OPENAPI_CLIENT_SECRET }}
OPENAPI_REFRESH_TOKEN: ${{ secrets.OPENAPI_REFRESH_TOKEN }}
OPENAPI_REDIRECT_URI: ${{ secrets.OPENAPI_REDIRECT_URI }}
OPENAPI_AUTH_CODE: ${{ secrets.OPENAPI_AUTH_CODE }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 1

- uses: oven-sh/setup-bun@v2

- name: Install dependencies
run: bun install --frozen-lockfile

- name: Generate API catalog page
run: bun run generate:api-catalog

- name: Split Try-It APIs from docs
run: bun run split:tryit-apis

- name: Generate API validation cases from OpenAPI
run: bun run generate:api-cases

- name: Run API validation
run: bun run validate:apis

- name: Upload Try-It API split artifacts
uses: actions/upload-artifact@v4
with:
name: tryit-api-split
path: openapi/tryit/*.json
2 changes: 1 addition & 1 deletion docs/en/docs/api-reference/_category_.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@
"position": 4.5,
"label": "API Reference",
"collapsible": true,
"collapsed": true,
"collapsed": false,
"link": null
}
55 changes: 55 additions & 0 deletions docs/en/docs/api-reference/endpoints.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
---
title: API Endpoints
id: api-endpoints-catalog
slug: /api-endpoints
sidebar_position: 1
---

All HTTP APIs, listed one-by-one like an API reference catalog.

## ASSET

| Method | Path | API | Try-It |
| --- | --- | --- | --- |
| `GET` | `/v1/asset/account` | [Get Account Balance](../trade/asset/account) | [Try](../trade/asset/account?mode=try-it) |
| `GET` | `/v1/asset/cashflow` | [Get Cash Flow](../trade/asset/cashflow) | [Try](../trade/asset/cashflow?mode=try-it) |
| `GET` | `/v1/asset/fund` | [Get Fund Positions](../trade/asset/fund) | [Try](../trade/asset/fund?mode=try-it) |
| `GET` | `/v1/asset/stock` | [Get Stock Positions](../trade/asset/stock) | [Try](../trade/asset/stock?mode=try-it) |

## QUOTE

| Method | Path | API | Try-It |
| --- | --- | --- | --- |
| `GET` | `/v1/quote/get_security_list` | [Retrieve the List of Securities](../quote/security/security) | [Try](../quote/security/security?mode=try-it) |
| `GET` | `/v1/quote/history_market_temperature` | [Historical Market Temperature](../quote/pull/history-market-temp) | [Try](../quote/pull/history-market-temp?mode=try-it) |
| `GET` | `/v1/quote/market_temperature` | [Current Market Temperature](../quote/pull/market-temp) | [Try](../quote/pull/market-temp?mode=try-it) |

## RISK

| Method | Path | API | Try-It |
| --- | --- | --- | --- |
| `GET` | `/v1/risk/margin-ratio` | [Get Margin Ratio](../trade/asset/margin_ratio) | [Try](../trade/asset/margin_ratio?mode=try-it) |

## TRADE

| Method | Path | API | Try-It |
| --- | --- | --- | --- |
| `GET` | `/v1/trade/estimate/buy_limit` | [Estimate Maximum Purchase Quantity](../trade/order/estimate_available_buy_limit) | [Try](../trade/order/estimate_available_buy_limit?mode=try-it) |
| `GET` | `/v1/trade/execution/history` | [Get History Executions](../trade/execution/history_executions) | [Try](../trade/execution/history_executions?mode=try-it) |
| `GET` | `/v1/trade/execution/today` | [Get Today Executions](../trade/execution/today_executions) | [Try](../trade/execution/today_executions?mode=try-it) |
| `DELETE` | `/v1/trade/order` | [Withdraw Order](../trade/order/withdraw) | [Try](../trade/order/withdraw?mode=try-it) |
| `GET` | `/v1/trade/order` | [Order Details](../trade/order/order_detail) | [Try](../trade/order/order_detail?mode=try-it) |
| `POST` | `/v1/trade/order` | [Submit Order](../trade/order/submit) | [Try](../trade/order/submit?mode=try-it) |
| `PUT` | `/v1/trade/order` | [Replace Order](../trade/order/replace) | [Try](../trade/order/replace?mode=try-it) |
| `GET` | `/v1/trade/order/history` | [Get History Order](../trade/order/history_orders) | [Try](../trade/order/history_orders?mode=try-it) |
| `GET` | `/v1/trade/order/today` | [Get Today Order](../trade/order/today_orders) | [Try](../trade/order/today_orders?mode=try-it) |

## WATCHLIST

| Method | Path | API | Try-It |
| --- | --- | --- | --- |
| `DELETE` | `/v1/watchlist/groups` | [Delete Watchlist Group](../quote/individual/watchlist_delete_group) | [Try](../quote/individual/watchlist_delete_group?mode=try-it) |
| `GET` | `/v1/watchlist/groups` | [Watchlist Group](../quote/individual/watchlist_groups) | [Try](../quote/individual/watchlist_groups?mode=try-it) |
| `POST` | `/v1/watchlist/groups` | [Create Watchlist Group](../quote/individual/watchlist_create_group) | [Try](../quote/individual/watchlist_create_group?mode=try-it) |
| `PUT` | `/v1/watchlist/groups` | [Update Watchlist Group](../quote/individual/watchlist_update_group) | [Try](../quote/individual/watchlist_update_group?mode=try-it) |

45 changes: 45 additions & 0 deletions docs/en/docs/api-reference/http-endpoints.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
---
title: HTTP API Endpoints
id: http-api-endpoints
slug: /http-api-endpoints
sidebar_position: 2
---

This page is generated by reverse-checking the SDK method mappings in current docs, to make HTTP API discovery easier from **API Reference**.

## Trade APIs

| Method | HTTP URL | SDK Method | Detailed Doc |
| --- | --- | --- | --- |
| GET | `/v1/trade/order/today` | `trade.today_orders` | [Today Orders](../trade/order/today_orders) |
| GET | `/v1/trade/estimate/buy_limit` | `trade.estimate_max_purchase_quantity` | [Estimate Available Buy Limit](../trade/order/estimate_available_buy_limit) |
| POST | `/v1/trade/order` | `trade.submit_order` | [Submit Order](../trade/order/submit) |
| PUT | `/v1/trade/order` | `trade.replace_order` | [Replace Order](../trade/order/replace) |
| DELETE | `/v1/trade/order` | `trade.cancel_order` | [Withdraw Order](../trade/order/withdraw) |
| GET | `/v1/trade/order` | `trade.order_detail` | [Order Detail](../trade/order/order_detail) |
| GET | `/v1/trade/order/history` | `trade.history_orders` | [History Orders](../trade/order/history_orders) |
| GET | `/v1/trade/execution/today` | `trade.today_executions` | [Today Executions](../trade/execution/today_executions) |
| GET | `/v1/trade/execution/history` | `trade.history_executions` | [History Executions](../trade/execution/history_executions) |
| GET | `/v1/asset/account` | `trade.account_balance` | [Account Balance](../trade/asset/account) |
| GET | `/v1/asset/cashflow` | `trade.cash_flow` | [Cash Flow](../trade/asset/cashflow) |
| GET | `/v1/asset/fund` | `trade.fund_positions` | [Fund Positions](../trade/asset/fund) |
| GET | `/v1/asset/stock` | `trade.stock_positions` | [Stock Positions](../trade/asset/stock) |
| GET | `/v1/risk/margin-ratio` | `trade.margin_ratio` | [Margin Ratio](../trade/asset/margin_ratio) |

## Quote APIs

| Method | HTTP URL | SDK Method | Detailed Doc |
| --- | --- | --- | --- |
| GET | `/v1/quote/market_temperature` | `quote.market_temperature` | [Market Temperature](../quote/pull/market-temp) |
| GET | `/v1/quote/history_market_temperature` | `quote.history_market_temperature` | [History Market Temperature](../quote/pull/history-market-temp) |
| GET | `/v1/quote/get_security_list` | `quote.security_list` | [Security List](../quote/security/security) |
| GET | `/v1/watchlist/groups` | `quote.watchlist` | [Watchlist Groups](../quote/individual/watchlist_groups) |
| POST | `/v1/watchlist/groups` | `quote.create_watchlist_group` | [Create Watchlist Group](../quote/individual/watchlist_create_group) |
| PUT | `/v1/watchlist/groups` | `quote.update_watchlist_group` | [Update Watchlist Group](../quote/individual/watchlist_update_group) |
| DELETE | `/v1/watchlist/groups` | `quote.delete_watchlist_group` | [Delete Watchlist Group](../quote/individual/watchlist_delete_group) |

## Notes

- If you are looking for authentication/signature details, see [Overview](./how-to-access-api).
- If you need endpoint-level request/response examples, use the "Detailed Doc" links above.
- Next step: we can continue expanding this page with complete parameter snapshots generated from SDK/protocol definitions.
2 changes: 1 addition & 1 deletion docs/zh-CN/docs/api-reference/_category_.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@
"position": 4.5,
"label": "API 附录",
"collapsible": true,
"collapsed": true,
"collapsed": false,
"link": null
}
55 changes: 55 additions & 0 deletions docs/zh-CN/docs/api-reference/endpoints.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
---
title: API 接口目录
id: api-endpoints-catalog
slug: /api-endpoints
sidebar_position: 1
---

按接口逐条列出所有 HTTP API,便于快速检索与跳转。

## ASSET

| Method | Path | API | Try-It |
| --- | --- | --- | --- |
| `GET` | `/v1/asset/account` | [获取账户资金](../trade/asset/account) | [Try](../trade/asset/account?mode=try-it) |
| `GET` | `/v1/asset/cashflow` | [获取资金流水](../trade/asset/cashflow) | [Try](../trade/asset/cashflow?mode=try-it) |
| `GET` | `/v1/asset/fund` | [获取基金持仓](../trade/asset/fund) | [Try](../trade/asset/fund?mode=try-it) |
| `GET` | `/v1/asset/stock` | [获取股票持仓](../trade/asset/stock) | [Try](../trade/asset/stock?mode=try-it) |

## QUOTE

| Method | Path | API | Try-It |
| --- | --- | --- | --- |
| `GET` | `/v1/quote/get_security_list` | [获取标的列表](../quote/security/security) | [Try](../quote/security/security?mode=try-it) |
| `GET` | `/v1/quote/history_market_temperature` | [历史市场温度](../quote/pull/history-market-temp) | [Try](../quote/pull/history-market-temp?mode=try-it) |
| `GET` | `/v1/quote/market_temperature` | [当前市场温度](../quote/pull/market-temp) | [Try](../quote/pull/market-temp?mode=try-it) |

## RISK

| Method | Path | API | Try-It |
| --- | --- | --- | --- |
| `GET` | `/v1/risk/margin-ratio` | [获取保证金比例](../trade/asset/margin_ratio) | [Try](../trade/asset/margin_ratio?mode=try-it) |

## TRADE

| Method | Path | API | Try-It |
| --- | --- | --- | --- |
| `GET` | `/v1/trade/estimate/buy_limit` | [预估最大购买数量](../trade/order/estimate_available_buy_limit) | [Try](../trade/order/estimate_available_buy_limit?mode=try-it) |
| `GET` | `/v1/trade/execution/history` | [获取历史成交明细](../trade/execution/history_executions) | [Try](../trade/execution/history_executions?mode=try-it) |
| `GET` | `/v1/trade/execution/today` | [获取当日成交明细](../trade/execution/today_executions) | [Try](../trade/execution/today_executions?mode=try-it) |
| `DELETE` | `/v1/trade/order` | [撤销订单](../trade/order/withdraw) | [Try](../trade/order/withdraw?mode=try-it) |
| `GET` | `/v1/trade/order` | [订单详情](../trade/order/order_detail) | [Try](../trade/order/order_detail?mode=try-it) |
| `POST` | `/v1/trade/order` | [委托下单](../trade/order/submit) | [Try](../trade/order/submit?mode=try-it) |
| `PUT` | `/v1/trade/order` | [修改订单](../trade/order/replace) | [Try](../trade/order/replace?mode=try-it) |
| `GET` | `/v1/trade/order/history` | [获取历史订单](../trade/order/history_orders) | [Try](../trade/order/history_orders?mode=try-it) |
| `GET` | `/v1/trade/order/today` | [获取当日订单](../trade/order/today_orders) | [Try](../trade/order/today_orders?mode=try-it) |

## WATCHLIST

| Method | Path | API | Try-It |
| --- | --- | --- | --- |
| `DELETE` | `/v1/watchlist/groups` | [删除自选股分组](../quote/individual/watchlist_delete_group) | [Try](../quote/individual/watchlist_delete_group?mode=try-it) |
| `GET` | `/v1/watchlist/groups` | [获取自选股分组](../quote/individual/watchlist_groups) | [Try](../quote/individual/watchlist_groups?mode=try-it) |
| `POST` | `/v1/watchlist/groups` | [创建自选股分组](../quote/individual/watchlist_create_group) | [Try](../quote/individual/watchlist_create_group?mode=try-it) |
| `PUT` | `/v1/watchlist/groups` | [更新自选股分组](../quote/individual/watchlist_update_group) | [Try](../quote/individual/watchlist_update_group?mode=try-it) |

45 changes: 45 additions & 0 deletions docs/zh-CN/docs/api-reference/http-endpoints.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
---
title: HTTP API 端点索引
id: http-api-endpoints
slug: /http-api-endpoints
sidebar_position: 2
---

这个页面基于当前文档里的 SDK 映射反向整理,目的是让 **API 附录** 中更容易检索 HTTP API。

## 交易类 API

| 方法 | HTTP URL | SDK 方法 | 详细文档 |
| --- | --- | --- | --- |
| GET | `/v1/trade/order/today` | `trade.today_orders` | [今日订单](../trade/order/today_orders) |
| GET | `/v1/trade/estimate/buy_limit` | `trade.estimate_max_purchase_quantity` | [预估最大可买数量](../trade/order/estimate_available_buy_limit) |
| POST | `/v1/trade/order` | `trade.submit_order` | [提交订单](../trade/order/submit) |
| PUT | `/v1/trade/order` | `trade.replace_order` | [修改订单](../trade/order/replace) |
| DELETE | `/v1/trade/order` | `trade.cancel_order` | [撤销订单](../trade/order/withdraw) |
| GET | `/v1/trade/order` | `trade.order_detail` | [订单详情](../trade/order/order_detail) |
| GET | `/v1/trade/order/history` | `trade.history_orders` | [历史订单](../trade/order/history_orders) |
| GET | `/v1/trade/execution/today` | `trade.today_executions` | [今日成交](../trade/execution/today_executions) |
| GET | `/v1/trade/execution/history` | `trade.history_executions` | [历史成交](../trade/execution/history_executions) |
| GET | `/v1/asset/account` | `trade.account_balance` | [账户余额](../trade/asset/account) |
| GET | `/v1/asset/cashflow` | `trade.cash_flow` | [现金流水](../trade/asset/cashflow) |
| GET | `/v1/asset/fund` | `trade.fund_positions` | [基金持仓](../trade/asset/fund) |
| GET | `/v1/asset/stock` | `trade.stock_positions` | [股票持仓](../trade/asset/stock) |
| GET | `/v1/risk/margin-ratio` | `trade.margin_ratio` | [保证金比例](../trade/asset/margin_ratio) |

## 行情类 API

| 方法 | HTTP URL | SDK 方法 | 详细文档 |
| --- | --- | --- | --- |
| GET | `/v1/quote/market_temperature` | `quote.market_temperature` | [市场温度](../quote/pull/market-temp) |
| GET | `/v1/quote/history_market_temperature` | `quote.history_market_temperature` | [历史市场温度](../quote/pull/history-market-temp) |
| GET | `/v1/quote/get_security_list` | `quote.security_list` | [标的列表](../quote/security/security) |
| GET | `/v1/watchlist/groups` | `quote.watchlist` | [自选组列表](../quote/individual/watchlist_groups) |
| POST | `/v1/watchlist/groups` | `quote.create_watchlist_group` | [创建自选组](../quote/individual/watchlist_create_group) |
| PUT | `/v1/watchlist/groups` | `quote.update_watchlist_group` | [更新自选组](../quote/individual/watchlist_update_group) |
| DELETE | `/v1/watchlist/groups` | `quote.delete_watchlist_group` | [删除自选组](../quote/individual/watchlist_delete_group) |

## 说明

- 鉴权、签名、请求基础规范请看 [总览](./how-to-access-api)。
- 每个接口的参数与请求/响应示例,请点击上面的“详细文档”。
- 下一步可继续补齐:从 SDK/协议自动生成更完整的参数快照。
2 changes: 1 addition & 1 deletion docs/zh-HK/docs/api-reference/_category_.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@
"position": 4.5,
"label": "API Reference",
"collapsible": true,
"collapsed": true,
"collapsed": false,
"link": null
}
55 changes: 55 additions & 0 deletions docs/zh-HK/docs/api-reference/endpoints.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
---
title: API 介面目錄
id: api-endpoints-catalog
slug: /api-endpoints
sidebar_position: 1
---

按介面逐條列出所有 HTTP API,方便快速檢索與跳轉。

## ASSET

| Method | Path | API | Try-It |
| --- | --- | --- | --- |
| `GET` | `/v1/asset/account` | [獲取賬戶資金](../trade/asset/account) | [Try](../trade/asset/account?mode=try-it) |
| `GET` | `/v1/asset/cashflow` | [獲取資金流水](../trade/asset/cashflow) | [Try](../trade/asset/cashflow?mode=try-it) |
| `GET` | `/v1/asset/fund` | [獲取基金持倉](../trade/asset/fund) | [Try](../trade/asset/fund?mode=try-it) |
| `GET` | `/v1/asset/stock` | [獲取股票持倉](../trade/asset/stock) | [Try](../trade/asset/stock?mode=try-it) |

## QUOTE

| Method | Path | API | Try-It |
| --- | --- | --- | --- |
| `GET` | `/v1/quote/get_security_list` | [獲取標的列表](../quote/security/security) | [Try](../quote/security/security?mode=try-it) |
| `GET` | `/v1/quote/history_market_temperature` | [歷史市場溫度](../quote/pull/history-market-temp) | [Try](../quote/pull/history-market-temp?mode=try-it) |
| `GET` | `/v1/quote/market_temperature` | [當前市場溫度](../quote/pull/market-temp) | [Try](../quote/pull/market-temp?mode=try-it) |

## RISK

| Method | Path | API | Try-It |
| --- | --- | --- | --- |
| `GET` | `/v1/risk/margin-ratio` | [獲取保證金比例](../trade/asset/margin_ratio) | [Try](../trade/asset/margin_ratio?mode=try-it) |

## TRADE

| Method | Path | API | Try-It |
| --- | --- | --- | --- |
| `GET` | `/v1/trade/estimate/buy_limit` | [預估最大購買數量](../trade/order/estimate_available_buy_limit) | [Try](../trade/order/estimate_available_buy_limit?mode=try-it) |
| `GET` | `/v1/trade/execution/history` | [獲取歷史成交明細](../trade/execution/history_executions) | [Try](../trade/execution/history_executions?mode=try-it) |
| `GET` | `/v1/trade/execution/today` | [獲取當日成交明細](../trade/execution/today_executions) | [Try](../trade/execution/today_executions?mode=try-it) |
| `DELETE` | `/v1/trade/order` | [撤銷訂單](../trade/order/withdraw) | [Try](../trade/order/withdraw?mode=try-it) |
| `GET` | `/v1/trade/order` | [訂單詳情](../trade/order/order_detail) | [Try](../trade/order/order_detail?mode=try-it) |
| `POST` | `/v1/trade/order` | [委托下單](../trade/order/submit) | [Try](../trade/order/submit?mode=try-it) |
| `PUT` | `/v1/trade/order` | [修改訂單](../trade/order/replace) | [Try](../trade/order/replace?mode=try-it) |
| `GET` | `/v1/trade/order/history` | [獲取歷史訂單](../trade/order/history_orders) | [Try](../trade/order/history_orders?mode=try-it) |
| `GET` | `/v1/trade/order/today` | [獲取當日訂單](../trade/order/today_orders) | [Try](../trade/order/today_orders?mode=try-it) |

## WATCHLIST

| Method | Path | API | Try-It |
| --- | --- | --- | --- |
| `DELETE` | `/v1/watchlist/groups` | [刪除自選股分組](../quote/individual/watchlist_delete_group) | [Try](../quote/individual/watchlist_delete_group?mode=try-it) |
| `GET` | `/v1/watchlist/groups` | [獲取關注分組](../quote/individual/watchlist_groups) | [Try](../quote/individual/watchlist_groups?mode=try-it) |
| `POST` | `/v1/watchlist/groups` | [創建自選股分組](../quote/individual/watchlist_create_group) | [Try](../quote/individual/watchlist_create_group?mode=try-it) |
| `PUT` | `/v1/watchlist/groups` | [更新自選股分組](../quote/individual/watchlist_update_group) | [Try](../quote/individual/watchlist_update_group?mode=try-it) |

Loading