Collection of articles for working with Multitech devices in LoRaWAN networks.
This directory contains comprehensive API documentation for the Multi-Tech Systems (MTS) IoT device management platform, generated from the mtsDeviceAPI and mtsDeviceUI projects.
api-documentation.yaml - OpenAPI 3.0 Specification (YAML format)
api-documentation.json - OpenAPI 3.0 Specification (JSON format)
API-README.md - Complete API Guide
API-QUICK-REFERENCE.md - Quick Reference Guide
MTS-Device-API.postman_collection.json - Postman Collection
UNDOCUMENTED-ENDPOINTS-FINDINGS.md - Newly Discovered Endpoints
STATS-ENDPOINTS-DISCOVERY.md - Stats Monitoring System
SESSION-SUMMARY-2025-12-17.md - Discovery Session Report
DISCOVERY-SUMMARY.txt - Quick Discovery Reference
MONITORING-BEST-PRACTICES.md - Monitoring & Alerting Guide
WAN-FAILOVER-GUIDE.md - WAN Failover Configuration
CLIENT-EXAMPLES.md - API Client Implementations
PUT-OPERATIONS-TEST-REPORT.md - PUT Endpoint Testing Results
USER-ROLE-PERMISSIONS-REPORT.md - Role-Based Access Control
LORA-OPERATIONS-WORKFLOW.md - FOTA & Multicast Workflow Guide
Online:
api-documentation.yamlLocal:
# Using Docker
docker run -p 8080:8080 -e SWAGGER_JSON=/api-documentation.yaml \
-v $(pwd):/usr/share/nginx/html swaggerapi/swagger-ui
# Then open http://localhost:8080
MTS-Device-API.postman_collection.jsonbaseUrl variable to your device IPapi-documentation.yamlUse OpenAPI Generator to create client libraries:
# Install OpenAPI Generator
npm install @openapitools/openapi-generator-cli -g
# Python client
openapi-generator-cli generate \
-i api-documentation.yaml \
-g python \
-o ./clients/python
# JavaScript/TypeScript client
openapi-generator-cli generate \
-i api-documentation.yaml \
-g typescript-axios \
-o ./clients/typescript
# Java client
openapi-generator-cli generate \
-i api-documentation.yaml \
-g java \
-o ./clients/java
# C# client
openapi-generator-cli generate \
-i api-documentation.yaml \
-g csharp \
-o ./clients/csharp
# Go client
openapi-generator-cli generate \
-i api-documentation.yaml \
-g go \
-o ./clients/go
Read the Overview: Start with API-README.md for a comprehensive introduction
Try Basic Requests: Use the examples in API-QUICK-REFERENCE.md to test basic functionality
Import to Postman: Load MTS-Device-API.postman_collection.json for easy testing
Generate Client: Use api-documentation.yaml with OpenAPI Generator for your language
http://192.168.2.1 (default device IP)
Session-based authentication with cookies. Login required before accessing most endpoints.
| Pattern | Description |
|---|---|
GET /api?fields=<resource> |
Query resource data |
PUT /api/<resource> |
Update resource configuration |
POST /api/command/<action> |
Execute commands |
DELETE /api/<resource>/<id> |
Delete resource items |
System & Configuration:
system - Device information and capabilitiesusers - User managementstatus - System notificationsNetwork:
cellular - Cellular connectivitywifi - WiFi configurationdns, dhcp, routes - Network servicesfirewall, nat - SecurityIoT Protocols:
loraNetwork - LoRa network serverscada - SCADA protocolsmqttBroker - MQTT brokerDevice Management:
docker - Container managementgps - Location servicesserial - Serial portssms - SMS messaging# Login
POST /api/login
# Save configuration
POST /api/command/save
# Restart device
POST /api/command/restart
# Logout
POST /api/logout
mtsDeviceAPI/
βββ controllers/ # API endpoint controllers (C++)
β βββ manifest.json # List of all controllers
β βββ permissions-*.json # Role-based permissions
β βββ description.txt # Permission format description
βββ json/ # JSON Schema definitions
β βββ permissive/ # Permissive validation schemas
β βββ strict/ # Strict validation schemas
βββ src/ # Controller implementations
βββ include/ # Header files
mtsDeviceUI/
βββ src/
β βββ plugins/http.ts # HTTP client implementation
β βββ pages/ # UI pages (API usage examples)
β βββ types/ # TypeScript type definitions
Generated Documentation/
βββ api-documentation.yaml # OpenAPI spec (YAML)
βββ api-documentation.json # OpenAPI spec (JSON)
βββ API-README.md # Complete guide
βββ API-QUICK-REFERENCE.md # Quick reference
βββ MTS-Device-API.postman_collection.json # Postman collection
βββ API-DOCUMENTATION-INDEX.md # This file
| Role | Description | Access Level |
|---|---|---|
| Admin | Full system access | Read/Write/Execute all |
| User (Engineer) | Configuration access | Read/Write most, limited security |
| Guest (Monitor) | Read-only access | Read status/monitoring only |
# Login
curl -X POST http://192.168.2.1/api/login \
-d '{"username":"admin","password":"admin"}' -c cookies.txt
# Update configuration
curl -X PUT http://192.168.2.1/api/cellular \
-d '{"enabled":true}' -b cookies.txt
# Save changes
curl -X POST http://192.168.2.1/api/command/save -b cookies.txt
# Logout
curl -X POST http://192.168.2.1/api/logout -b cookies.txt
# Get system status
curl -X GET "http://192.168.2.1/api?fields=system,status,stats" \
-b cookies.txt
# Monitor without session timeout
curl -X GET "http://192.168.2.1/api?fields=status&inactivity=true" \
-b cookies.txt
# Create user
curl -X POST http://192.168.2.1/api/users \
-d '{"name":"engineer1","password":"pass","permission":"user"}' \
-b cookies.txt
# Save
curl -X POST http://192.168.2.1/api/command/save -b cookies.txt
401 Unauthorized
/api/login409 Conflict
/api/policy endpointChanges not persisting
/api/command/save after changessystem/dbDirty statusDevice unavailable
/api/policy for device stateAll resource schemas are available in:
mtsDeviceAPI/json/permissive/*.schema.jsonmtsDeviceAPI/json/strict/*.schema.jsonRole permissions are defined in:
mtsDeviceAPI/controllers/permissions-admin.jsonmtsDeviceAPI/controllers/permissions-user.jsonmtsDeviceAPI/controllers/permissions-guest.jsonFor technical support:
This documentation is provided for use with Multi-Tech Systems devices. Refer to your device license agreement for terms and conditions.
Quick Links: