Documentation
¶
Overview ¶
Package docs holds the frozen operation-ID registry for the webapi package's OpenAPI spec.
DO NOT RENAME constants in this file.
Every @ID value used in a swag annotation block under pkg/webapi/** MUST be the string literal value of one of the constants declared here. This file is the source of truth:
- Generated clients (TypeScript, Rust, Python, …) use the operationId as the generated method name, so renaming a value here is a wire-breaking change that ripples into every consumer. Add new IDs rather than renaming existing ones. If deprecation is required, keep the old constant (optionally marked with a comment) and introduce a new one alongside it.
- Swag (v1.x) does not interpolate Go constants into annotation strings, so the @ID literal in the handler doc block is duplicated text. The `make docs-lint` target greps @ID values across pkg/webapi and pkg/webauth and asserts each one appears as a constant value in this file. Keep the two in sync.
IDs follow lowerCamelCase so the generated client method names are idiomatic in every target language. Group constants by resource.
Index ¶
Constants ¶
const ( OpListChannels = "listChannels" OpCreateChannel = "createChannel" OpGetChannel = "getChannel" OpUpdateChannel = "updateChannel" OpDeleteChannel = "deleteChannel" OpGetChannelStats = "getChannelStats" OpGetChannelReferrers = "getChannelReferrers" )
Channels resource — /api/channels (Phase 1 reference migration).
const ( OpListBeacons = "listBeacons" OpCreateBeacon = "createBeacon" OpGetBeacon = "getBeacon" OpUpdateBeacon = "updateBeacon" OpDeleteBeacon = "deleteBeacon" OpSendBeacon = "sendBeacon" )
Beacons resource — /api/beacons (Phase 2).
const ( OpGetSmartBeacon = "getSmartBeacon" OpUpdateSmartBeacon = "updateSmartBeacon" )
SmartBeacon config — singleton at /api/smart-beacon. Tagged under the `beacons` group so the Swagger UI clusters it with the per-beacon CRUD endpoints. The curve parameters are global (no per-beacon override), mirroring direwolf's SMARTBEACON directive.
const ( OpListAudioDevices = "listAudioDevices" OpCreateAudioDevice = "createAudioDevice" OpGetAudioDevice = "getAudioDevice" OpUpdateAudioDevice = "updateAudioDevice" OpDeleteAudioDevice = "deleteAudioDevice" OpListAvailableAudioDevices = "listAvailableAudioDevices" OpScanAudioDeviceLevels = "scanAudioDeviceLevels" OpGetAudioDeviceLevels = "getAudioDeviceLevels" OpPlayTestTone = "playTestTone" OpSetAudioDeviceGain = "setAudioDeviceGain" )
Audio devices resource — /api/audio-devices (Phase 2).
Sub-resource endpoints (available, scan-levels, levels, test-tone, gain) stay under the same tag. Operation IDs follow the verbResource convention so generated clients read fluently (client.listAvailableAudioDevices(), client.setAudioDeviceGain(...)).
const ( OpListKiss = "listKiss" OpCreateKiss = "createKiss" OpGetKiss = "getKiss" OpUpdateKiss = "updateKiss" OpDeleteKiss = "deleteKiss" OpReconnectKiss = "reconnectKiss" )
KISS interfaces resource — /api/kiss (Phase 2).
const ( OpListTxTiming = "listTxTiming" OpCreateTxTiming = "createTxTiming" OpGetTxTiming = "getTxTiming" OpUpdateTxTiming = "updateTxTiming" )
Tx-timing resource — /api/tx-timing (Phase 2). Keyed by channel id, upsert semantics — no delete op.
const ( OpListDigipeaterRules = "listDigipeaterRules" OpCreateDigipeaterRule = "createDigipeaterRule" OpUpdateDigipeaterRule = "updateDigipeaterRule" OpDeleteDigipeaterRule = "deleteDigipeaterRule" )
Digipeater rules resource — /api/digipeater/rules (Phase 2). The singleton config at /api/digipeater is Phase 3's concern and not registered here. No single-rule GET exists — the list endpoint returns all rules and the UI filters client-side.
const ( OpListIgateFilters = "listIgateFilters" OpCreateIgateFilter = "createIgateFilter" OpUpdateIgateFilter = "updateIgateFilter" OpDeleteIgateFilter = "deleteIgateFilter" )
Igate RF filters resource — /api/igate/filters (Phase 2). The singleton config at /api/igate/config is Phase 3's concern — see the Phase 3 block below.
const ( OpGetDigipeaterConfig = "getDigipeaterConfig" OpUpdateDigipeaterConfig = "updateDigipeaterConfig" )
Digipeater config — singleton at /api/digipeater.
const ( OpGetIgateConfig = "getIgateConfig" OpUpdateIgateConfig = "updateIgateConfig" )
Igate config — singleton at /api/igate/config.
const ( OpGetGps = "getGps" OpUpdateGps = "updateGps" OpListAvailableGps = "listAvailableGps" )
GPS resource — singleton at /api/gps plus a small list endpoint at /api/gps/available for the serial-port picker.
const ( OpGetPositionLog = "getPositionLog" OpUpdatePositionLog = "updatePositionLog" )
Position-log resource — singleton at /api/position-log.
const ( OpGetAgw = "getAgw" OpUpdateAgw = "updateAgw" )
AGW resource — singleton at /api/agw.
const ( OpGetHealth = "getHealth" OpGetStatus = "getStatus" )
Health and status — single-handler, GET-only, no path params.
const ( OpGetIgateStatus = "getIgateStatus" OpSetIgateSimulation = "setIgateSimulation" )
Igate status/simulation — /api/igate, /api/igate/simulation. The singleton config and filters live under Phase 2/3 blocks above.
const ( OpGetStationConfig = "getStationConfig" OpUpdateStationConfig = "updateStationConfig" )
Station config — /api/station/config. Singleton holding the station callsign (D1 of the centralized-station-callsign plan). Distinct from the /api/stations resource above, which lists received APRS stations.
const ( OpLogin = "login" OpLogout = "logout" OpGetSetupStatus = "getSetupStatus" OpCreateFirstUser = "createFirstUser" )
Auth — /api/auth/login, /api/auth/logout, /api/auth/setup. Handlers live in pkg/webauth/handlers.go and are registered by pkg/app/wiring.go onto the outer (public) mux, not the RequireAuth-wrapped apiMux.
const ( OpListMessages = "listMessages" OpGetMessage = "getMessage" OpSendMessage = "sendMessage" OpDeleteMessage = "deleteMessage" OpDeleteMessageThread = "deleteMessageThread" OpMarkMessageRead = "markMessageRead" OpMarkMessageUnread = "markMessageUnread" OpResendMessage = "resendMessage" OpListConversations = "listConversations" OpStreamMessageEvents = "streamMessageEvents" OpGetMessagePreferences = "getMessagePreferences" OpPutMessagePreferences = "putMessagePreferences" OpListTacticalCallsigns = "listTacticalCallsigns" OpCreateTacticalCallsign = "createTacticalCallsign" OpUpdateTacticalCallsign = "updateTacticalCallsign" OpDeleteTacticalCallsign = "deleteTacticalCallsign" OpGetTacticalParticipants = "getTacticalParticipants" OpAcceptTacticalInvite = "acceptTacticalInvite" OpAutocompleteStations = "autocompleteStations" )
Messages resource — /api/messages (APRS messaging feature).
The messages surface covers DM + tactical-broadcast inbound/outbound rows, preferences, tactical callsign CRUD, conversation rollup, per-thread participants, and an SSE event stream. The autocomplete endpoint is an out-of-band helper registered via webapi.RegisterStationsAutocomplete; its operation ID lives alongside the messages block because it's the same feature slice, even though the URL sits under /api/stations.
const ( OpListPttConfigs = "listPttConfigs" OpUpsertPttConfig = "upsertPttConfig" OpListPttDevices = "listPttDevices" OpGetPttCapabilities = "getPttCapabilities" OpTestRigctld = "testRigctld" OpListGpioLines = "listGpioLines" OpGetPttConfig = "getPttConfig" OpUpdatePttConfig = "updatePttConfig" OpDeletePttConfig = "deletePttConfig" )
PTT resource — /api/ptt (Phase 4).
Breaking change versus pre-Phase-4: the GPIO-lines endpoint moved from a query-string form (/api/ptt/gpio-lines?chip=/dev/gpiochipN) to a path-parameter form (/api/ptt/gpio-chips/{chip}/lines) where {chip} is the URL-encoded device path. The operationId reflects the new URL shape.
const ( OpListReleaseNotes = "listReleaseNotes" OpListUnseenReleaseNotes = "listUnseenReleaseNotes" OpAckReleaseNotes = "ackReleaseNotes" )
Release notes — /api/release-notes (popup + About-page "What's new").
Three endpoints, all RequireAuth-gated. The ack endpoint takes no body: it unilaterally writes the server's running build version to the caller's LastSeenReleaseVersion. See pkg/webapi/release_notes.go and the Release News Popup design note in .context/.
const ( OpGetUpdatesConfig = "getUpdatesConfig" OpUpdateUpdatesConfig = "updateUpdatesConfig" OpGetUpdatesStatus = "getUpdatesStatus" )
Updates resource — /api/updates. Controls the daily GitHub update check and exposes the latest known release status to the UI.
const ( OpGetUnitsConfig = "getUnitsConfig" OpUpdateUnitsConfig = "updateUnitsConfig" )
Units preference — singleton at /api/preferences/units. Same GET + PUT shape as the other display-preference endpoints; persists the operator's metric-vs-imperial choice server-side.
const ( OpGetThemeConfig = "getThemeConfig" OpUpdateThemeConfig = "updateThemeConfig" )
Theme preference — singleton at /api/preferences/theme. Same GET + PUT shape as the other display-preference endpoints. The shipped set of themes is defined client-side in graywolf/web/themes/themes.json; the server validates ids by regex only so PR contributors can add themes without touching Go.
const ( OpGetMapsConfig = "getMapsConfig" OpUpdateMapsConfig = "updateMapsConfig" OpRegisterMapsToken = "registerMapsToken" )
Maps preference — singleton at /api/preferences/maps. GET + PUT match the other display-preference endpoints; /register proxies a device registration to auth.nw5w.com and is the only response that returns the issued token. ?include_token=1 on the GET is the lone way to retrieve the persisted token after registration.
const ( OpListAX25Profiles = "listAX25Profiles" OpCreateAX25Profile = "createAX25Profile" OpGetAX25Profile = "getAX25Profile" OpUpdateAX25Profile = "updateAX25Profile" OpDeleteAX25Profile = "deleteAX25Profile" OpPinAX25Profile = "pinAX25Profile" )
AX.25 saved + recent connection profiles — /api/ax25/profiles. Pinned rows persist; recent (unpinned) rows are upserted on each CONNECTED transition and trimmed to the last 20.
const ( OpGetAX25TerminalConfig = "getAX25TerminalConfig" OpPutAX25TerminalConfig = "putAX25TerminalConfig" )
AX.25 terminal config — singleton at /api/ax25/terminal-config. Persists scrollback rows, cursor blink, default modulo + paclen, the macro toolbar JSON, and the operator's last raw-tail filter.
const ( OpListAX25Transcripts = "listAX25Transcripts" OpGetAX25Transcript = "getAX25Transcript" OpDeleteAX25Transcript = "deleteAX25Transcript" OpDeleteAllAX25Transcripts = "deleteAllAX25Transcripts" )
AX.25 transcripts — /api/ax25/transcripts. Operator-recorded byte streams from completed sessions; capture starts on `transcript on` and ends with the LAPB session.
const ( OpGetMessagesConfig = "getMessagesConfig" OpPutMessagesConfig = "putMessagesConfig" )
Messages config — singleton at /api/messages/config. Holds the outbound APRS messages TX channel; seeded on first run from the legacy IGateConfig.TxChannel by migration v13.
const ( OpListMapsDownloads = "listMapsDownloads" OpGetMapsDownloadStatus = "getMapsDownloadStatus" OpStartMapsDownload = "startMapsDownload" OpDeleteMapsDownload = "deleteMapsDownload" OpGetMapsCatalog = "getMapsCatalog" )
Maps offline downloads — /api/maps/downloads (Plan 2). Per-state PMTiles archives are downloaded asynchronously; the start endpoint returns 202 immediately and the status endpoint reports live progress. The DELETE is idempotent and cancels any in-flight download for the same slug. /tiles/{slug}.pmtiles is mounted on the outer mux (under RequireAuth) by pkg/app/wiring.go and has no generated client method — browsers fetch it via maplibre-gl, not via the typed API client.
const ( OpListActions = "listActions" OpCreateAction = "createAction" OpGetAction = "getAction" OpUpdateAction = "updateAction" OpDeleteAction = "deleteAction" OpTestFireAction = "testFireAction" OpListActionListeners = "listActionListeners" OpCreateActionListener = "createActionListener" OpDeleteActionListener = "deleteActionListener" OpListActionInvocations = "listActionInvocations" OpClearActionInvocations = "clearActionInvocations" OpListOTPCredentials = "listOTPCredentials" OpCreateOTPCredential = "createOTPCredential" OpGetOTPCredential = "getOTPCredential" OpDeleteOTPCredential = "deleteOTPCredential" )
Actions resource — /api/actions and friends. Remote command system with OTP-gated execution, listener bindings (RF/IS triggers), audit log of invocations, and a test-fire endpoint for the operator UI. OTP credentials live under /api/otp-credentials and are consumed by per-Action otp_required gating.
const ( OpListRemoteOTPCredentials = "listRemoteOTPCredentials" OpCreateRemoteOTPCredential = "createRemoteOTPCredential" OpUpdateRemoteOTPCredential = "updateRemoteOTPCredential" OpDeleteRemoteOTPCredential = "deleteRemoteOTPCredential" OpListRemoteActionMacros = "listRemoteActionMacros" OpCreateRemoteActionMacro = "createRemoteActionMacro" OpUpdateRemoteActionMacro = "updateRemoteActionMacro" OpDeleteRemoteActionMacro = "deleteRemoteActionMacro" OpReorderRemoteActionMacros = "reorderRemoteActionMacros" OpGenerateRemoteOTPCode = "generateRemoteOTPCode" )
Remote Actions resource — /api/remote-actions/* — outbound Actions feature. Operator-curated macros + remote-station TOTP credentials used to fire @@<otp>#<action> invocations from inside Messages. Wire shape: pkg/webapi/dto/remote_actions.go. Composition root: pkg/remoteactions/.
const (
OpGetPosition = "getPosition"
)
Position — /api/position.
const (
OpGetVersion = "getVersion"
)
Version — /api/version. The handler lives in pkg/webapi/version.go and is installed via webapi.RegisterVersion; wiring.go mounts it on the outer (public) mux.
const (
OpListPackets = "listPackets"
)
Packets — /api/packets.
const (
OpListStations = "listStations"
)
Stations — /api/stations.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
This section is empty.
Directories
¶
| Path | Synopsis |
|---|---|
|
cmd
|
|
|
idlint
command
idlint walks pkg/webapi and pkg/webauth, extracts every @ID value appearing in a top-level function's doc comment (via the Go AST — including `/* */` block comments which a plain grep would miss), and asserts that each value is declared as a string constant in pkg/webapi/docs/op_ids.go.
|
idlint walks pkg/webapi and pkg/webauth, extracts every @ID value appearing in a top-level function's doc comment (via the Go AST — including `/* */` block comments which a plain grep would miss), and asserts that each value is declared as a string constant in pkg/webapi/docs/op_ids.go. |
|
tagify
command
tagify injects a top-level `tags:` array into the swag-generated OpenAPI 2.0 spec so Swagger UI and downstream generators can render tag groups in a deliberate, curated order instead of alphabetical.
|
tagify injects a top-level `tags:` array into the swag-generated OpenAPI 2.0 spec so Swagger UI and downstream generators can render tag groups in a deliberate, curated order instead of alphabetical. |