docs

package
v0.13.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 5, 2026 License: GPL-2.0 Imports: 0 Imported by: 0

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

View Source
const (
	OpListChannels        = "listChannels"
	OpCreateChannel       = "createChannel"
	OpGetChannel          = "getChannel"
	OpUpdateChannel       = "updateChannel"
	OpDeleteChannel       = "deleteChannel"
	OpGetChannelStats     = "getChannelStats"
	OpGetChannelReferrers = "getChannelReferrers"
)

Channels resource — /api/channels (Phase 1 reference migration).

View Source
const (
	OpListBeacons  = "listBeacons"
	OpCreateBeacon = "createBeacon"
	OpGetBeacon    = "getBeacon"
	OpUpdateBeacon = "updateBeacon"
	OpDeleteBeacon = "deleteBeacon"
	OpSendBeacon   = "sendBeacon"
)

Beacons resource — /api/beacons (Phase 2).

View Source
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.

View Source
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(...)).

View Source
const (
	OpListKiss      = "listKiss"
	OpCreateKiss    = "createKiss"
	OpGetKiss       = "getKiss"
	OpUpdateKiss    = "updateKiss"
	OpDeleteKiss    = "deleteKiss"
	OpReconnectKiss = "reconnectKiss"
)

KISS interfaces resource — /api/kiss (Phase 2).

View Source
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.

View Source
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.

View Source
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.

View Source
const (
	OpGetDigipeaterConfig    = "getDigipeaterConfig"
	OpUpdateDigipeaterConfig = "updateDigipeaterConfig"
)

Digipeater config — singleton at /api/digipeater.

View Source
const (
	OpGetIgateConfig    = "getIgateConfig"
	OpUpdateIgateConfig = "updateIgateConfig"
)

Igate config — singleton at /api/igate/config.

View Source
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.

View Source
const (
	OpGetPositionLog    = "getPositionLog"
	OpUpdatePositionLog = "updatePositionLog"
)

Position-log resource — singleton at /api/position-log.

View Source
const (
	OpGetAgw    = "getAgw"
	OpUpdateAgw = "updateAgw"
)

AGW resource — singleton at /api/agw.

View Source
const (
	OpGetHealth = "getHealth"
	OpGetStatus = "getStatus"
)

Health and status — single-handler, GET-only, no path params.

View Source
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.

View Source
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.

View Source
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.

View Source
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.

View Source
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.

View Source
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/.

View Source
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.

View Source
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.

View Source
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.

View Source
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.

View Source
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.

View Source
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.

View Source
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.

View Source
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.

View Source
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.

View Source
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.

View Source
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/.

View Source
const (
	OpGetPosition = "getPosition"
)

Position — /api/position.

View Source
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.

View Source
const (
	OpListPackets = "listPackets"
)

Packets — /api/packets.

View Source
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.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL