iotwireless

package
v1.1.3 Latest Latest
Warning

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

Go to latest
Published: Jul 20, 2026 License: MIT Imports: 24 Imported by: 0

README

IoT Wireless

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

Coverage

Metric Value
Operations audited 6 (6 ok)
Feature families 9 (9 ok)
Known gaps 4
Deferred items 9
Resource leaks clean
Known gaps
  • CreateWirelessDevice/CreateWirelessGateway silently drop the request's LoRaWAN/Sidewalk nested config objects (not in the request struct at all) — devices/gateways round-trip with type-agnostic emulation only, no per-technology config persisted or returned
  • List* ops (ListWirelessDevices, ListWirelessGateways, etc.) always return a full single page with no NextToken; maxResults/nextToken query params are accepted by real AWS but ignored here (not a wrong-data bug — each call returns the complete accurate set — but pagination itself is unimplemented)
  • StartBulkAssociateWirelessDeviceWithMulticastGroup / StartBulkDisassociateWirelessDeviceFromMulticastGroup return 204 without mutating any tracked state (backend has no bulk-task tracking); GetWirelessDevice's multicast group membership is not queryable back out
  • InMemoryBackend uses a raw sync.RWMutex (backend.go) instead of pkgs/lockmetrics.RWMutex, deviating from the project's coarse-instrumented-lock convention (pkgs-catalog.md); functionally correct (one coarse lock at the invariant boundary) but not wired into lock-contention Prometheus metrics. Mechanical, wide (60+ call sites) — deferred as out of scope for a bug-fix pass
Deferred
  • GatewayTask / GatewayTaskDefinition wire shapes (routes verified reachable; response field completeness not cross-checked field-by-field against types.go)
  • WirelessDeviceImportTask / SingleWirelessDeviceImportTask wire shapes (routes verified reachable; not deep-audited)
  • Position / PositionConfiguration / PositionEstimate / ResourcePosition wire shapes
  • EventConfiguration (GetEventConfigurationByResourceTypes / UpdateEventConfigurationByResourceTypes / ListEventConfigurations / Get|UpdateResourceEventConfiguration)
  • LogLevels (GetLogLevelsByResourceTypes / UpdateLogLevelsByResourceTypes / Reset* / Get|Put|ResetResourceLogLevel)
  • …and 4 more — see PARITY.md

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"`
	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"`
	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"`
	// AccountID and Region exist purely for store.Table's keyFn; see the
	// identical comment on WirelessDevice above.
	AccountID string `json:"-"`
	Region    string `json:"-"`
}

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

type GatewayTask

type GatewayTask struct {
	WirelessGatewayID string
	TaskDefID         string
	Status            string
}

GatewayTask represents a wireless gateway task.

type GatewayTaskDefinition

type GatewayTaskDefinition struct {
	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.

func (*InMemoryBackend) AssociateWirelessDeviceWithFuotaTask

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

AssociateWirelessDeviceWithFuotaTask records the association of a wireless device with a FUOTA task.

func (*InMemoryBackend) AssociateWirelessDeviceWithMulticastGroup

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

AssociateWirelessDeviceWithMulticastGroup records the association of a wireless device with a multicast group.

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,
	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 string,
	tags map[string]string,
) (*FuotaTask, error)

CreateFuotaTask creates a new FUOTA task.

func (*InMemoryBackend) CreateMulticastGroup

func (b *InMemoryBackend) CreateMulticastGroup(
	accountID, region, name, description string,
	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 []string,
	tags map[string]string,
) (*NetworkAnalyzerConfig, error)

CreateNetworkAnalyzerConfig creates a new network analyzer configuration.

func (*InMemoryBackend) CreateServiceProfile

func (b *InMemoryBackend) CreateServiceProfile(
	accountID, region, name string,
	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 string,
	tags map[string]string,
) (*WirelessDevice, error)

CreateWirelessDevice creates a new wireless device.

func (*InMemoryBackend) CreateWirelessGateway

func (b *InMemoryBackend) CreateWirelessGateway(
	accountID, region, name, description string,
	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,
) (*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.

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 string) error

DisassociateMulticastGroupFromFuotaTask removes the association of a multicast group from a FUOTA task.

func (*InMemoryBackend) DisassociateWirelessDeviceFromFuotaTask

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

DisassociateWirelessDeviceFromFuotaTask removes the association of a wireless device from a FUOTA task.

func (*InMemoryBackend) DisassociateWirelessDeviceFromMulticastGroup

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

DisassociateWirelessDeviceFromMulticastGroup removes a device from a multicast group.

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() string

GetLogLevelsByResourceTypes returns the default log level settings.

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) 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) 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 multicast groups linked to 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) StartFuotaTask

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

StartFuotaTask sets the FUOTA task status to FUOTA_SESSION_STARTED.

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(defaultLogLevel string) error

UpdateLogLevelsByResourceTypes updates the default log level.

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,
) 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 string,
) error

UpdateWirelessDevice updates mutable fields on an existing wireless device.

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) error

UpdateWirelessGateway updates mutable fields on an existing wireless gateway.

type MulticastGroup

type MulticastGroup struct {
	CreatedAt   time.Time         `json:"createdAt"`
	Tags        map[string]string `json:"tags,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:"-"`
	WirelessDevices  []string          `json:"wirelessDevices,omitempty"`
	WirelessGateways []string          `json:"wirelessGateways,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"`
	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 string,
		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, 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, 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, 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 string,
		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) error

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

	CreateMulticastGroup(accountID, region, name, description string, 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 []string,
		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,
	) 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

	// 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 string) error
	ListMulticastGroupsByFuotaTask(accountID, region, fuotaTaskID string) []*MulticastGroup
	DisassociateMulticastGroupFromFuotaTask(fuotaTaskID string) error
	DisassociateWirelessDeviceFromMulticastGroup(multicastGroupID 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 string) error
	DisassociateWirelessDeviceFromThing(accountID, region, wirelessDeviceID string) error

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

	GetLogLevelsByResourceTypes() string
	UpdateLogLevelsByResourceTypes(defaultLogLevel string) 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,
	) (*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"`
	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"`
	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