Operatoren
Wir identifizieren einen Operator über sein Basisrufzeichen. Jede SSID, von der er sendet, wird zu einer einzigen Identität zusammengefasst.
Operator
GET /api/v1/operators/{callsign}
Information about an operator: identity, totals, a live op if there is one, and recent activity.
The totals are computed for all time; the full standings are in a separate scoreboard endpoint.
| Parameter | In | Type | Meaning |
|---|---|---|---|
callsign | path | string | The operator's base call. An SSID form or mixed case answers 301 to the canonical URL. required |
Example
{
"callsign": "K0TFU",
"first_heard_at": "2026-07-22T01:14:09Z",
"last_heard_at": "2026-09-18T19:17:02Z",
"totals": {
"points": 123,
"qsos": 45,
"ops_hosted": 12
},
"on_air": {
"callsign": "K0TFU",
"station": "K0TFU-6",
"number": 12,
"state": "on_air",
"description": "lunch at the lake",
"reference": {
"kind": "pota",
"code": "US-0072"
},
"grid": "DN40bs",
"position": {
"lat": 40.054167,
"lon": -111.525
},
"country": {
"code": "US",
"name": "United States of America"
},
"water": {
"kind": "lake",
"name": "Utah Lake"
},
"on_air_at": "2026-09-18T19:02:41Z",
"expires_at": "2026-09-18T20:17:00Z",
"ended_at": null,
"end_reason": null,
"signoff": null,
"qsos": 12,
"incomplete": 2,
"points": 11,
"url": "https://aprsota.org/K0TFU/ops/12",
"card_image_url": "https://aprsota.org/K0TFU/ops/12/card-3f9a1c2b7d4e.png"
},
"recent_ops": [
{
"callsign": "K0TFU",
"station": "K0TFU-6",
"number": 12,
"state": "on_air",
"description": "lunch at the lake",
"reference": {
"kind": "pota",
"code": "US-0072"
},
"grid": "DN40bs",
"position": {
"lat": 40.054167,
"lon": -111.525
},
"country": {
"code": "US",
"name": "United States of America"
},
"water": {
"kind": "lake",
"name": "Utah Lake"
},
"on_air_at": "2026-09-18T19:02:41Z",
"expires_at": "2026-09-18T20:17:00Z",
"ended_at": null,
"end_reason": null,
"signoff": null,
"qsos": 12,
"incomplete": 2,
"points": 11,
"url": "https://aprsota.org/K0TFU/ops/12",
"card_image_url": "https://aprsota.org/K0TFU/ops/12/card-3f9a1c2b7d4e.png"
}
],
"recent_qsos": [
{
"host": "K0TFU",
"host_station": "K0TFU-6",
"op_number": 12,
"chaser": "W1XYZ",
"chaser_station": "W1XYZ-5",
"number": 1,
"state": "confirmed",
"chased_at": "2026-09-18T19:14:19Z",
"beacon_at": "2026-09-18T19:15:02Z",
"confirmed_at": "2026-09-18T19:17:02Z",
"chase_text": "hi from the lake",
"qsl_text": "73",
"grid": "CN87xo",
"position": {
"lat": 40.054167,
"lon": -111.525
},
"country": {
"code": "US",
"name": "United States of America"
},
"water": {
"kind": "lake",
"name": "Utah Lake"
},
"points": 3,
"stamps": [
{
"kind": "ptt",
"title": "PTT",
"role": "host",
"points": 1,
"label": null
}
],
"combos": [],
"repeat": false,
"url": "https://aprsota.org/K0TFU/ops/12/qsos/W1XYZ",
"qsl_image_url": "https://aprsota.org/K0TFU/ops/12/qsos/W1XYZ/qsl-9b2e4d1f6a3c.png"
}
],
"url": "https://aprsota.org/K0TFU",
"image_url": "https://aprsota.org/K0TFU/og-1a2b3c4d5e6f.png"
}Scoreboard
Die Platzierungen sind ein eigener API Endpunkt und nicht Teil des Operator Objekts, weil sie rechenintensiv sind. Frag sie getrennt ab, wenn du sie brauchst.
GET /api/v1/operators/{callsign}/scoreboard
The operator's standings on every board, for this month, this year, and all time.
The operator's positions on various leaderboards, one row per board the operator holds a value on, with the value in the board's own currency and the rank when on the board. Its own endpoint because its expensive to produce.
| Parameter | In | Type | Meaning |
|---|---|---|---|
callsign | path | string | The operator's base call. An SSID form or mixed case answers 301 to the canonical URL. required |
Example
{
"callsign": "K0TFU",
"windows": [
{
"kind": "month",
"from": "2026-09-01",
"to": "2026-09-30"
}
],
"rows": [
{
"board": {
"slug": "all-star",
"name": "All-Star",
"measure": "Points",
"unit": "points",
"url": "https://aprsota.org/leaderboards/all-star"
},
"cells": [
{
"value": 22,
"rank": 3
}
]
}
]
}