# 接口文档总索引（API Index）

> 本页把 13 个分类、73 个 接口分别映射到具体文档、SDK 方法。

## 0. 阅读顺序建议

1. 先读 [`../overview.md`](../overview.md)、[`../conventions.md`](../conventions.md)
2. 再按需要翻下面分类文档
3. 每个接口文档包含 4 块：**URL & 方法** / **入参** / **出参** / **示例（curl + Python + Node + 真实响应）**

## 1. 分类一览

| # | 分类 | 接口数 | 文档 | Phase |
|---|------|-------:|------|-------|
| 01 | 地图管理（Map Management） | 15 | [`01-map-management.md`](01-map-management.md) | C.1 |
| 02 | 瓦片 & 样式（Tiles & Styles） | 10 | [`02-tiles-styles.md`](02-tiles-styles.md) | C.2 |
| 03 | 要素查询（Query） | 4 | [`03-query.md`](03-query.md) | C.3 |
| 04 | 图形分析（Analysis） | 6 | [`04-analysis.md`](04-analysis.md) | C.4 |
| 05 | 组合 / 导出（Compose & Export） | 6 | [`05-compose-export.md`](05-compose-export.md) | C.5 |
| 06 | WebCAD（可选） | 6 | [`06-webcad.md`](06-webcad.md) | C.6 |
| 07 | 工作区（Workspace） | 5 | [`07-workspace.md`](07-workspace.md) | C.7 |
| 08 | KV 存储（Data Storage） | 5 | [`08-data-storage.md`](08-data-storage.md) | C.8 |
| 09 | 全文搜索（Full-text Search） | 3 | [`09-fullsearch.md`](09-fullsearch.md) | C.9 |
| 10 | 符号库（Symbols） | 3 | [`10-symbols.md`](10-symbols.md) | C.10 |
| 11 | 系统（System） | 4 | [`11-system.md`](11-system.md) | C.11 |
| 12 | /service 杂项（Service Misc） | 3 | [`12-service-misc.md`](12-service-misc.md) | C.12 |
| 13 | AI（可选） | 3 | [`13-ai.md`](13-ai.md) | C.13 |
| - | **合计** | **73** | - | - |

## 2. 快速找接口（常用任务 → 文档）

| 我要做…… | 看这里 |
|----------|--------|
| 上传一个 DWG 文件并在后端渲染 | `01-map-management.md` § uploads / openmap |
| 读元数据（图层列表、范围） | `01-map-management.md` § metadata |
| 生成 XYZ 瓦片 URL | `02-tiles-styles.md` § tile / mvt |
| 切换显隐图层并应用样式 | `02-tiles-styles.md` § createMapStyle / switchlayer |
| 找几何要素 | `03-query.md` § queryFeatures |
| 两图对比 | `04-analysis.md` § mapDiff / mapCompare |
| 导出 PDF / DXF | `05-compose-export.md` |
| WebCAD 修改落盘 | `06-webcad.md` |
| 存一段用户配置 JSON | `08-data-storage.md` § data/{key} |
| 全文搜索 | `09-fullsearch.md` |
| 看服务是否在运行 | `11-system.md` § heart / runstatus |

## 3. SDK 方法名速查

Python 与 Node 的方法名一一对应（snake_case ↔ camelCase）：

| Python | Node | 对应 URL |
|--------|------|---------|
| `heart()` | `heart()` | `GET /heart` |
| `version()` | `version()` | `GET /version` |
| `run_status(detail)` | `runStatus(detail)` | `GET /api/v1/map/cmd/runstatus/_/v1` |
| `upload_map(...)` | `uploadMap(...)` | `POST /api/v1/map/uploads` |
| `check_map_file(md5)` | `checkMapFile(md5)` | `GET /api/v1/map/mapfile` |
| `open_map(mapid, version, ...)` | `openMap({mapid, version, ...})` | `GET/POST /api/v1/map/openmap/{mapid}` |
| `update_map(...)` | `updateMap(...)` | `POST /api/v1/map/updatemap/{mapid}` |
| `wait_map_open_finish(mapid, version)` | `waitMapOpenFinish(mapid, version)` | 轮询 `GET /api/v1/map/cmd/listmaps/{mapid}/{version}` 到 `status=finish` |
| `close_map(mapid, version)` | `closeMap(mapid, version)` | `GET /api/v1/map/cmd/closemap/{mapid}/{version}` |
| `delete_map(mapid, version)` | `deleteMap(mapid, version)` | `GET /api/v1/map/cmd/deletemap/{mapid}/{version}` |
| `rename_map(old, new)` | `renameMap(old, new)` | `GET /api/v1/map/cmd/renamemap/{old}/_` |
| `list_maps()` | `listMaps()` | `GET /api/v1/map/cmd/listmaps/_/v1` |
| `metadata(mapid, version)` | `metadata(mapid, version)` | `GET /api/v1/map/cmd/metadata/{mapid}/{version}` |
| `update_metadata(...)` | `updateMetadata(...)` | `POST /api/v1/map/cmd/updateMetadata/{mapid}/{version}` |
| `thumbnail_url(...)` | `thumbnailUrl(...)` | `GET /api/v1/map/cmd/thumbnail/{mapid}/{version}` |
| `support_format()` | `supportFormat()` | `GET /api/v1/map/cmd/supportFormat/_/v1` |
| `const_data()` | `constData()` | `GET /api/v1/map/cmd/constData/_/v1` |
| `get_data_bounds(mapid, version)` | `getDataBounds(mapid, version)` | `GET /api/v1/map/cmd/getDataBounds/{mapid}/{version}` |
| `raster_tile_url(...)` | `rasterTileUrl(...)` | `GET /api/v1/map/tile/...` |
| `vector_tile_url(...)` | `vectorTileUrl(...)` | `GET /api/v1/map/tile/.../{z}/{x}/{y}.mvt` |
| `wms_tile_url(...)` | `wmsTileUrl(...)` | `GET /api/v1/map/cmd/wms/...` |
| `create_map_style(...)` | `createMapStyle(...)` | `POST /api/v1/map/cmd/createMapStyle/...` |
| `cmd_switch_layers(...)` | `cmdSwitchLayers(...)` | `POST /api/v1/map/cmd/switchlayer/...` |
| `cmd_update_style(...)` | `cmdUpdateStyle(...)` | `POST /api/v1/map/cmd/updateStyle/...` |
| `slice_layer(...)` | `sliceLayer(...)` | `POST /api/v1/map/cmd/slicelayer/...` |
| `get_slice_cache_zoom(...)` | `getSliceCacheZoom(...)` | `POST /api/v1/map/cmd/getSliceCacheZoom/...` |
| `delete_style(...)` | `deleteStyle(...)` | `POST /api/v1/map/cmd/deletestyle/...` |
| `query_features(...)` | `queryFeatures(...)` | `POST /api/v1/map/cmd/queryFeatures/...` |
| `create_entity_geo_data(...)` | `createEntityGeoData(...)` | `POST /api/v1/map/cmd/createEntityGeoData/_null/v1` |
| `coord_transform(...)` | `coordTransform(...)` | `POST /api/v1/map/cmd/coordtransform/_/_` |
| `prj_wkt_to_prj4_str(...)` | `prjWktToPrj4Str(...)` | `POST /api/v1/map/cmd/prjWktToPrj4Str/_/_` |
| `cmd_map_diff(...)` | `cmdMapDiff(...)` | `POST /api/v1/map/cmd/mapDiff/_null/v1` |
| `cmd_map_compare(...)` | `cmdMapCompare(...)` | `POST /api/v1/map/cmd/mapCompare/_null/v1` |
| `cmd_extract_table(...)` | `cmdExtractTable(...)` | `POST /api/v1/map/cmd/extractTable/_null/v1` |
| `cmd_extract_center_lines(...)` | `cmdExtractCenterLines(...)` | `POST /api/v1/map/cmd/extractCenterLines/_null/v1` |
| `cmd_match_object(...)` | `cmdMatchObject(...)` | `POST /api/v1/map/cmd/objectMatch/_null/v1` |
| `cmd_image_svg_to_dwg(...)` | `cmdImageSvgToDwg(...)` | `POST /api/v1/map/cmd/imageSvgToDwg/_null/v1` |
| `cmd_compose_new_map(...)` | `cmdComposeNewMap(...)` | `POST /api/v1/map/cmd/composeNewMap/_null/v1` |
| `cmd_split_map(...)` | `cmdSplitMap(...)` | `POST /api/v1/map/cmd/cmdSplitMap/_null/v1` |
| `cmd_export_layout(...)` | `cmdExportLayout(...)` | `POST /api/v1/map/cmd/exportLayout/_null/v1` |
| `cmd_export_pdf(...)` | `cmdExportPdf(...)` | `POST /api/v1/map/cmd/exportPdf/{mapid}/{version}` |
| `cmd_export_dxf(...)` | `cmdExportDxf(...)` | `POST /api/v1/map/cmd/exportDxf/{mapid}/{version}` |
| `cmd_save_offline_tile_db(...)` | `cmdSaveOfflineTileDb(...)` | `POST /api/v1/map/cmd/saveOfflineTileDb/_null/v1` |
| `list_webcad_draws()` | `listWebcadDraws()` | `GET /api/v1/map/cmd/listWebcadDraws/_/v1` |
| `get_webcad_data(...)` | `getWebcadData(...)` | `POST /api/v1/map/cmd/getWebcadData/...` |
| `save_webcad_patch(...)` | `saveWebcadPatch(...)` | `POST /api/v1/map/cmd/saveWebcadPatch/...` |
| `delete_webcad_draw(...)` | `deleteWebcadDraw(...)` | `POST /api/v1/map/cmd/deleteWebcadDraw/...` |
| `convert_webcad(...)` | `convertWebcad(...)` | `POST /api/v1/map/cmd/convertWebCAD/...` |
| `export_webcad(...)` | `exportWebcad(...)` | `POST /api/v1/map/cmd/exportWebCAD/_null/v1` |
| `get_workspaces()` | `getWorkspaces()` | `GET /api/v1/service/getWorkspace` |
| `workspace_create(...)` | `workspaceCreate(...)` | `POST /api/v1/service/workspaceCreate` |
| `workspace_modify(...)` | `workspaceModify(...)` | `POST /api/v1/service/workspaceModify` |
| `workspace_delete(name)` | `workspaceDelete(name)` | `DELETE /api/v1/service/workspaceDelete/{name}` |
| `workspace_status()` | `workspaceStatus()` | `GET /api/v1/service/workspaceStatus` |
| `get_custom_data(key)` | `getCustomData(key)` | `GET /api/v1/service/data/{key}` |
| `save_custom_data(key, val)` | `saveCustomData(key, val)` | `POST /api/v1/service/data/{key}` |
| `delete_custom_data(key)` | `deleteCustomData(key)` | `DELETE /api/v1/service/data/{key}` |
| `save_multiple_custom_data(...)` | `saveMultipleCustomData(...)` | `POST /api/v1/service/datas` |
| `get_custom_data_keys(prefix)` | `getCustomDataKeys(prefix)` | `GET /api/v1/service/datakeys` |
| `full_search(...)` | `fullSearch(...)` | `GET/POST /api/v1/service/fullsearch/search` |
| `full_search_add(...)` | `fullSearchAdd(...)` | `POST /api/v1/service/fullsearch/add` |
| `full_search_delete(...)` | `fullSearchDelete(...)` | `DELETE /api/v1/service/fullsearch/delete` |
| `symbol_categories()` | `symbolCategories()` | `GET /api/v1/service/symbol/categories` |
| `symbol_list(cat)` | `symbolList(cat)` | `GET /api/v1/service/symbol/list/{cat}` |
| `symbol_get(id)` | `symbolGet(id)` | `GET /api/v1/service/symbol/{id}` |
| `view_logs(record)` | `viewLogs(record)` | `GET /api/v1/map/cmd/viewlogs/_/v1` |
| `qrcode_url(content, size)` | `qrcodeUrl(content, size)` | `GET /api/v1/service/qrcode` |
| `glyphs_url(fontstack, range)` | `glyphsUrl(fontstack, range)` | `GET /api/v1/service/fonts/...` |
| `upload_img(file)` | `uploadImg(file)` | `POST /api/v1/service/uploadImg` |
| `vector_search(...)` | `vectorSearch(...)` | `POST /api/v1/service/vectorSearch` |
| `chat_faq()` | `chatFaq()` | `GET /api/v1/service/chatFaq` |
| `vector_docs(...)` | `vectorDocs(...)` | `GET /api/v1/service/vectorDocs` |

> 
