台站
台站(Station)
目录
台站资源用于管理你的台站位置(日志配置档案)——一条 QSO 所记录的呼号、网格、DXCC 及其他位置信息。它复用了与 Web 界面相同的数据层,并应用相同的规范化与校验规则。
- 基础路径:
/api/v2/station - 权限范围:
station:read,station:write,station:delete - 起始版本: 3.1.0
所有操作都限定在令牌所有者范围内。属于其他用户的台站位置会被视为未找到。
注意
请先阅读 API v2 概览,了解认证、响应包络与错误码。
端点
| 方法 | 路径 | 权限范围 | 用途 | 起始版本 |
|---|---|---|---|---|
GET |
/api/v2/station |
station:read |
列出你的所有台站位置 | 3.1.0 |
GET |
/api/v2/station/{id} |
station:read |
获取单个台站位置 | 3.1.0 |
POST |
/api/v2/station |
station:write |
创建台站位置 | 3.1.0 |
PATCH |
/api/v2/station/{id} |
station:write |
部分更新 | 3.1.0 |
DELETE |
/api/v2/station/{id} |
station:delete |
删除台站位置及其全部 QSO | 3.1.0 |
注意(不支持
PUT)更新始终是部分更新,原因与 QSO 上相同:Wavelog 是权威数据源,而完全替换会让客户端把它根本不知道存在的字段清空。要完整覆盖一个台站位置,请在
PATCH中显式发送每个字段。
列表类端点不进行分页——用户通常只有少数几个台站位置。
注意(列表遵循你的账户选项)
如果在你的账户设置(台站位置选项)中启用了「只显示与活动日志关联的台站位置」,
GET /api/v2/station就只会返回与你的活动日志关联的位置——即 Web 界面和 API v1 所显示的同一子集。这是一个列表偏好设置,而非权限:GET /api/v2/station/{id}、PATCH和DELETE对你拥有的每个位置仍然有效,无论它是否出现在列表中。
台站对象
{
"id": 1,
"uuid": "c8904ea7-8bfa-11f1-865b-0241724b0b31",
"name": "JO30oo / DJ7NT",
"callsign": "DJ7NT",
"gridsquare": "JO30OO",
"city": "Bonn",
"dxcc": 230,
"country": "FEDERAL REPUBLIC OF GERMANY",
"cq": 14,
"itu": 28,
"state": "",
"cnty": "",
"iota": "",
"sota": "",
"wwff": "",
"pota": "",
"sig": "",
"sig_info": "",
"power": 100,
"active": true
}
country 与 active 为只读字段。其余字段对应下面的可写字段,因此 GET 的结果可以直接通过 PATCH 发回。
创建台站位置
POST /api/v2/station
必填字段: name, callsign, dxcc, cq, itu。
curl -X POST https://<WAVELOG_URL>/index.php/api/v2/station \
-H "Authorization: Bearer wl2_your_token_here" \
-H "Content-Type: application/json" \
-d '{
"name": "DJ7NT at Home",
"callsign": "DJ7NT",
"gridsquare": "JO30oo",
"city": "Unkel",
"dxcc": 230,
"cq": 14,
"itu": 28,
"power": 100
}'
- 你的第一个台站位置会自动成为活动位置。
- 成功时 API 返回
201 Created、一个Location响应头,以及data中的新建对象。 - 若已存在完全相同的台站位置,返回
409 conflict。 - 无效的网格定位返回
400 validation_error。 - 缺少必填字段返回
400 validation_error,并在details.missing中列出缺失的字段。
可写字段
| 字段 | 说明 |
|---|---|
name |
配置档案名称(创建时必填) |
callsign |
台站呼号(创建时必填) |
gridsquare |
梅登黑德网格定位,会进行校验 |
city |
QTH(电台位置)/ 城市 |
dxcc |
DXCC 实体编号(创建时必填) |
cq |
CQ 分区(创建时必填) |
itu |
ITU 分区(创建时必填) |
state |
一级行政区划 |
cnty |
二级行政区划(县)——见下方说明 |
iota |
IOTA 索引 |
sota |
SOTA 索引 |
wwff |
WWFF 索引 |
pota |
POTA 索引 |
sig |
特别兴趣小组 |
sig_info |
特别兴趣小组信息 |
power |
默认发射功率,单位为瓦 |
注意
外部服务凭据(QRZ、HRDLog、ClubLog、OQRS、webADIF、eQSL)不会通过 API 暴露,创建时保持默认值。
警告:集体台令牌需要 officer 级别才能写入
台站位置是集体台共享的基础设施,删除一个位置会连同其全部 QSO 一起删除。因此创建、更新和删除这些位置需要权限级别 9;读取对所有成员开放。级别较低时会被拒绝,返回
403 insufficient_club_permission。参见集体台。注意
cnty(县)只对具有 ADIF 二级行政区划的 DXCC 实体保存。对其他任何 DXCC 实体,该县字段都会被自动清空,与 Web 界面的行为一致。
更新台站位置
PATCH /api/v2/station/{id} —— 部分更新,只有你发送的字段会改变。省略的字段保留其已存值。
curl -X PATCH https://<WAVELOG_URL>/index.php/api/v2/station/1 \
-H "Authorization: Bearer wl2_your_token_here" \
-H "Content-Type: application/json" \
-d '{ "power": 50, "city": "Bonn" }'
更新后的台站对象会在 data 中返回。
注意(切换活动台站位置)
自 3.2.0 起,
set_active: true还会把该位置设为所有者的活动位置——即新的 QSO 和 Web 界面默认使用的那个位置:
bash curl -X PATCH https://<WAVELOG_URL>/index.php/api/v2/station/2 \ -H "Authorization: Bearer wl2_your_token_here" \ -H "Content-Type: application/json" \ -d '{ "set_active": true }'它有意与响应中只读的
active使用不同的键,这样GET的结果可以直接通过PATCH发回,而不会悄悄改掉你的活动位置。只包含set_active的请求体也是有效的。注意(必填字段不能被清空)
创建时必填的字段在该位置的整个生命周期内始终必填。把其中任何一个以
null或""发送会被拒绝,返回400 validation_error,并在details.fields中给出违规的字段名。若想保留已存值,请把该字段从请求体中省略。
删除台站位置
DELETE /api/v2/station/{id}
警告
此操作是破坏性的。删除一个台站位置会同时删除其全部 QSO 及其关联的 QSL/eQSL 数据,与 Web 界面的行为完全相同。
- 活动台站位置不能被删除,会返回
409 conflict。请先激活另一个位置。 - 成功时 API 返回
204 No Content。
curl -X DELETE https://<WAVELOG_URL>/index.php/api/v2/station/2 \
-H "Authorization: Bearer wl2_your_token_here"