Plugin API Reference

Complete API documentation for HEMS Command simulator plugins

Telemetry Submission
POST
/api/plugins/telemetry

Request Body:

{
  "session_id": "string",
  "user_callsign": "string",
  "aircraft_type": "string",
  "simulator": "X-Plane | MSFS",
  "latitude": number,
  "longitude": number,
  "altitude_ft": number,
  "heading_degrees": number,
  "ground_speed_kts": number,
  "indicated_airspeed_kts": number,
  "vertical_speed_fpm": number,
  "on_ground": boolean,
  "engine_running": boolean,
  "fuel_quantity_gal": number,
  "timestamp": "ISO-8601"
}

Response:

{
  "status": "success",
  "telemetry_id": "uuid"
}

Rate Limit: 1 request per 2 seconds recommended

Authentication: Include user email in X-User-Email header

Quick Implementation Examples

JavaScript/Web Panel

// Fetch mission data
async function loadMission() {
  const response = await fetch(
    `${API_BASE}/api/plugins/mission?user_email=${USER_EMAIL}`
  );
  const mission = await response.json();
  
  // Update UI
  document.getElementById('missionNumber').textContent = mission.mission_number;
  document.getElementById('destination').textContent = mission.destination.name;
}

// Voice-enabled dispatcher
let recognition = new webkitSpeechRecognition();
recognition.onresult = async (event) => {
  const text = event.results[0][0].transcript;
  
  const response = await fetch(`${API_BASE}/api/agents/hems_dispatcher/conversations/${conversationId}/messages`, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ role: 'user', content: text })
  });
  
  const aiResponse = await response.json();
  
  // Speak response
  const utterance = new SpeechSynthesisUtterance(aiResponse.content);
  speechSynthesis.speak(utterance);
};

Lua (X-Plane)

-- Send telemetry
function send_telemetry()
  local json = string.format([[{
    "session_id": "%s",
    "user_callsign": "%s",
    "latitude": %.6f,
    "longitude": %.6f,
    "altitude_ft": %.0f,
    "heading_degrees": %.1f,
    "ground_speed_kts": %.1f
  }]], SESSION_ID, USER_CALLSIGN, lat, lon, alt, hdg, gs)
  
  -- HTTP POST to API_ENDPOINT/api/plugins/telemetry
end

-- Fetch nearby traffic
function get_nearby_traffic()
  local url = string.format("%s/api/plugins/nearby?lat=%.6f&lon=%.6f&radius=50",
                            API_ENDPOINT, lat, lon)
  -- HTTP GET and parse JSON
end
base44
Edit with Base44