Skip to main content

REST-Side Satellite Configuration (Enterprise)

The REST-side satellite configuration is used when MAPS communicates with multiple remote satellite modems via a provider REST API (Inmarsat, Orbcomm, Viasat).

This side is responsible for:

  • Polling the provider mailbox for inbound messages
  • Encoding and dispatching outbound messages
  • Routing decoded messages into MAPS topic namespaces
  • Managing per-device backpressure and message lifetime

SIN-Based Routing Overview (Read This First)

All satellite message routing in MAPS is decided solely by the SIN value before any topic or namespace processing occurs.

Routing rules:

  • SIN = 147 → MAPS application message
  • SIN ≠ 147 → Common (non-MAPS) satellite message

MAPS does not inspect payload contents to determine routing class.
If the SIN is wrong, routing will be wrong.


Common Message Publish Roots (SIN ≠ 147)

commonInboundPublishRoot

Defines the topic template where decoded inbound common messages are published.

Default

/{deviceId}/common/in/{sin}/{min}
  • {sin} and {min} are extracted from the message
  • Used for modem control, status, position, and provider payloads

commonOutboundPublishRoot

Defines the topic root MAPS monitors for outbound common messages.

Default

/{deviceId}/common/out/#
  • Messages published here are encoded as common satellite messages
  • Wildcards are allowed
  • Publishing MAPS payloads here will result in incorrect encoding

MAPS Message Publish Roots (SIN = 147)

mapsInboundPublishRoot

Defines where decoded inbound MAPS messages are published.

Default

/{deviceId}/maps/in/{namespace}/#
  • {namespace} is extracted from the MAPS payload
  • Mapped directly into the broker namespace

mapsOutboundPublishRoot

Defines where outbound MAPS messages must be published.

Default

/{deviceId}/maps/out/{namespace}/#
  • Messages published here are encoded as MAPS messages
  • SIN is automatically forced to 147

Complete Configuration Reference

Base Satellite Fields

FieldDescription
incomingMessagePollIntervalPoll interval (seconds) for inbound mailbox messages
outgoingMessagePollIntervalFlush interval (seconds) for outbound messages
maxBufferSizeMaximum allowed payload size (bytes)
compressionCutoffSizePayload size threshold above which compression is applied
messageLifeTimeInMinutesMessage time-to-live before expiry
sharedSecretOptional shared secret for payload signing/encryption
sendHighPriorityMessagesBypass queueing for urgent messages (may incur extra cost)
sinNumberMAPS SIN number. Must be greater than 128 (default: 147)

REST-Specific Fields

FieldDescription
baseUrlSatellite provider REST API base URL
httpRequestTimeoutHTTP request timeout (seconds)
maxInflightEventsPerDeviceMaximum queued events per device
mailboxIdProvider mailbox identifier
mailboxPasswordProvider mailbox password
deviceInfoUpdateMinutesDevice metadata refresh interval (minutes)

Topic Routing Fields (Critical)

FieldDescription
commonInboundPublishRootInbound topic template for decoded common messages
commonOutboundPublishRootOutbound topic root for common messages
mapsInboundPublishRootInbound topic template for decoded MAPS messages
mapsOutboundPublishRootOutbound topic root for MAPS messages
outboundBroadcastTopic used to broadcast messages to all modems

Example Configuration

- name: "Inmarsat REST Interface"
protocol: satellite
auth: anon
url: satellite://inmarsat:0/

baseUrl: "http://localhost:8085/iotMessaging/v1"

mailboxId: "mailbox-001"
mailboxPassword: "mailbox-secret"

incomingMessagePollInterval: 10
outgoingMessagePollInterval: 60
httpRequestTimeout: 30

maxInflightEventsPerDevice: 2
messageLifeTimeInMinutes: 10
sharedSecret: "this is a shared secret"

commonInboundPublishRoot: "/{deviceId}/common/in/{sin}/{min}"
commonOutboundPublishRoot: "/{deviceId}/common/out/#"

mapsInboundPublishRoot: "/{deviceId}/maps/in/{namespace}/#"
mapsOutboundPublishRoot: "/{deviceId}/maps/out/{namespace}/#"

outboundBroadcast: "/inmarsat/broadcast"

Defaults and Enforced Minimums

FieldMinimumDefault
incomingMessagePollInterval10s10s
outgoingMessagePollInterval15s60s
deviceInfoUpdateMinutes10 min15 min

Polling Interval Timeline