iotwireless

package
v1.3.0 Latest Latest
Warning

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

Go to latest
Published: Aug 3, 2026 License: MIT Imports: 27 Imported by: 0

README

IoT Wireless

Parity grade: A · SDK aws-sdk-go-v2/service/iotwireless@v1.54.7 · last audited 2026-07-23 (d1235ad5)

Coverage

Metric Value
Operations audited 12 (12 ok)
Feature families 12 (12 ok)
Known gaps 2
Deferred items 0
Resource leaks clean
Known gaps
  • LoRaWAN/Sidewalk/Update/TraceContent nested configuration objects (on WirelessDevice, WirelessGateway, DeviceProfile, ServiceProfile, MulticastGroup, FuotaTask, GatewayTaskDefinition, NetworkAnalyzerConfiguration) are stored as opaque map[string]any rather than individually typed and validated per nested sub-struct (ABP/OTAA session keys, FPorts, Beaconing, SubBands, etc.). This is real, non-fabricated state — whatever JSON object a client sends is persisted and echoed back verbatim, and update ops merge rather than wholesale-replace — but it does not validate required-subfield presence or enum values the way a hand-modeled struct would. Field names at the top level (LoRaWAN, Sidewalk, Update, TraceContent) are all confirmed correct against the SDK.
  • ListWirelessDevices does not implement the DestinationName/DeviceProfileId/ServiceProfileId/FuotaTaskId/MulticastGroupId/WirelessDeviceType query-parameter filters that ListWirelessDevicesInput accepts — every call returns the full account/region device set (a completeness gap, not a wrong-data bug: each call's returned data is still accurate, just unfiltered). Note this is a real, reachable AWS filter capability (not the same class of gap as StartBulkAssociate's unfilterable QueryString, which has no structured representation at all) — worth a dedicated pass since ListFuotaTaskDeviceIDs/ListMulticastGroupDeviceIDs now exist and could back the FuotaTaskId/MulticastGroupId filters directly.

More

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrDeviceNotFound is returned when a wireless device does not exist.
	ErrDeviceNotFound = errors.New("ResourceNotFoundException: Wireless device not found")
	// ErrGatewayNotFound is returned when a wireless gateway does not exist.
	ErrGatewayNotFound = errors.New("ResourceNotFoundException: Wireless gateway not found")
	// ErrServiceProfileNotFound is returned when a service profile does not exist.
	ErrServiceProfileNotFound = errors.New("ResourceNotFoundException: Service profile not found")
	// ErrDestinationNotFound is returned when a destination does not exist.
	ErrDestinationNotFound = errors.New("ResourceNotFoundException: Destination not found")
	// ErrDeviceProfileNotFound is returned when a device profile does not exist.
	ErrDeviceProfileNotFound = errors.New("ResourceNotFoundException: Device profile not found")
	// ErrFuotaTaskNotFound is returned when a FUOTA task does not exist.
	ErrFuotaTaskNotFound = errors.New("ResourceNotFoundException: FUOTA task not found")
	// ErrMulticastGroupNotFound is returned when a multicast group does not exist.
	ErrMulticastGroupNotFound = errors.New("ResourceNotFoundException: Multicast group not found")
	// ErrNetworkAnalyzerConfigNotFound is returned when a network analyzer configuration does not exist.
	ErrNetworkAnalyzerConfigNotFound = errors.New("ResourceNotFoundException: Network analyzer configuration not found")
	// ErrValidation is returned when a request contains invalid parameters.
	ErrValidation = errors.New("ValidationException: invalid request parameters")
)

Sentinel errors for IoT Wireless backend operations.

View Source
var (
	// ErrPartnerAccountNotFound is returned when a partner account does not exist.
	ErrPartnerAccountNotFound = errors.New("ResourceNotFoundException: Partner account not found")
	// ErrImportTaskNotFound is returned when a wireless device import task does not exist.
	ErrImportTaskNotFound = errors.New("ResourceNotFoundException: Wireless device import task not found")
	// ErrGatewayTaskNotFound is returned when a wireless gateway task does not exist.
	ErrGatewayTaskNotFound = errors.New(
		"ResourceNotFoundException: Wireless gateway task not found",
	)
	// ErrGatewayTaskDefNotFound is returned when a wireless gateway task definition does not exist.
	ErrGatewayTaskDefNotFound = errors.New(
		"ResourceNotFoundException: Wireless gateway task definition not found",
	)
	// ErrMulticastGroupSessionNotFound is returned when a multicast group has no active session.
	ErrMulticastGroupSessionNotFound = errors.New(
		"ResourceNotFoundException: Multicast group session not found",
	)
)

Sentinel errors for new backend operations.

View Source
var ErrNilAppContext = errors.New("iotwireless: nil AppContext")

ErrNilAppContext is returned by Init when a nil AppContext is provided.

Functions

This section is empty.

Types

type Destination

type Destination struct {
	CreatedAt      time.Time         `json:"createdAt"`
	Tags           map[string]string `json:"tags,omitempty"`
	Name           string            `json:"name"`
	ARN            string            `json:"arn"`
	Expression     string            `json:"expression,omitempty"`
	ExpressionType string            `json:"expressionType,omitempty"`
	RoleArn        string            `json:"roleArn,omitempty"`
	Description    string            `json:"description,omitempty"`
	// AccountID and Region exist purely for store.Table's keyFn; see the
	// identical comment on WirelessDevice above.
	AccountID string `json:"-"`
	Region    string `json:"-"`
}

Destination routes messages from a device to AWS services.

type DeviceProfile

type DeviceProfile struct {
	CreatedAt time.Time         `json:"createdAt"`
	Tags      map[string]string `json:"tags,omitempty"`
	// LoRaWAN and Sidewalk hold the LoRaWANDeviceProfile /
	// SidewalkGetDeviceProfile configuration objects supplied at creation
	// time, echoed back verbatim on Get -- see the identical comment on
	// WirelessDevice.LoRaWAN above.
	LoRaWAN  map[string]any `json:"loRaWAN,omitempty"`
	Sidewalk map[string]any `json:"sidewalk,omitempty"`
	Name     string         `json:"name"`
	ID       string         `json:"id"`
	ARN      string         `json:"arn"`
	// AccountID and Region exist purely for store.Table's keyFn; see the
	// identical comment on WirelessDevice above.
	AccountID string `json:"-"`
	Region    string `json:"-"`
}

DeviceProfile contains LoRaWAN device profile settings.

type EventConfigDoc

type EventConfigDoc struct {
	ConnectionStatus        map[string]any `json:"ConnectionStatus,omitempty"`
	DeviceRegistrationState map[string]any `json:"DeviceRegistrationState,omitempty"`
	Join                    map[string]any `json:"Join,omitempty"`
	MessageDeliveryStatus   map[string]any `json:"MessageDeliveryStatus,omitempty"`
	Proximity               map[string]any `json:"Proximity,omitempty"`
}

EventConfigDoc is an event-notification configuration document keyed by AWS's five event-type fields. Each value is stored and echoed back exactly as submitted by the client (real mutate/read state, not fabricated).

type ExportedServiceProfile

type ExportedServiceProfile = ServiceProfile

ExportedServiceProfile is a compatibility alias used by the dashboard package.

type ExportedWirelessDevice

type ExportedWirelessDevice = WirelessDevice

ExportedWirelessDevice is a compatibility alias used by the dashboard package.

type FuotaTask

type FuotaTask struct {
	CreatedAt time.Time         `json:"createdAt"`
	Tags      map[string]string `json:"tags,omitempty"`
	// LoRaWAN holds the LoRaWANFuotaTask configuration object supplied at
	// creation time, echoed back verbatim on Get -- see the identical
	// comment on WirelessDevice.LoRaWAN above.
	LoRaWAN             map[string]any `json:"loRaWAN,omitempty"`
	Name                string         `json:"name"`
	ID                  string         `json:"id"`
	ARN                 string         `json:"arn"`
	Description         string         `json:"description,omitempty"`
	FirmwareUpdateImage string         `json:"firmwareUpdateImage,omitempty"`
	FirmwareUpdateRole  string         `json:"firmwareUpdateRole,omitempty"`
	// Descriptor is the base64-encoded firmware metadata blob.
	Descriptor string `json:"descriptor,omitempty"`
	// Status tracks the FUOTA task lifecycle (Pending, FuotaSession_Waiting,
	// In_FuotaSession, FuotaDone, Delete_Waiting), matching
	// types.FuotaTaskStatus. Set to "Pending" at creation and advanced by
	// StartFuotaTask; previously this was fabricated by overwriting
	// FirmwareUpdateRole, corrupting that field -- see StartFuotaTask.
	Status string `json:"status,omitempty"`
	// AccountID and Region exist purely for store.Table's keyFn; see the
	// identical comment on WirelessDevice above.
	AccountID          string `json:"-"`
	Region             string `json:"-"`
	FragmentIntervalMS int32  `json:"fragmentIntervalMs,omitempty"`
	FragmentSizeBytes  int32  `json:"fragmentSizeBytes,omitempty"`
	RedundancyPercent  int32  `json:"redundancyPercent,omitempty"`
}

FuotaTask represents a Firmware Update Over the Air (FUOTA) task.

type GatewayTask

type GatewayTask struct {
	CreatedAt         time.Time
	WirelessGatewayID string
	TaskDefID         string
	Status            string
}

GatewayTask represents a wireless gateway task.

type GatewayTaskDefinition

type GatewayTaskDefinition struct {
	Update          map[string]any
	ID              string
	ARN             string
	Name            string
	AutoCreateTasks bool
}

GatewayTaskDefinition represents a wireless gateway task definition.

type Handler

type Handler struct {
	Backend       StorageBackend
	AccountID     string
	DefaultRegion string
}

Handler is the HTTP handler for the IoT Wireless REST API.

func NewHandler

func NewHandler(backend StorageBackend) *Handler

NewHandler creates a new IoT Wireless handler.

func (*Handler) ChaosOperations

func (h *Handler) ChaosOperations() []string

ChaosOperations returns all operations that can be fault-injected.

func (*Handler) ChaosRegions

func (h *Handler) ChaosRegions() []string

ChaosRegions returns all regions this IoT Wireless instance handles.

func (*Handler) ChaosServiceName

func (h *Handler) ChaosServiceName() string

ChaosServiceName returns the lowercase AWS service name for fault rule matching.

func (*Handler) ExtractOperation

func (h *Handler) ExtractOperation(c *echo.Context) string

ExtractOperation extracts the IoT Wireless operation name from the request.

func (*Handler) ExtractResource

func (h *Handler) ExtractResource(c *echo.Context) string

ExtractResource extracts the resource ID from the URL path. Tag operations are the one exception: their resource ARN travels as the "resourceArn" query parameter rather than a path segment (see parseIoTWirelessPath's "tags" case), so it's read from the query here for CloudTrail capture.

func (*Handler) GetSupportedOperations

func (h *Handler) GetSupportedOperations() []string

GetSupportedOperations returns the list of supported IoT Wireless operations.

func (*Handler) Handler

func (h *Handler) Handler() echo.HandlerFunc

Handler returns the Echo handler function for IoT Wireless requests.

func (*Handler) MatchPriority

func (h *Handler) MatchPriority() int

MatchPriority returns the routing priority.

func (*Handler) Name

func (h *Handler) Name() string

Name returns the service name.

func (*Handler) Reset

func (h *Handler) Reset()

Reset clears the handler's backend state, returning it to a pristine condition.

func (*Handler) Restore

func (h *Handler) Restore(ctx context.Context, data []byte) error

Restore implements persistence.Persistable by delegating to the backend when it implements Snapshottable. Non-snapshottable backends are skipped.

func (*Handler) RouteMatcher

func (h *Handler) RouteMatcher() service.Matcher

RouteMatcher returns a function that matches IoT Wireless REST API requests. All paths are disambiguated via the SigV4 credential-scope service name to prevent mis-routing with other REST-JSON services that share similar paths.

func (*Handler) Snapshot

func (h *Handler) Snapshot(ctx context.Context) []byte

Snapshot implements persistence.Persistable by delegating to the backend when it implements Snapshottable. Returns nil for non-snapshottable backends.

type InMemoryBackend

type InMemoryBackend struct {
	// contains filtered or unexported fields
}

InMemoryBackend is the in-memory backend for IoT Wireless.

func NewInMemoryBackend

func NewInMemoryBackend() *InMemoryBackend

NewInMemoryBackend creates a new in-memory IoT Wireless backend.

func (*InMemoryBackend) AddDestinationInternal

func (b *InMemoryBackend) AddDestinationInternal(accountID, region string, dest *Destination)

AddDestinationInternal inserts a Destination directly into the backend, bypassing ID generation. Intended for test setup only.

func (*InMemoryBackend) AddDeviceProfileInternal

func (b *InMemoryBackend) AddDeviceProfileInternal(accountID, region string, dp *DeviceProfile)

AddDeviceProfileInternal inserts a DeviceProfile directly into the backend, bypassing ID generation. Intended for test setup only.

func (*InMemoryBackend) AddFuotaTaskInternal

func (b *InMemoryBackend) AddFuotaTaskInternal(accountID, region string, ft *FuotaTask)

AddFuotaTaskInternal inserts a FuotaTask directly into the backend, bypassing ID generation. Intended for test setup only.

func (*InMemoryBackend) AddServiceProfileInternal

func (b *InMemoryBackend) AddServiceProfileInternal(accountID, region string, sp *ServiceProfile)

AddServiceProfileInternal inserts a ServiceProfile directly into the backend, bypassing ID generation. Intended for test setup only.

func (*InMemoryBackend) AddWirelessDeviceInternal

func (b *InMemoryBackend) AddWirelessDeviceInternal(accountID, region string, d *WirelessDevice)

AddWirelessDeviceInternal inserts a WirelessDevice directly into the backend, bypassing ID generation. Intended for test setup only.

func (*InMemoryBackend) AddWirelessGatewayInternal

func (b *InMemoryBackend) AddWirelessGatewayInternal(accountID, region string, gw *WirelessGateway)

AddWirelessGatewayInternal inserts a WirelessGateway directly into the backend, bypassing ID generation. Intended for test setup only.

func (*InMemoryBackend) AssociateAwsAccountWithPartnerAccount

func (b *InMemoryBackend) AssociateAwsAccountWithPartnerAccount(
	accountID, region, partnerAccountID string,
	tags map[string]string,
) (string, error)

AssociateAwsAccountWithPartnerAccount stores a partner account association and returns its ARN.

func (*InMemoryBackend) AssociateMulticastGroupWithFuotaTask

func (b *InMemoryBackend) AssociateMulticastGroupWithFuotaTask(fuotaTaskID, multicastGroupID string) error

AssociateMulticastGroupWithFuotaTask records the association of a multicast group with a FUOTA task. A FUOTA task can have several associated multicast groups (ListMulticastGroupsByFuotaTask returns a list), so this adds to a per-task set rather than overwriting a single slot.

func (*InMemoryBackend) AssociateWirelessDeviceWithFuotaTask

func (b *InMemoryBackend) AssociateWirelessDeviceWithFuotaTask(fuotaTaskID, wirelessDeviceID string) error

AssociateWirelessDeviceWithFuotaTask records the association of a wireless device with a FUOTA task. A FUOTA task can have several associated devices (ListWirelessDevices' FuotaTaskId filter implies more than one), so this adds to a per-task set rather than overwriting a single slot.

func (*InMemoryBackend) AssociateWirelessDeviceWithMulticastGroup

func (b *InMemoryBackend) AssociateWirelessDeviceWithMulticastGroup(multicastGroupID, wirelessDeviceID string) error

AssociateWirelessDeviceWithMulticastGroup records the association of a wireless device with a multicast group. A multicast group can have many associated devices, so this adds to a per-group set rather than overwriting a single slot.

func (*InMemoryBackend) AssociateWirelessDeviceWithThing

func (b *InMemoryBackend) AssociateWirelessDeviceWithThing(
	accountID, region, wirelessDeviceID, thingArn string,
) error

AssociateWirelessDeviceWithThing associates a wireless device with an IoT Thing. Returns ErrDeviceNotFound when the device does not exist.

func (*InMemoryBackend) AssociateWirelessGatewayWithCertificate

func (b *InMemoryBackend) AssociateWirelessGatewayWithCertificate(
	accountID, region, gatewayID, iotCertificateID string,
) (string, error)

AssociateWirelessGatewayWithCertificate associates a wireless gateway with an IoT certificate and returns the certificate ARN. Returns ErrGatewayNotFound when the gateway does not exist.

func (*InMemoryBackend) AssociateWirelessGatewayWithThing

func (b *InMemoryBackend) AssociateWirelessGatewayWithThing(
	accountID, region, gatewayID, thingArn string,
) error

AssociateWirelessGatewayWithThing associates a wireless gateway with an IoT Thing. Returns ErrGatewayNotFound when the gateway does not exist.

func (*InMemoryBackend) CancelMulticastGroupSession

func (b *InMemoryBackend) CancelMulticastGroupSession(multicastGroupID string) error

CancelMulticastGroupSession marks the multicast group session as cancelled. If no session is active, the call is a no-op (idempotent).

func (*InMemoryBackend) CreateDestination

func (b *InMemoryBackend) CreateDestination(
	accountID, region, name, expression, expressionType, roleArn, description string,
	tags map[string]string,
) (*Destination, error)

CreateDestination creates a new destination.

func (*InMemoryBackend) CreateDeviceProfile

func (b *InMemoryBackend) CreateDeviceProfile(
	accountID, region, name string,
	loRaWAN, sidewalk map[string]any,
	tags map[string]string,
) (*DeviceProfile, error)

CreateDeviceProfile creates a new device profile.

func (*InMemoryBackend) CreateFuotaTask

func (b *InMemoryBackend) CreateFuotaTask(
	accountID, region, name, description, firmwareUpdateImage, firmwareUpdateRole, descriptor string,
	fragmentIntervalMS, fragmentSizeBytes, redundancyPercent int32,
	loRaWAN map[string]any,
	tags map[string]string,
) (*FuotaTask, error)

CreateFuotaTask creates a new FUOTA task.

func (*InMemoryBackend) CreateMulticastGroup

func (b *InMemoryBackend) CreateMulticastGroup(
	accountID, region, name, description string,
	loRaWAN map[string]any,
	tags map[string]string,
) (*MulticastGroup, error)

CreateMulticastGroup creates a new multicast group.

func (*InMemoryBackend) CreateNetworkAnalyzerConfig

func (b *InMemoryBackend) CreateNetworkAnalyzerConfig(
	accountID, region, name, description string,
	wirelessDevices, wirelessGateways, multicastGroups []string,
	traceContent map[string]any,
	tags map[string]string,
) (*NetworkAnalyzerConfig, error)

CreateNetworkAnalyzerConfig creates a new network analyzer configuration.

func (*InMemoryBackend) CreateServiceProfile

func (b *InMemoryBackend) CreateServiceProfile(
	accountID, region, name string,
	loRaWAN map[string]any,
	tags map[string]string,
) (*ServiceProfile, error)

CreateServiceProfile creates a new service profile.

func (*InMemoryBackend) CreateWirelessDevice

func (b *InMemoryBackend) CreateWirelessDevice(
	accountID, region, name, devType, destinationName, description, positioning string,
	loRaWAN, sidewalk map[string]any,
	tags map[string]string,
) (*WirelessDevice, error)

CreateWirelessDevice creates a new wireless device.

func (*InMemoryBackend) CreateWirelessGateway

func (b *InMemoryBackend) CreateWirelessGateway(
	accountID, region, name, description string,
	loRaWAN map[string]any,
	tags map[string]string,
) (*WirelessGateway, error)

CreateWirelessGateway creates a new wireless gateway.

func (*InMemoryBackend) CreateWirelessGatewayTask

func (b *InMemoryBackend) CreateWirelessGatewayTask(
	gatewayID, taskDefID string,
) (*GatewayTask, error)

CreateWirelessGatewayTask creates a task for a wireless gateway.

func (*InMemoryBackend) CreateWirelessGatewayTaskDefinition

func (b *InMemoryBackend) CreateWirelessGatewayTaskDefinition(
	accountID, region, name string,
	autoCreateTasks bool,
	update map[string]any,
) (*GatewayTaskDefinition, error)

CreateWirelessGatewayTaskDefinition creates a new gateway task definition.

func (*InMemoryBackend) DeleteDestination

func (b *InMemoryBackend) DeleteDestination(accountID, region, name string) error

DeleteDestination deletes a destination by name.

func (*InMemoryBackend) DeleteDeviceProfile

func (b *InMemoryBackend) DeleteDeviceProfile(accountID, region, id string) error

DeleteDeviceProfile deletes a device profile by ID.

func (*InMemoryBackend) DeleteFuotaTask

func (b *InMemoryBackend) DeleteFuotaTask(accountID, region, id string) error

DeleteFuotaTask deletes a FUOTA task by ID.

func (*InMemoryBackend) DeleteMulticastGroup

func (b *InMemoryBackend) DeleteMulticastGroup(accountID, region, id string) error

DeleteMulticastGroup deletes a multicast group by ID, cascading the cleanup to its wireless-device association set so no ghost entry survives the group's deletion.

func (*InMemoryBackend) DeleteNetworkAnalyzerConfig

func (b *InMemoryBackend) DeleteNetworkAnalyzerConfig(accountID, region, name string) error

DeleteNetworkAnalyzerConfig deletes a network analyzer configuration by name.

func (*InMemoryBackend) DeleteQueuedMessages

func (b *InMemoryBackend) DeleteQueuedMessages(wirelessDeviceID string) error

DeleteQueuedMessages clears the message queue for a wireless device.

func (*InMemoryBackend) DeleteServiceProfile

func (b *InMemoryBackend) DeleteServiceProfile(accountID, region, id string) error

DeleteServiceProfile deletes a service profile.

func (*InMemoryBackend) DeleteWirelessDevice

func (b *InMemoryBackend) DeleteWirelessDevice(accountID, region, id string) error

DeleteWirelessDevice deletes a wireless device.

func (*InMemoryBackend) DeleteWirelessDeviceImportTask

func (b *InMemoryBackend) DeleteWirelessDeviceImportTask(id string) error

DeleteWirelessDeviceImportTask removes a wireless device import task.

func (*InMemoryBackend) DeleteWirelessGateway

func (b *InMemoryBackend) DeleteWirelessGateway(accountID, region, id string) error

DeleteWirelessGateway deletes a wireless gateway.

func (*InMemoryBackend) DeleteWirelessGatewayTask

func (b *InMemoryBackend) DeleteWirelessGatewayTask(gatewayID string) error

DeleteWirelessGatewayTask removes the task for a wireless gateway.

func (*InMemoryBackend) DeleteWirelessGatewayTaskDefinition

func (b *InMemoryBackend) DeleteWirelessGatewayTaskDefinition(id string) error

DeleteWirelessGatewayTaskDefinition removes a gateway task definition.

func (*InMemoryBackend) DisassociateAwsAccountFromPartnerAccount

func (b *InMemoryBackend) DisassociateAwsAccountFromPartnerAccount(partnerAccountID string) error

DisassociateAwsAccountFromPartnerAccount removes a partner account association.

func (*InMemoryBackend) DisassociateMulticastGroupFromFuotaTask

func (b *InMemoryBackend) DisassociateMulticastGroupFromFuotaTask(fuotaTaskID, multicastGroupID string) error

DisassociateMulticastGroupFromFuotaTask removes a single multicast group from a FUOTA task's association set. multicastGroupID is the {MulticastGroupId} path segment of DELETE /fuota-tasks/{Id}/multicast-groups/{MulticastGroupId}; an empty value falls back to clearing every group associated with the task, preserving the prior behavior.

func (*InMemoryBackend) DisassociateWirelessDeviceFromFuotaTask

func (b *InMemoryBackend) DisassociateWirelessDeviceFromFuotaTask(fuotaTaskID, wirelessDeviceID string) error

DisassociateWirelessDeviceFromFuotaTask removes a single device from a FUOTA task's association set. wirelessDeviceID is the {WirelessDeviceId} path segment of DELETE /fuota-tasks/{Id}/wireless-devices/{WirelessDeviceId}; an empty value falls back to clearing every device associated with the task, preserving the prior behavior.

func (*InMemoryBackend) DisassociateWirelessDeviceFromMulticastGroup

func (b *InMemoryBackend) DisassociateWirelessDeviceFromMulticastGroup(
	multicastGroupID, wirelessDeviceID string,
) error

DisassociateWirelessDeviceFromMulticastGroup removes a single device from a multicast group's association set. wirelessDeviceID is the {WirelessDeviceId} path segment of DELETE /multicast-groups/{Id}/wireless-devices/{WirelessDeviceId}; an empty value (e.g. from a caller that can't recover it) falls back to clearing every device associated with the group, preserving the prior behavior.

func (*InMemoryBackend) DisassociateWirelessDeviceFromThing

func (b *InMemoryBackend) DisassociateWirelessDeviceFromThing(
	accountID, region, wirelessDeviceID string,
) error

DisassociateWirelessDeviceFromThing clears the thing association for a wireless device.

func (*InMemoryBackend) DisassociateWirelessGatewayFromCertificate

func (b *InMemoryBackend) DisassociateWirelessGatewayFromCertificate(
	accountID, region, gatewayID string,
) error

DisassociateWirelessGatewayFromCertificate clears the certificate association for a gateway.

func (*InMemoryBackend) DisassociateWirelessGatewayFromThing

func (b *InMemoryBackend) DisassociateWirelessGatewayFromThing(
	accountID, region, gatewayID string,
) error

DisassociateWirelessGatewayFromThing clears the thing association for a gateway.

func (*InMemoryBackend) EnqueueMessage

func (b *InMemoryBackend) EnqueueMessage(wirelessDeviceID string, msg QueuedMessage)

EnqueueMessage appends a downlink message to a wireless device's message queue, so that a subsequent ListQueuedMessages reflects messages sent via SendDataToWirelessDevice.

func (*InMemoryBackend) GetDestination

func (b *InMemoryBackend) GetDestination(accountID, region, name string) (*Destination, error)

GetDestination returns a destination by name.

func (*InMemoryBackend) GetDeviceProfile

func (b *InMemoryBackend) GetDeviceProfile(accountID, region, id string) (*DeviceProfile, error)

GetDeviceProfile returns a device profile by ID.

func (*InMemoryBackend) GetEventConfigurationByResourceTypes

func (b *InMemoryBackend) GetEventConfigurationByResourceTypes() *EventConfigDoc

GetEventConfigurationByResourceTypes returns the account-wide default event configuration. Returns an empty (zero-value) document if never configured.

func (*InMemoryBackend) GetFuotaTask

func (b *InMemoryBackend) GetFuotaTask(accountID, region, id string) (*FuotaTask, error)

GetFuotaTask returns a FUOTA task by ID.

func (*InMemoryBackend) GetLogLevelsByResourceTypes

func (b *InMemoryBackend) GetLogLevelsByResourceTypes() LogLevelsConfig

GetLogLevelsByResourceTypes returns the account-wide default log-level configuration. Defaults to DefaultLogLevel "INFO" with empty option lists when never explicitly configured.

func (*InMemoryBackend) GetMetricConfigurationStatus

func (b *InMemoryBackend) GetMetricConfigurationStatus() string

GetMetricConfigurationStatus returns the account's summary metric aggregation status. Defaults to "Enabled" (AWS's documented default) when never explicitly configured.

func (*InMemoryBackend) GetMulticastGroup

func (b *InMemoryBackend) GetMulticastGroup(accountID, region, id string) (*MulticastGroup, error)

GetMulticastGroup returns a multicast group by ID.

func (*InMemoryBackend) GetMulticastGroupSession

func (b *InMemoryBackend) GetMulticastGroupSession(multicastGroupID string) (time.Time, error)

GetMulticastGroupSession returns the start time of a multicast group's active session. Returns ErrMulticastGroupSessionNotFound if no session has been started (or it has since been cancelled), matching real AWS's ResourceNotFoundException for a group with no active session.

func (*InMemoryBackend) GetNetworkAnalyzerConfig

func (b *InMemoryBackend) GetNetworkAnalyzerConfig(accountID, region, name string) (*NetworkAnalyzerConfig, error)

GetNetworkAnalyzerConfig returns a network analyzer configuration by name.

func (*InMemoryBackend) GetPartnerAccount

func (b *InMemoryBackend) GetPartnerAccount(partnerAccountID string) (string, error)

GetPartnerAccount returns the ARN for a partner account.

func (*InMemoryBackend) GetPosition

func (b *InMemoryBackend) GetPosition(resourceID string) map[string]any

GetPosition returns the position data for a resource.

func (*InMemoryBackend) GetPositionConfiguration

func (b *InMemoryBackend) GetPositionConfiguration(resourceID string) (*PositionConfigEntry, bool)

GetPositionConfiguration returns the stored position configuration for a resource, if any.

func (*InMemoryBackend) GetResourceEventConfiguration

func (b *InMemoryBackend) GetResourceEventConfiguration(identifier string) (*ResourceEventConfigEntry, bool)

GetResourceEventConfiguration returns the stored event configuration for a specific resource identifier, if any.

func (*InMemoryBackend) GetResourceLogLevel

func (b *InMemoryBackend) GetResourceLogLevel(resourceID string) string

GetResourceLogLevel returns the log level for a specific resource.

func (*InMemoryBackend) GetServiceProfile

func (b *InMemoryBackend) GetServiceProfile(accountID, region, id string) (*ServiceProfile, error)

GetServiceProfile returns a service profile by ID.

func (*InMemoryBackend) GetWirelessDevice

func (b *InMemoryBackend) GetWirelessDevice(accountID, region, id string) (*WirelessDevice, error)

GetWirelessDevice returns a wireless device by ID.

func (*InMemoryBackend) GetWirelessDeviceImportTask

func (b *InMemoryBackend) GetWirelessDeviceImportTask(id string) (*WirelessDeviceImportTask, error)

GetWirelessDeviceImportTask returns a wireless device import task by ID.

func (*InMemoryBackend) GetWirelessDeviceThingArn

func (b *InMemoryBackend) GetWirelessDeviceThingArn(wirelessDeviceID string) string

GetWirelessDeviceThingArn returns the ARN of the IoT Thing associated with a wireless device, or "" if AssociateWirelessDeviceWithThing was never called (or the association was since cleared).

func (*InMemoryBackend) GetWirelessGateway

func (b *InMemoryBackend) GetWirelessGateway(accountID, region, id string) (*WirelessGateway, error)

GetWirelessGateway returns a wireless gateway by ID.

func (*InMemoryBackend) GetWirelessGatewayCertificate

func (b *InMemoryBackend) GetWirelessGatewayCertificate(
	accountID, region, gatewayID string,
) (string, error)

GetWirelessGatewayCertificate returns the certificate ID associated with a gateway.

func (*InMemoryBackend) GetWirelessGatewayTask

func (b *InMemoryBackend) GetWirelessGatewayTask(gatewayID string) (*GatewayTask, error)

GetWirelessGatewayTask returns the task for a wireless gateway.

func (*InMemoryBackend) GetWirelessGatewayTaskDefinition

func (b *InMemoryBackend) GetWirelessGatewayTaskDefinition(
	id string,
) (*GatewayTaskDefinition, error)

GetWirelessGatewayTaskDefinition returns a gateway task definition by ID.

func (*InMemoryBackend) GetWirelessGatewayThingArn

func (b *InMemoryBackend) GetWirelessGatewayThingArn(gatewayID string) string

GetWirelessGatewayThingArn returns the ARN of the IoT Thing associated with a wireless gateway, or "" if AssociateWirelessGatewayWithThing was never called (or the association was since cleared).

func (*InMemoryBackend) ListDestinations

func (b *InMemoryBackend) ListDestinations(accountID, region string) []*Destination

ListDestinations returns all destinations for the given account and region. ListDestinations returns all destinations for the given account and region, sorted by name for deterministic output.

func (*InMemoryBackend) ListDeviceProfiles

func (b *InMemoryBackend) ListDeviceProfiles(accountID, region string) []*DeviceProfile

ListDeviceProfiles returns all device profiles for the given account and region, sorted by name for deterministic output.

func (*InMemoryBackend) ListEventConfigurations

func (b *InMemoryBackend) ListEventConfigurations(resourceType string) []*ResourceEventConfigEntry

ListEventConfigurations returns all stored per-resource event configurations, optionally filtered by resource type (matched as a prefix against the stored IdentifierType, e.g. "WirelessDevice" matches "WirelessDeviceId").

func (*InMemoryBackend) ListFuotaTaskDeviceIDs added in v1.2.0

func (b *InMemoryBackend) ListFuotaTaskDeviceIDs(fuotaTaskID string) []string

ListFuotaTaskDeviceIDs returns the IDs of wireless devices currently associated with a FUOTA task, sorted for deterministic output.

func (*InMemoryBackend) ListFuotaTasks

func (b *InMemoryBackend) ListFuotaTasks(accountID, region string) []*FuotaTask

ListFuotaTasks returns all FUOTA tasks for the given account and region, sorted by name for deterministic output.

func (*InMemoryBackend) ListMulticastGroupDeviceIDs added in v1.2.0

func (b *InMemoryBackend) ListMulticastGroupDeviceIDs(multicastGroupID string) []string

ListMulticastGroupDeviceIDs returns the IDs of wireless devices currently associated with a multicast group, sorted for deterministic output.

func (*InMemoryBackend) ListMulticastGroups

func (b *InMemoryBackend) ListMulticastGroups(accountID, region string) []*MulticastGroup

ListMulticastGroups returns all multicast groups for the given account and region, sorted by name for deterministic output.

func (*InMemoryBackend) ListMulticastGroupsByFuotaTask

func (b *InMemoryBackend) ListMulticastGroupsByFuotaTask(
	accountID, region, fuotaTaskID string,
) []*MulticastGroup

ListMulticastGroupsByFuotaTask returns every multicast group associated with a FUOTA task.

func (*InMemoryBackend) ListNetworkAnalyzerConfigs

func (b *InMemoryBackend) ListNetworkAnalyzerConfigs(accountID, region string) []*NetworkAnalyzerConfig

ListNetworkAnalyzerConfigs returns all network analyzer configurations for the given account and region, sorted by name for deterministic output.

func (*InMemoryBackend) ListPartnerAccounts

func (b *InMemoryBackend) ListPartnerAccounts() map[string]string

ListPartnerAccounts returns all partner account ARNs.

func (*InMemoryBackend) ListPositionConfigurations

func (b *InMemoryBackend) ListPositionConfigurations(resourceType string) []*PositionConfigEntry

ListPositionConfigurations returns all stored position configurations, optionally filtered by resource type.

func (*InMemoryBackend) ListQueuedMessages

func (b *InMemoryBackend) ListQueuedMessages(wirelessDeviceID string) []QueuedMessage

ListQueuedMessages returns queued messages for a wireless device.

func (*InMemoryBackend) ListServiceProfiles

func (b *InMemoryBackend) ListServiceProfiles(accountID, region string) []*ServiceProfile

ListServiceProfiles returns all service profiles for the given account and region, sorted by name for deterministic output.

func (*InMemoryBackend) ListTagsForResource

func (b *InMemoryBackend) ListTagsForResource(arn string) (map[string]string, error)

ListTagsForResource returns all tags for a resource identified by ARN.

func (*InMemoryBackend) ListWirelessDeviceImportTasks

func (b *InMemoryBackend) ListWirelessDeviceImportTasks() []*WirelessDeviceImportTask

ListWirelessDeviceImportTasks returns all wireless device import tasks.

func (*InMemoryBackend) ListWirelessDevices

func (b *InMemoryBackend) ListWirelessDevices(accountID, region string) []*WirelessDevice

ListWirelessDevices returns all wireless devices for the given account and region, sorted by name for deterministic output.

func (*InMemoryBackend) ListWirelessGatewayTaskDefinitions

func (b *InMemoryBackend) ListWirelessGatewayTaskDefinitions() []*GatewayTaskDefinition

ListWirelessGatewayTaskDefinitions returns all gateway task definitions.

func (*InMemoryBackend) ListWirelessGateways

func (b *InMemoryBackend) ListWirelessGateways(accountID, region string) []*WirelessGateway

ListWirelessGateways returns all wireless gateways for the given account and region, sorted by name for deterministic output.

func (*InMemoryBackend) PutPositionConfiguration

func (b *InMemoryBackend) PutPositionConfiguration(
	resourceID, resourceType, destination string, solvers map[string]any,
) error

PutPositionConfiguration stores the position solver configuration for a resource.

func (*InMemoryBackend) PutResourceLogLevel

func (b *InMemoryBackend) PutResourceLogLevel(resourceID, logLevel string) error

PutResourceLogLevel sets the log level for a specific resource.

func (*InMemoryBackend) Reset

func (b *InMemoryBackend) Reset()

Reset clears all in-memory state, returning the backend to a pristine condition.

func (*InMemoryBackend) ResetAllResourceLogLevels

func (b *InMemoryBackend) ResetAllResourceLogLevels() error

ResetAllResourceLogLevels clears all resource-level log level overrides.

func (*InMemoryBackend) ResetResourceLogLevel

func (b *InMemoryBackend) ResetResourceLogLevel(resourceID string) error

ResetResourceLogLevel clears the log level override for a specific resource.

func (*InMemoryBackend) Restore

func (b *InMemoryBackend) Restore(ctx context.Context, data []byte) error

Restore loads backend state from a JSON snapshot. It implements persistence.Persistable.

func (*InMemoryBackend) Snapshot

func (b *InMemoryBackend) Snapshot(ctx context.Context) []byte

Snapshot serialises the backend state to JSON. It implements persistence.Persistable.

func (*InMemoryBackend) StartBulkAssociateWirelessDeviceWithMulticastGroup added in v1.2.0

func (b *InMemoryBackend) StartBulkAssociateWirelessDeviceWithMulticastGroup(
	accountID, region, multicastGroupID string,
) error

StartBulkAssociateWirelessDeviceWithMulticastGroup associates every wireless device in the account/region with the multicast group. Real AWS filters candidates by the request's QueryString search expression against device attributes; this backend has no query-expression evaluator, so it emulates the "all qualifying devices" semantics by associating the full device corpus, matching this package's existing convention for List* ops that accept-but-can't-honor a narrowing filter (see PARITY.md gaps).

func (*InMemoryBackend) StartBulkDisassociateWirelessDeviceFromMulticastGroup added in v1.2.0

func (b *InMemoryBackend) StartBulkDisassociateWirelessDeviceFromMulticastGroup(multicastGroupID string) error

StartBulkDisassociateWirelessDeviceFromMulticastGroup disassociates every wireless device in the account/region from the multicast group -- the bulk-disassociate counterpart of StartBulkAssociateWirelessDeviceWithMulticastGroup.

func (*InMemoryBackend) StartFuotaTask

func (b *InMemoryBackend) StartFuotaTask(accountID, region, id string) error

StartFuotaTask transitions the FUOTA task's Status to "FuotaSession_Waiting" (types.FuotaTaskStatusFuotaSessionWaiting), matching real AWS's lifecycle for a task moved out of "Pending" by StartFuotaTask. Previously this corrupted FirmwareUpdateRole by overwriting it with a fabricated status string instead of tracking status as its own field.

func (*InMemoryBackend) StartMulticastGroupSession

func (b *InMemoryBackend) StartMulticastGroupSession(multicastGroupID string) error

StartMulticastGroupSession marks a multicast group session as active, recording its start time so GetMulticastGroupSession can report it back.

func (*InMemoryBackend) StartSingleWirelessDeviceImportTask

func (b *InMemoryBackend) StartSingleWirelessDeviceImportTask(
	accountID, region, destinationName string,
) (*SingleWirelessDeviceImportTask, error)

StartSingleWirelessDeviceImportTask creates a single wireless device import task.

func (*InMemoryBackend) StartWirelessDeviceImportTask

func (b *InMemoryBackend) StartWirelessDeviceImportTask(
	accountID, region, destinationName string,
) (*WirelessDeviceImportTask, error)

StartWirelessDeviceImportTask creates a bulk wireless device import task.

func (*InMemoryBackend) TagResource

func (b *InMemoryBackend) TagResource(arn string, tags map[string]string) error

TagResource adds or updates tags on a resource identified by ARN.

func (*InMemoryBackend) UntagResource

func (b *InMemoryBackend) UntagResource(arn string, tagKeys []string) error

UntagResource removes tags from a resource identified by ARN. If all tags are removed the empty map entry is cleaned up to prevent memory leaks.

func (*InMemoryBackend) UpdateDestination

func (b *InMemoryBackend) UpdateDestination(
	accountID, region, name, expression, expressionType, roleArn, description string,
) error

UpdateDestination updates mutable fields on an existing destination.

func (*InMemoryBackend) UpdateEventConfigurationByResourceTypes

func (b *InMemoryBackend) UpdateEventConfigurationByResourceTypes(doc *EventConfigDoc)

UpdateEventConfigurationByResourceTypes replaces the account-wide default event configuration.

func (*InMemoryBackend) UpdateFuotaTask

func (b *InMemoryBackend) UpdateFuotaTask(accountID, region, id, name, description string) error

UpdateFuotaTask updates mutable fields on an existing FUOTA task.

func (*InMemoryBackend) UpdateLogLevelsByResourceTypes

func (b *InMemoryBackend) UpdateLogLevelsByResourceTypes(cfg LogLevelsConfig) error

UpdateLogLevelsByResourceTypes replaces the account-wide default log-level configuration.

func (*InMemoryBackend) UpdateMetricConfigurationStatus

func (b *InMemoryBackend) UpdateMetricConfigurationStatus(status string) error

UpdateMetricConfigurationStatus sets the account's summary metric aggregation status.

func (*InMemoryBackend) UpdateMulticastGroup

func (b *InMemoryBackend) UpdateMulticastGroup(accountID, region, id, name, description string) error

UpdateMulticastGroup updates mutable fields on an existing multicast group.

func (*InMemoryBackend) UpdateNetworkAnalyzerConfig

func (b *InMemoryBackend) UpdateNetworkAnalyzerConfig(
	accountID, region, name, description string,
	wirelessDevices, wirelessGateways []string,
	traceContent map[string]any,
) error

UpdateNetworkAnalyzerConfig updates mutable fields on an existing network analyzer configuration.

func (*InMemoryBackend) UpdatePosition

func (b *InMemoryBackend) UpdatePosition(resourceID string, position map[string]any) error

UpdatePosition updates the position data for a resource.

func (*InMemoryBackend) UpdateResourceEventConfiguration

func (b *InMemoryBackend) UpdateResourceEventConfiguration(
	identifier, identifierType, partnerType string, doc *EventConfigDoc,
)

UpdateResourceEventConfiguration stores the event configuration for a specific resource identifier.

func (*InMemoryBackend) UpdateWirelessDevice

func (b *InMemoryBackend) UpdateWirelessDevice(
	accountID, region, id, name, description, destinationName, positioning string,
	loRaWAN, sidewalk map[string]any,
) error

UpdateWirelessDevice updates mutable fields on an existing wireless device. loRaWAN/sidewalk are merged key-by-key into the stored configuration (rather than wholesale replaced), matching real AWS's UpdateWirelessDevice semantics of updating only the LoRaWAN/Sidewalk sub-fields the client actually supplied (e.g. LoRaWANUpdateDevice only carries DeviceProfileId/ ServiceProfileId/ABP/FPorts -- not DevEui -- so a full replace would silently drop DevEui that CreateWirelessDevice originally stored).

func (*InMemoryBackend) UpdateWirelessDeviceImportTask

func (b *InMemoryBackend) UpdateWirelessDeviceImportTask(id, destinationName string) error

UpdateWirelessDeviceImportTask updates the destination name of a wireless device import task.

func (*InMemoryBackend) UpdateWirelessGateway

func (b *InMemoryBackend) UpdateWirelessGateway(
	accountID, region, id, name, description string,
	loRaWANUpdates map[string]any,
) error

UpdateWirelessGateway updates mutable fields on an existing wireless gateway. UpdateWirelessGatewayInput carries JoinEuiFilters/MaxEirp/ NetIdFilters as top-level fields (not nested under LoRaWAN, unlike Create), so loRaWANUpdates merges them into the stored LoRaWAN map under their real field names.

type LogLevelsConfig added in v1.2.0

type LogLevelsConfig struct {
	DefaultLogLevel           string
	FuotaTaskLogOptions       []map[string]any
	WirelessDeviceLogOptions  []map[string]any
	WirelessGatewayLogOptions []map[string]any
}

LogLevelsConfig is the account-wide default log-level configuration set via UpdateLogLevelsByResourceTypes. FuotaTaskLogOptions/ WirelessDeviceLogOptions/WirelessGatewayLogOptions hold the request's nested log-option-list objects verbatim (see the WirelessDevice.LoRaWAN doc comment in models.go for why opaque storage is used for these client-submitted nested configs) -- previously these three fields were silently accepted by UpdateLogLevelsByResourceTypesInput and dropped, always echoing back empty arrays regardless of what was set.

type MulticastGroup

type MulticastGroup struct {
	CreatedAt time.Time         `json:"createdAt"`
	Tags      map[string]string `json:"tags,omitempty"`
	// LoRaWAN holds the LoRaWANMulticast configuration object supplied at
	// creation time, echoed back verbatim on Get -- see the identical
	// comment on WirelessDevice.LoRaWAN above.
	LoRaWAN     map[string]any `json:"loRaWAN,omitempty"`
	Name        string         `json:"name"`
	ID          string         `json:"id"`
	ARN         string         `json:"arn"`
	Description string         `json:"description,omitempty"`
	Status      string         `json:"status"`
	// AccountID and Region exist purely for store.Table's keyFn; see the
	// identical comment on WirelessDevice above.
	AccountID string `json:"-"`
	Region    string `json:"-"`
}

MulticastGroup represents an IoT Wireless multicast group.

type NetworkAnalyzerConfig

type NetworkAnalyzerConfig struct {
	Tags        map[string]string `json:"tags,omitempty"`
	Name        string            `json:"name"`
	ARN         string            `json:"arn"`
	Description string            `json:"description,omitempty"`
	AccountID   string            `json:"-"`
	Region      string            `json:"-"`
	// TraceContent holds the TraceContent object (LogLevel,
	// MulticastFrameInfo, WirelessDeviceFrameInfo) supplied at creation or
	// update time, echoed back verbatim on Get -- see the identical comment
	// on WirelessDevice.LoRaWAN above.
	TraceContent     map[string]any `json:"traceContent,omitempty"`
	WirelessDevices  []string       `json:"wirelessDevices,omitempty"`
	WirelessGateways []string       `json:"wirelessGateways,omitempty"`
	MulticastGroups  []string       `json:"multicastGroups,omitempty"`
}

NetworkAnalyzerConfig represents an IoT Wireless network analyzer configuration.

type PositionConfigEntry

type PositionConfigEntry struct {
	Solvers            map[string]any `json:"solvers,omitempty"`
	ResourceIdentifier string         `json:"resourceIdentifier"`
	ResourceType       string         `json:"resourceType"`
	Destination        string         `json:"destination,omitempty"`
}

PositionConfigEntry represents a stored position configuration for a wireless device or gateway resource, as set via PutPositionConfiguration.

type Provider

type Provider struct{}

Provider implements service.Provider for the IoT Wireless service.

func (*Provider) Init

Init initializes the IoT Wireless service backend and handler.

func (*Provider) Name

func (p *Provider) Name() string

Name returns the provider name.

type QueuedMessage

type QueuedMessage struct {
	ReceivedAt    time.Time
	MessageID     string
	PayloadBase64 string
	TransmitMode  int32
}

QueuedMessage represents a downlink message queued for a wireless device.

type Resettable

type Resettable interface {
	Reset()
}

Resettable is an optional interface that a StorageBackend may implement to support clearing all state (e.g. for test teardown).

type ResourceEventConfigEntry

type ResourceEventConfigEntry struct {
	Config         EventConfigDoc `json:"config"`
	Identifier     string         `json:"identifier"`
	IdentifierType string         `json:"identifierType"`
	PartnerType    string         `json:"partnerType,omitempty"`
}

ResourceEventConfigEntry represents a stored per-resource event configuration, as set via UpdateResourceEventConfiguration.

type ServiceProfile

type ServiceProfile struct {
	CreatedAt time.Time         `json:"createdAt"`
	Tags      map[string]string `json:"tags,omitempty"`
	// LoRaWAN holds the LoRaWANServiceProfile configuration object supplied
	// at creation time, echoed back verbatim on Get -- see the identical
	// comment on WirelessDevice.LoRaWAN above.
	LoRaWAN map[string]any `json:"loRaWAN,omitempty"`
	Name    string         `json:"name"`
	ID      string         `json:"id"`
	ARN     string         `json:"arn"`
	// AccountID and Region exist purely for store.Table's keyFn; see the
	// identical comment on WirelessDevice above.
	AccountID string `json:"-"`
	Region    string `json:"-"`
}

ServiceProfile contains settings for a LoRaWAN service profile.

type SingleWirelessDeviceImportTask

type SingleWirelessDeviceImportTask struct {
	CreatedAt        time.Time `json:"createdAt"`
	ARN              string    `json:"arn"`
	WirelessDeviceID string    `json:"wirelessDeviceId"`
	DestinationName  string    `json:"destinationName"`
	Status           string    `json:"status"`
}

SingleWirelessDeviceImportTask represents an IoT Wireless single-device import task.

type Snapshottable

type Snapshottable interface {
	Snapshot(ctx context.Context) []byte
	Restore(ctx context.Context, data []byte) error
}

Snapshottable is an optional interface that a StorageBackend may implement to support state serialisation and restoration (e.g. for --persist mode). Backends that do not implement it are silently skipped during snapshot/restore.

type StorageBackend

type StorageBackend interface {
	Reset()

	CreateWirelessDevice(
		accountID, region, name, devType, destinationName, description, positioning string,
		loRaWAN, sidewalk map[string]any,
		tags map[string]string,
	) (*WirelessDevice, error)
	GetWirelessDevice(accountID, region, id string) (*WirelessDevice, error)
	ListWirelessDevices(accountID, region string) []*WirelessDevice
	DeleteWirelessDevice(accountID, region, id string) error

	CreateWirelessGateway(
		accountID, region, name, description string,
		loRaWAN map[string]any,
		tags map[string]string,
	) (*WirelessGateway, error)
	GetWirelessGateway(accountID, region, id string) (*WirelessGateway, error)
	ListWirelessGateways(accountID, region string) []*WirelessGateway
	DeleteWirelessGateway(accountID, region, id string) error

	CreateServiceProfile(
		accountID, region, name string,
		loRaWAN map[string]any,
		tags map[string]string,
	) (*ServiceProfile, error)
	GetServiceProfile(accountID, region, id string) (*ServiceProfile, error)
	ListServiceProfiles(accountID, region string) []*ServiceProfile
	DeleteServiceProfile(accountID, region, id string) error

	CreateDestination(
		accountID, region, name, expression, expressionType, roleArn, description string,
		tags map[string]string,
	) (*Destination, error)
	GetDestination(accountID, region, name string) (*Destination, error)
	ListDestinations(accountID, region string) []*Destination
	DeleteDestination(accountID, region, name string) error

	CreateDeviceProfile(
		accountID, region, name string,
		loRaWAN, sidewalk map[string]any,
		tags map[string]string,
	) (*DeviceProfile, error)
	GetDeviceProfile(accountID, region, id string) (*DeviceProfile, error)
	ListDeviceProfiles(accountID, region string) []*DeviceProfile
	DeleteDeviceProfile(accountID, region, id string) error

	CreateFuotaTask(
		accountID, region, name, description, firmwareUpdateImage, firmwareUpdateRole, descriptor string,
		fragmentIntervalMS, fragmentSizeBytes, redundancyPercent int32,
		loRaWAN map[string]any,
		tags map[string]string,
	) (*FuotaTask, error)
	GetFuotaTask(accountID, region, id string) (*FuotaTask, error)
	ListFuotaTasks(accountID, region string) []*FuotaTask
	DeleteFuotaTask(accountID, region, id string) error
	UpdateFuotaTask(accountID, region, id, name, description string) error

	UpdateWirelessGateway(accountID, region, id, name, description string, loRaWANUpdates map[string]any) error

	UpdateDestination(accountID, region, name, expression, expressionType, roleArn, description string) error

	CreateMulticastGroup(
		accountID, region, name, description string,
		loRaWAN map[string]any,
		tags map[string]string,
	) (*MulticastGroup, error)
	GetMulticastGroup(accountID, region, id string) (*MulticastGroup, error)
	ListMulticastGroups(accountID, region string) []*MulticastGroup
	DeleteMulticastGroup(accountID, region, id string) error
	UpdateMulticastGroup(accountID, region, id, name, description string) error

	CreateNetworkAnalyzerConfig(
		accountID, region, name, description string,
		wirelessDevices, wirelessGateways, multicastGroups []string,
		traceContent map[string]any,
		tags map[string]string,
	) (*NetworkAnalyzerConfig, error)
	GetNetworkAnalyzerConfig(accountID, region, name string) (*NetworkAnalyzerConfig, error)
	ListNetworkAnalyzerConfigs(accountID, region string) []*NetworkAnalyzerConfig
	DeleteNetworkAnalyzerConfig(accountID, region, name string) error
	UpdateNetworkAnalyzerConfig(
		accountID, region, name, description string,
		wirelessDevices, wirelessGateways []string,
		traceContent map[string]any,
	) error

	AssociateAwsAccountWithPartnerAccount(
		accountID, region, partnerAccountID string,
		tags map[string]string,
	) (string, error)
	AssociateMulticastGroupWithFuotaTask(fuotaTaskID, multicastGroupID string) error
	AssociateWirelessDeviceWithFuotaTask(fuotaTaskID, wirelessDeviceID string) error
	AssociateWirelessDeviceWithMulticastGroup(multicastGroupID, wirelessDeviceID string) error
	AssociateWirelessDeviceWithThing(accountID, region, wirelessDeviceID, thingArn string) error
	AssociateWirelessGatewayWithCertificate(accountID, region, gatewayID, iotCertificateID string) (string, error)
	AssociateWirelessGatewayWithThing(accountID, region, gatewayID, thingArn string) error
	CancelMulticastGroupSession(multicastGroupID string) error
	ListMulticastGroupDeviceIDs(multicastGroupID string) []string
	ListFuotaTaskDeviceIDs(fuotaTaskID string) []string
	StartBulkAssociateWirelessDeviceWithMulticastGroup(accountID, region, multicastGroupID string) error
	StartBulkDisassociateWirelessDeviceFromMulticastGroup(multicastGroupID string) error

	// GetWirelessDeviceThingArn returns the ARN of the IoT Thing associated
	// with a wireless device via AssociateWirelessDeviceWithThing, or "" if
	// none is associated. Used by GetWirelessDevice to surface ThingArn/
	// ThingName, matching real AWS's response shape.
	GetWirelessDeviceThingArn(wirelessDeviceID string) string
	// GetWirelessGatewayThingArn returns the ARN of the IoT Thing associated
	// with a wireless gateway via AssociateWirelessGatewayWithThing, or "" if
	// none is associated. Used by GetWirelessGateway to surface ThingArn/
	// ThingName, matching real AWS's response shape.
	GetWirelessGatewayThingArn(gatewayID string) string

	// Extended operations implemented across the various <family>.go files.
	StartFuotaTask(accountID, region, id string) error
	DisassociateWirelessDeviceFromFuotaTask(fuotaTaskID, wirelessDeviceID string) error
	ListMulticastGroupsByFuotaTask(accountID, region, fuotaTaskID string) []*MulticastGroup
	DisassociateMulticastGroupFromFuotaTask(fuotaTaskID, multicastGroupID string) error
	DisassociateWirelessDeviceFromMulticastGroup(multicastGroupID, wirelessDeviceID string) error
	StartMulticastGroupSession(multicastGroupID string) error
	GetMulticastGroupSession(multicastGroupID string) (time.Time, error)

	DisassociateWirelessGatewayFromCertificate(accountID, region, gatewayID string) error
	DisassociateWirelessGatewayFromThing(accountID, region, gatewayID string) error
	GetWirelessGatewayCertificate(accountID, region, gatewayID string) (string, error)

	UpdateWirelessDevice(
		accountID, region, id, name, description, destinationName, positioning string,
		loRaWAN, sidewalk map[string]any,
	) error
	DisassociateWirelessDeviceFromThing(accountID, region, wirelessDeviceID string) error

	GetPartnerAccount(partnerAccountID string) (string, error)
	ListPartnerAccounts() map[string]string
	DisassociateAwsAccountFromPartnerAccount(partnerAccountID string) error

	GetLogLevelsByResourceTypes() LogLevelsConfig
	UpdateLogLevelsByResourceTypes(cfg LogLevelsConfig) error
	ResetAllResourceLogLevels() error
	GetResourceLogLevel(resourceID string) string
	PutResourceLogLevel(resourceID, logLevel string) error
	ResetResourceLogLevel(resourceID string) error

	CreateWirelessGatewayTask(gatewayID, taskDefID string) (*GatewayTask, error)
	GetWirelessGatewayTask(gatewayID string) (*GatewayTask, error)
	DeleteWirelessGatewayTask(gatewayID string) error
	CreateWirelessGatewayTaskDefinition(
		accountID, region, name string,
		autoCreateTasks bool,
		update map[string]any,
	) (*GatewayTaskDefinition, error)
	GetWirelessGatewayTaskDefinition(id string) (*GatewayTaskDefinition, error)
	ListWirelessGatewayTaskDefinitions() []*GatewayTaskDefinition
	DeleteWirelessGatewayTaskDefinition(id string) error

	GetPosition(resourceID string) map[string]any
	UpdatePosition(resourceID string, position map[string]any) error

	PutPositionConfiguration(resourceID, resourceType, destination string, solvers map[string]any) error
	GetPositionConfiguration(resourceID string) (*PositionConfigEntry, bool)
	ListPositionConfigurations(resourceType string) []*PositionConfigEntry

	GetEventConfigurationByResourceTypes() *EventConfigDoc
	UpdateEventConfigurationByResourceTypes(doc *EventConfigDoc)
	ListEventConfigurations(resourceType string) []*ResourceEventConfigEntry
	GetResourceEventConfiguration(identifier string) (*ResourceEventConfigEntry, bool)
	UpdateResourceEventConfiguration(identifier, identifierType, partnerType string, doc *EventConfigDoc)

	GetMetricConfigurationStatus() string
	UpdateMetricConfigurationStatus(status string) error

	ListQueuedMessages(wirelessDeviceID string) []QueuedMessage
	DeleteQueuedMessages(wirelessDeviceID string) error
	EnqueueMessage(wirelessDeviceID string, msg QueuedMessage)

	StartWirelessDeviceImportTask(accountID, region, destinationName string) (*WirelessDeviceImportTask, error)
	StartSingleWirelessDeviceImportTask(
		accountID, region, destinationName string,
	) (*SingleWirelessDeviceImportTask, error)
	GetWirelessDeviceImportTask(id string) (*WirelessDeviceImportTask, error)
	DeleteWirelessDeviceImportTask(id string) error
	UpdateWirelessDeviceImportTask(id, destinationName string) error
	ListWirelessDeviceImportTasks() []*WirelessDeviceImportTask

	TagResource(arn string, tags map[string]string) error
	UntagResource(arn string, tagKeys []string) error
	ListTagsForResource(arn string) (map[string]string, error)
}

StorageBackend is the interface for the IoT Wireless backend.

type WirelessDevice

type WirelessDevice struct {
	CreatedAt            time.Time         `json:"createdAt"`
	LastUplinkReceivedAt *time.Time        `json:"lastUplinkReceivedAt,omitempty"`
	Tags                 map[string]string `json:"tags,omitempty"`
	// LoRaWAN and Sidewalk hold the request's nested LoRaWAN/Sidewalk
	// configuration object verbatim (whatever JSON object the client sent in
	// CreateWirelessDevice/UpdateWirelessDevice), round-tripped back exactly
	// on Get/List. Stored opaquely rather than as individually typed fields
	// because the real shapes (types.LoRaWANDevice / SidewalkCreateWirelessDevice)
	// carry many optional nested vendor sub-objects (ABP/OTAA session keys,
	// FPorts, ...); this still captures real, non-fabricated client state.
	LoRaWAN         map[string]any `json:"loRaWAN,omitempty"`
	Sidewalk        map[string]any `json:"sidewalk,omitempty"`
	Positioning     string         `json:"positioning,omitempty"`
	Name            string         `json:"name"`
	ID              string         `json:"id"`
	ARN             string         `json:"arn"`
	Description     string         `json:"description,omitempty"`
	Type            string         `json:"type"`
	DestinationName string         `json:"destinationName,omitempty"`
	// AccountID and Region are not part of the AWS wire shape for this
	// resource; they exist purely so store.Table's keyFn (store_setup.go) can
	// derive the account+region-scoped composite key this backend requires.
	// Tagged json:"-" so they never leak into an API response; Snapshot/
	// Restore round-trips them via the deviceSnapshot DTO instead (see
	// persistence.go).
	AccountID string `json:"-"`
	Region    string `json:"-"`
}

WirelessDevice represents a LoRaWAN or Sidewalk wireless device.

type WirelessDeviceImportTask

type WirelessDeviceImportTask struct {
	CreatedAt                      time.Time `json:"createdAt"`
	ID                             string    `json:"id"`
	ARN                            string    `json:"arn"`
	DestinationName                string    `json:"destinationName"`
	Status                         string    `json:"status"`
	StatusReason                   string    `json:"statusReason,omitempty"`
	InitializedImportedDeviceCount int64     `json:"initializedImportedDeviceCount"`
	PendingImportedDeviceCount     int64     `json:"pendingImportedDeviceCount"`
	OnboardedImportedDeviceCount   int64     `json:"onboardedImportedDeviceCount"`
	FailedImportedDeviceCount      int64     `json:"failedImportedDeviceCount"`
}

WirelessDeviceImportTask represents an IoT Wireless device bulk-import task.

type WirelessGateway

type WirelessGateway struct {
	CreatedAt            time.Time         `json:"createdAt"`
	LastUplinkReceivedAt *time.Time        `json:"lastUplinkReceivedAt,omitempty"`
	Tags                 map[string]string `json:"tags,omitempty"`
	// LoRaWAN holds the request's nested LoRaWAN gateway configuration object
	// (GatewayEui, RfRegion, JoinEuiFilters, NetIdFilters, MaxEirp, SubBands,
	// Beaconing, ...) verbatim -- see the identical comment on
	// WirelessDevice.LoRaWAN above for why this is stored opaquely.
	LoRaWAN          map[string]any `json:"loRaWAN,omitempty"`
	Name             string         `json:"name"`
	ID               string         `json:"id"`
	ARN              string         `json:"arn"`
	Description      string         `json:"description,omitempty"`
	ConnectionStatus string         `json:"connectionStatus,omitempty"`
	FirmwareVersion  string         `json:"firmwareVersion,omitempty"`
	FirmwareModel    string         `json:"firmwareModel,omitempty"`
	FirmwareStation  string         `json:"firmwareStation,omitempty"`
	// AccountID and Region exist purely for store.Table's keyFn; see the
	// identical comment on WirelessDevice above.
	AccountID string `json:"-"`
	Region    string `json:"-"`
}

WirelessGateway represents a LoRaWAN gateway.

Jump to

Keyboard shortcuts

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