Files
aiaa-notification-server/docs/httpie/postman_collection.json
T
ryan c7e154d7cc feat(钉钉通道): 支持仅使用 access_token 配置钉钉机器人
Motivation:
钉钉机器人的 webhook 前缀固定不变,要求用户填写完整 URL 冗余且容易出错。简化通道配置项,降低接入配置成本,同时保证存量配置不受影响。

Changes:

* 钉钉通道配置改用 access_token,webhook 前缀由内部固定拼接
* 保留对旧 webhook_url 配置的兼容,access_token 存在时优先生效
* 新增 webhook 地址解析逻辑的单元测试,覆盖优先级与回退场景
* 同步更新 README、HTTP 请求示例及设计文档中的配置示例
* E2E 测试改用 E2E_DINGTALK_ACCESS_TOKEN 环境变量并按新格式创建通道
2026-08-19 15:14:38 +08:00

567 lines
18 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"info": {
"_postman_id": "aiaa-notification-service",
"name": "AIAA Notification Service",
"description": "通知服务 API。HTTPieImport → Postman → 选择本文件。\n\n变量:\n- baseUrl:服务地址\n- adminKeyconfig.yaml → server.admin_key\n- sourceApiKey:创建 Source 时返回的 api_key",
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
},
"variable": [
{ "key": "baseUrl", "value": "http://localhost:8080" },
{ "key": "adminKey", "value": "admin-sk-change-me" },
{ "key": "sourceApiKey", "value": "SOURCE_API_KEY" },
{ "key": "sourceId", "value": "1" },
{ "key": "templateId", "value": "1" },
{ "key": "channelId", "value": "1" },
{ "key": "ruleId", "value": "1" }
],
"item": [
{
"name": "Health",
"item": [
{
"name": "健康检查",
"request": {
"method": "GET",
"header": [],
"url": "{{baseUrl}}/health"
}
}
]
},
{
"name": "Notify",
"item": [
{
"name": "发送通知(JSON",
"request": {
"auth": {
"type": "bearer",
"bearer": [{ "key": "token", "value": "{{sourceApiKey}}", "type": "string" }]
},
"method": "POST",
"header": [
{ "key": "Content-Type", "value": "application/json" }
],
"body": {
"mode": "raw",
"raw": "{\n \"event\": \"trade.open\",\n \"data\": {\n \"symbol\": \"BTC\",\n \"price\": 65000\n }\n}"
},
"url": "{{baseUrl}}/api/v1/notify"
}
},
{
"name": "发送通知(Regex",
"request": {
"auth": {
"type": "bearer",
"bearer": [{ "key": "token", "value": "{{sourceApiKey}}", "type": "string" }]
},
"method": "POST",
"header": [
{ "key": "Content-Type", "value": "text/plain" }
],
"body": {
"mode": "raw",
"raw": "trade.open BTC 开仓 价格:65000"
},
"url": "{{baseUrl}}/api/v1/notify"
}
},
{
"name": "发送通知(Text",
"request": {
"auth": {
"type": "bearer",
"bearer": [{ "key": "token", "value": "{{sourceApiKey}}", "type": "string" }]
},
"method": "POST",
"header": [
{ "key": "Content-Type", "value": "text/plain" }
],
"body": {
"mode": "raw",
"raw": "BTC 突破 68000,请注意风险"
},
"url": "{{baseUrl}}/api/v1/notify",
"description": "parse_mode=text 时 event 固定为 default"
}
}
]
},
{
"name": "Sources",
"item": [
{
"name": "创建 SourceJSON",
"request": {
"auth": {
"type": "bearer",
"bearer": [{ "key": "token", "value": "{{adminKey}}", "type": "string" }]
},
"method": "POST",
"header": [
{ "key": "Content-Type", "value": "application/json" }
],
"body": {
"mode": "raw",
"raw": "{\n \"name\": \"trading-system\",\n \"parse_mode\": \"json\",\n \"status\": 1\n}"
},
"url": "{{baseUrl}}/api/v1/sources"
}
},
{
"name": "创建 SourceRegex",
"request": {
"auth": {
"type": "bearer",
"bearer": [{ "key": "token", "value": "{{adminKey}}", "type": "string" }]
},
"method": "POST",
"header": [
{ "key": "Content-Type", "value": "application/json" }
],
"body": {
"mode": "raw",
"raw": "{\n \"name\": \"legacy-monitor\",\n \"parse_mode\": \"regex\",\n \"parse_pattern\": \"(?P<event>\\\\w+)\\\\s+(?P<message>.+)\"\n}"
},
"url": "{{baseUrl}}/api/v1/sources"
}
},
{
"name": "创建 SourceText",
"request": {
"auth": {
"type": "bearer",
"bearer": [{ "key": "token", "value": "{{adminKey}}", "type": "string" }]
},
"method": "POST",
"header": [
{ "key": "Content-Type", "value": "application/json" }
],
"body": {
"mode": "raw",
"raw": "{\n \"name\": \"alert-bot\",\n \"parse_mode\": \"text\"\n}"
},
"url": "{{baseUrl}}/api/v1/sources"
}
},
{
"name": "列出 Source",
"request": {
"auth": {
"type": "bearer",
"bearer": [{ "key": "token", "value": "{{adminKey}}", "type": "string" }]
},
"method": "GET",
"header": [],
"url": "{{baseUrl}}/api/v1/sources"
}
},
{
"name": "获取 Source",
"request": {
"auth": {
"type": "bearer",
"bearer": [{ "key": "token", "value": "{{adminKey}}", "type": "string" }]
},
"method": "GET",
"header": [],
"url": "{{baseUrl}}/api/v1/sources/{{sourceId}}"
}
},
{
"name": "更新 Source",
"request": {
"auth": {
"type": "bearer",
"bearer": [{ "key": "token", "value": "{{adminKey}}", "type": "string" }]
},
"method": "PUT",
"header": [
{ "key": "Content-Type", "value": "application/json" }
],
"body": {
"mode": "raw",
"raw": "{\n \"name\": \"trading-system\",\n \"parse_mode\": \"json\",\n \"status\": 1\n}"
},
"url": "{{baseUrl}}/api/v1/sources/{{sourceId}}"
}
},
{
"name": "删除 Source",
"request": {
"auth": {
"type": "bearer",
"bearer": [{ "key": "token", "value": "{{adminKey}}", "type": "string" }]
},
"method": "DELETE",
"header": [],
"url": "{{baseUrl}}/api/v1/sources/{{sourceId}}"
}
}
]
},
{
"name": "Templates",
"item": [
{
"name": "创建 Template",
"request": {
"auth": {
"type": "bearer",
"bearer": [{ "key": "token", "value": "{{adminKey}}", "type": "string" }]
},
"method": "POST",
"header": [
{ "key": "Content-Type", "value": "application/json" }
],
"body": {
"mode": "raw",
"raw": "{\n \"name\": \"trade_open\",\n \"content\": \"### {{.symbol}} 开仓\\n价格: {{.price}}\"\n}"
},
"url": "{{baseUrl}}/api/v1/templates"
}
},
{
"name": "列出 Template",
"request": {
"auth": {
"type": "bearer",
"bearer": [{ "key": "token", "value": "{{adminKey}}", "type": "string" }]
},
"method": "GET",
"header": [],
"url": "{{baseUrl}}/api/v1/templates"
}
},
{
"name": "获取 Template",
"request": {
"auth": {
"type": "bearer",
"bearer": [{ "key": "token", "value": "{{adminKey}}", "type": "string" }]
},
"method": "GET",
"header": [],
"url": "{{baseUrl}}/api/v1/templates/{{templateId}}"
}
},
{
"name": "更新 Template",
"request": {
"auth": {
"type": "bearer",
"bearer": [{ "key": "token", "value": "{{adminKey}}", "type": "string" }]
},
"method": "PUT",
"header": [
{ "key": "Content-Type", "value": "application/json" }
],
"body": {
"mode": "raw",
"raw": "{\n \"name\": \"trade_open\",\n \"content\": \"### {{.symbol}} 开仓\\n价格: {{.price}}\"\n}"
},
"url": "{{baseUrl}}/api/v1/templates/{{templateId}}"
}
},
{
"name": "删除 Template",
"request": {
"auth": {
"type": "bearer",
"bearer": [{ "key": "token", "value": "{{adminKey}}", "type": "string" }]
},
"method": "DELETE",
"header": [],
"url": "{{baseUrl}}/api/v1/templates/{{templateId}}"
}
}
]
},
{
"name": "Channels",
"item": [
{
"name": "创建 ChannelEmail",
"request": {
"auth": {
"type": "bearer",
"bearer": [{ "key": "token", "value": "{{adminKey}}", "type": "string" }]
},
"method": "POST",
"header": [
{ "key": "Content-Type", "value": "application/json" }
],
"body": {
"mode": "raw",
"raw": "{\n \"name\": \"email-ops\",\n \"type\": \"email\",\n \"config\": {\n \"to\": [\"148516886@qq.com\"]\n },\n \"status\": 1\n}"
},
"url": "{{baseUrl}}/api/v1/channels"
}
},
{
"name": "创建 Channel(钉钉)",
"request": {
"auth": {
"type": "bearer",
"bearer": [{ "key": "token", "value": "{{adminKey}}", "type": "string" }]
},
"method": "POST",
"header": [
{ "key": "Content-Type", "value": "application/json" }
],
"body": {
"mode": "raw",
"raw": "{\n \"name\": \"dingtalk-prod\",\n \"type\": \"dingtalk\",\n \"config\": {\n \"access_token\": \"xxx\",\n \"secret\": \"SEC...\"\n },\n \"status\": 1\n}"
},
"url": "{{baseUrl}}/api/v1/channels"
}
},
{
"name": "创建 Channel(企业微信)",
"request": {
"auth": {
"type": "bearer",
"bearer": [{ "key": "token", "value": "{{adminKey}}", "type": "string" }]
},
"method": "POST",
"header": [
{ "key": "Content-Type", "value": "application/json" }
],
"body": {
"mode": "raw",
"raw": "{\n \"name\": \"wecom-ops\",\n \"type\": \"wecom\",\n \"config\": {\n \"webhook_url\": \"https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx\"\n },\n \"status\": 1\n}"
},
"url": "{{baseUrl}}/api/v1/channels"
}
},
{
"name": "创建 ChannelBark",
"request": {
"auth": {
"type": "bearer",
"bearer": [{ "key": "token", "value": "{{adminKey}}", "type": "string" }]
},
"method": "POST",
"header": [
{ "key": "Content-Type", "value": "application/json" }
],
"body": {
"mode": "raw",
"raw": "{\n \"name\": \"bark-phone\",\n \"type\": \"bark\",\n \"config\": {\n \"url\": \"https://api.day.app/<device_key>\"\n },\n \"status\": 1\n}"
},
"url": "{{baseUrl}}/api/v1/channels"
}
},
{
"name": "列出 Channel",
"request": {
"auth": {
"type": "bearer",
"bearer": [{ "key": "token", "value": "{{adminKey}}", "type": "string" }]
},
"method": "GET",
"header": [],
"url": "{{baseUrl}}/api/v1/channels"
}
},
{
"name": "获取 Channel",
"request": {
"auth": {
"type": "bearer",
"bearer": [{ "key": "token", "value": "{{adminKey}}", "type": "string" }]
},
"method": "GET",
"header": [],
"url": "{{baseUrl}}/api/v1/channels/{{channelId}}"
}
},
{
"name": "更新 Channel",
"request": {
"auth": {
"type": "bearer",
"bearer": [{ "key": "token", "value": "{{adminKey}}", "type": "string" }]
},
"method": "PUT",
"header": [
{ "key": "Content-Type", "value": "application/json" }
],
"body": {
"mode": "raw",
"raw": "{\n \"name\": \"email-ops\",\n \"type\": \"email\",\n \"config\": {\n \"to\": [\"148516886@qq.com\"]\n },\n \"status\": 1\n}"
},
"url": "{{baseUrl}}/api/v1/channels/{{channelId}}"
}
},
{
"name": "删除 Channel",
"request": {
"auth": {
"type": "bearer",
"bearer": [{ "key": "token", "value": "{{adminKey}}", "type": "string" }]
},
"method": "DELETE",
"header": [],
"url": "{{baseUrl}}/api/v1/channels/{{channelId}}"
}
}
]
},
{
"name": "Rules",
"item": [
{
"name": "创建 Rule",
"request": {
"auth": {
"type": "bearer",
"bearer": [{ "key": "token", "value": "{{adminKey}}", "type": "string" }]
},
"method": "POST",
"header": [
{ "key": "Content-Type", "value": "application/json" }
],
"body": {
"mode": "raw",
"raw": "{\n \"name\": \"trade-open-alert\",\n \"source_name\": \"trading-system\",\n \"event\": \"trade.open\",\n \"template_name\": \"trade_open\",\n \"channels\": [\"email-ops\"],\n \"conditions\": [\n {\"field\": \"symbol\", \"op\": \"exists\"},\n {\"field\": \"price\", \"op\": \"gt\", \"value\": \"0\"}\n ],\n \"enabled\": 1\n}"
},
"url": "{{baseUrl}}/api/v1/rules"
}
},
{
"name": "列出 Rule",
"request": {
"auth": {
"type": "bearer",
"bearer": [{ "key": "token", "value": "{{adminKey}}", "type": "string" }]
},
"method": "GET",
"header": [],
"url": "{{baseUrl}}/api/v1/rules"
}
},
{
"name": "获取 Rule",
"request": {
"auth": {
"type": "bearer",
"bearer": [{ "key": "token", "value": "{{adminKey}}", "type": "string" }]
},
"method": "GET",
"header": [],
"url": "{{baseUrl}}/api/v1/rules/{{ruleId}}"
}
},
{
"name": "更新 Rule",
"request": {
"auth": {
"type": "bearer",
"bearer": [{ "key": "token", "value": "{{adminKey}}", "type": "string" }]
},
"method": "PUT",
"header": [
{ "key": "Content-Type", "value": "application/json" }
],
"body": {
"mode": "raw",
"raw": "{\n \"name\": \"trade-open-alert\",\n \"source_name\": \"trading-system\",\n \"event\": \"trade.open\",\n \"template_name\": \"trade_open\",\n \"channels\": [\"email-ops\"],\n \"enabled\": 1\n}"
},
"url": "{{baseUrl}}/api/v1/rules/{{ruleId}}"
}
},
{
"name": "删除 Rule",
"request": {
"auth": {
"type": "bearer",
"bearer": [{ "key": "token", "value": "{{adminKey}}", "type": "string" }]
},
"method": "DELETE",
"header": [],
"url": "{{baseUrl}}/api/v1/rules/{{ruleId}}"
}
},
{
"name": "启用 Rule",
"request": {
"auth": {
"type": "bearer",
"bearer": [{ "key": "token", "value": "{{adminKey}}", "type": "string" }]
},
"method": "PATCH",
"header": [],
"url": "{{baseUrl}}/api/v1/rules/{{ruleId}}/enable"
}
},
{
"name": "禁用 Rule",
"request": {
"auth": {
"type": "bearer",
"bearer": [{ "key": "token", "value": "{{adminKey}}", "type": "string" }]
},
"method": "PATCH",
"header": [],
"url": "{{baseUrl}}/api/v1/rules/{{ruleId}}/disable"
}
},
{
"name": "启用规则下某渠道",
"request": {
"auth": {
"type": "bearer",
"bearer": [{ "key": "token", "value": "{{adminKey}}", "type": "string" }]
},
"method": "PATCH",
"header": [],
"url": "{{baseUrl}}/api/v1/rules/{{ruleId}}/channels/{{channelId}}/enable"
}
},
{
"name": "禁用规则下某渠道",
"request": {
"auth": {
"type": "bearer",
"bearer": [{ "key": "token", "value": "{{adminKey}}", "type": "string" }]
},
"method": "PATCH",
"header": [],
"url": "{{baseUrl}}/api/v1/rules/{{ruleId}}/channels/{{channelId}}/disable"
}
}
]
},
{
"name": "Message Logs",
"item": [
{
"name": "查询消息记录",
"request": {
"auth": {
"type": "bearer",
"bearer": [{ "key": "token", "value": "{{adminKey}}", "type": "string" }]
},
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/v1/message-logs?source=trading-system&event=trade.open&status=success&page=1&page_size=20",
"host": ["{{baseUrl}}"],
"path": ["api", "v1", "message-logs"],
"query": [
{ "key": "source", "value": "trading-system" },
{ "key": "event", "value": "trade.open" },
{ "key": "status", "value": "success" },
{ "key": "page", "value": "1" },
{ "key": "page_size", "value": "20" }
]
}
}
}
]
}
]
}