Station
The Station resource manages your station locations (logbook profiles) — the callsign, grid, DXCC and other location details a QSO is logged against. It reuses the same data layer as the web UI, applying the same normalisation and validation.
- Base path:
/api/v2/station - Scopes:
station:read,station:write,station:delete
All operations are scoped to the token owner. A station location belonging to another user is treated as not found.
Note
Read the API v2 overview first for authentication, the response envelope and error codes.
Endpoints
| Verb | Path | Scope | Purpose |
|---|---|---|---|
GET |
/api/v2/station |
station:read |
List all your station locations |
GET |
/api/v2/station/{id} |
station:read |
Fetch a single station location |
POST |
/api/v2/station |
station:write |
Create a station location |
PATCH |
/api/v2/station/{id} |
station:write |
Partial update |
DELETE |
/api/v2/station/{id} |
station:delete |
Delete a station location and all its QSOs |
There is no PUT
Updates are always partial, for the same reason as on QSO: Wavelog
is the source of truth, and a full replace would let a client blank fields it
never knew existed. To overwrite a station location completely, send every
field explicitly in a PATCH.
List endpoints are not paginated — users typically have only a handful of station locations.
The station object
{
"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 and active are read-only. The remaining fields correspond to the
writable fields below, so a GET result can be sent straight
back through PATCH.
Create a station location
POST /api/v2/station
Required fields: 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
}'
- Your first station location automatically becomes the active one.
- On success the API returns
201 Created, aLocationheader, and the created object indata. - An identical existing location returns
409 conflict. - An invalid grid locator returns
400 validation_error. - A missing required field returns
400 validation_error, listing what is missing indetails.missing.
Writable fields
| Field | Notes |
|---|---|
name |
Profile name (required on create) |
callsign |
Station callsign (required on create) |
gridsquare |
Maidenhead locator, validated |
city |
QTH / city |
dxcc |
DXCC entity number (required on create) |
cq |
CQ zone (required on create) |
itu |
ITU zone (required on create) |
state |
Primary administrative subdivision |
cnty |
Secondary subdivision (county) — see note below |
iota |
IOTA reference |
sota |
SOTA reference |
wwff |
WWFF reference |
pota |
POTA reference |
sig |
Special interest group |
sig_info |
Special interest group info |
power |
Default TX power in watts |
Note
External-service credentials (QRZ, HRDLog, ClubLog, OQRS, webADIF, eQSL) are not exposed through the API and keep their defaults on create.
Clubstation tokens need officer level to write
Station locations are shared club infrastructure, and deleting one removes
all of its QSOs with it. Creating, updating and deleting them therefore
requires permission level 9; reading stays open to every member. A lower
level is refused with 403 insufficient_club_permission. See
Clubstations.
Note
cnty (county) is only stored for DXCC entities that have ADIF secondary
subdivisions. For any other DXCC entity the county is cleared automatically,
mirroring the web UI.
Update a station location
PATCH /api/v2/station/{id} — partial update, only the fields you send change.
Anything you omit keeps its stored value.
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" }'
The updated station object is returned in data.
Required fields cannot be blanked out
The fields required on create stay required for the lifetime of the
location. Sending one of them as null or "" is refused with
400 validation_error and the offending names in details.fields.
Leave a field out of the body to keep its stored value.
Delete a station location
DELETE /api/v2/station/{id}
Warning
This is destructive. Deleting a station location also deletes all of its QSOs and their associated QSL/eQSL data, exactly like the web UI.
- The active station location cannot be deleted and returns
409 conflict. Activate another location first. - On success the API returns
204 No Content.