Files
test/API_DOCUMENTATION.md

10 KiB

Unified API Gateway Documentation

Overview

This API gateway serves as a single entry point for all API services that were previously separate PHP scripts. Each service is accessed via a service parameter that routes the request to the appropriate functionality.

Base URL

main.php?service={service_name}[&parameters]

Available Services

1. cams

Description: Returns active camera information Usage: main.php?service=cams Parameters: None required Migration:

  • Old: cam.php
  • New: main.php?service=cams

2. camapi

Description: Returns camera API endpoints with filtering Usage: main.php?service=camapi[&cams&lat1={lat}&lon1={lon}&lat2={lat}&lon2={lon}&elevbottom={elev}&elevtop={elev}] Parameters:

  • cams - Get RTSP cameras
  • lat1, lon1, lat2, lon2 - Bounding box coordinates
  • elevbottom, elevtop - Elevation range
  • camstatic - Get cameras near a point (requires lat1, lon1, radius)
  • camdb - Get camera count Migration:
  • Old: camapi.php?cams&lat1=...&lon1=...&lat2=...&lon2=...
  • New: main.php?service=camapi&cams&lat1=...&lon1=...&lat2=...&lon2=...

3. camlist

Description: Returns camera list with active status Usage: main.php?service=camlist Parameters: None required Migration:

  • Old: camlist.php
  • New: main.php?service=camlist

4. admin

Description: Admin operations for cameras Usage: main.php?service=admin&action={action} Parameters:

  • action='checkurl' - Check if URL exists (POST required)
  • action='newcam' - Add new camera (POST required) Migration:
  • Old: admin.php?action=checkurl
  • New: main.php?service=admin&action=checkurl

5. camcircle

Description: Returns camera coverage circles Usage: main.php?service=camcircle Parameters: None required Migration:

  • Old: camcircle.php
  • New: main.php?service=camcircle

6. db

Description: Returns weather station data Usage: main.php?service=db[&outside] Parameters:

  • outside - Get outside weather data Migration:
  • Old: db.php
  • New: main.php?service=db
  • Old: db.php?outside
  • New: main.php?service=db&outside

7. fire

Description: Returns fire information Usage: main.php?service=fire Parameters: None required Migration:

  • Old: fire.php
  • New: main.php?service=fire

8. individualcam

Description: Returns individual camera images Usage: main.php?service=individualcam&camid={camid}[&dtg={datetime}&camimages={count}] Parameters:

  • camid - Camera ID (required)
  • dtg - Date/time to get images before
  • camimages - Number of images to return (default: 20) Migration:
  • Old: individualcam.php?camid=...
  • New: main.php?service=individualcam&camid=...

9. lsr

Description: Returns local storm reports and related data Usage: main.php?service=lsr[&{various parameters}] Parameters:

  • No parameters - Get all reports
  • ohgo - Get Ohio traffic data
  • ohgotable - Get Ohio traffic table data
  • lsrohgo, ohgohide - Update records
  • vtec - Get data for specific VTEC code
  • preflagreports - Get pre-flagged reports
  • reports - Get reports within polygon
  • outages - Get power outages within polygon
  • rtcad - Get real-time CAD reports
  • verify - Get verification reports
  • stats - Get statistics
  • metars - Get METARs
  • news - Get news data
  • news2 - Get news data (version 2)
  • news3 - Get news data (version 3)
  • wv511, ky511 - Get state traffic data
  • getCombinedTable - Get combined traffic data
  • updater - Update records Migration:
  • Old: lsr.php
  • New: main.php?service=lsr
  • Old: lsr.php?ohgo
  • New: main.php?service=lsr&ohgo

10. nws

Description: Returns NWS personnel stats Usage: main.php?service=nws[&{various parameters}] Parameters:

  • No parameters - Get all NWS data
  • officestats, officestats11, regionstats, drilldown - Various statistics
  • datetime - Date for statistics Migration:
  • Old: nws.php
  • New: main.php?service=nws

11. powerapi

Description: Returns power outage information Usage: main.php?service=powerapi[&{various parameters}] Parameters:

  • No parameters - Get current power outages
  • states - Get state boundaries
  • max - Get max outages (requires start and end)
  • county - Get county power outages
  • countyarchive - Get archived county outages (requires start and end)
  • archivepoint - Get archived point outages (requires start and end)
  • svr - Severe weather reports
  • svrpolys - Get severe weather polygons
  • powerids - Get specific power outages (requires comma-separated IDs)
  • poweridsgeojson - Get specific power outages as GeoJSON
  • polygongeojson - Get power outages in polygon (requires GeoJSON string) Migration:
  • Old: powerapi.php
  • New: main.php?service=powerapi
  • Old: powerapi.php?states
  • New: main.php?service=powerapi&states

12. searchapi

Description: Returns search results for power outages Usage: main.php?service=searchapi[&{various parameters}] Parameters:

  • No parameters - Get current power outages
  • county - Get county data
  • countyarchive - Get archived county data
  • archivepoint - Get archived point data
  • svr - Get severe weather data Migration:
  • Old: searchapi.php
  • New: main.php?service=searchapi

13. ohgo

Description: Returns Ohio traffic information Usage: main.php?service=ohgo Parameters: None required Migration:

  • Old: ohgo.php
  • New: main.php?service=ohgo

14. power

Description: Returns power outage information (simplified) Usage: main.php?service=power Parameters: None required Migration:

  • Old: power.php
  • New: main.php?service=power

15. stormdata

Description: Returns storm data (POST only) Usage: POST to main.php?service=stormdata Parameters (in POST body as JSON):

  • request_type - Type of request (ohgo, ohgonopoly, power, powernopoly, wupoly, campoly)
  • start_time, end_time - Time range
  • area_geojson - Area as GeoJSON
  • buffer - Buffer time in hours Migration:
  • Old: stormdata.php
  • New: main.php?service=stormdata (POST request)

16. warntrack

Description: Returns warning tracking data Usage: main.php?service=warntrack Parameters: None required Migration:

  • Old: warntrack.php
  • New: main.php?service=warntrack

17. ver

Description: Returns version information Usage: main.php?service=ver[&{various parameters}] Parameters:

  • No parameters - Get version polygons
  • lsrslist - Get LSRs list
  • reset - Reset LSRs
  • lsrs - Update LSRs
  • inc - Update increment
  • hide - Update hide status Migration:
  • Old: ver.php
  • New: main.php?service=ver

18. update_field

Description: Updates table fields (POST only) Usage: POST to main.php?service=update_field Parameters (in POST body):

  • camid - Camera ID
  • field - Field to update (hydro, airport)
  • value - Value to set Migration:
  • Old: update_field.php
  • New: main.php?service=update_field (POST request)

19. camobs

Description: Returns camera observations with radius and bbox filtering Usage: main.php?service=camobs[&camstatic={radius|bbox}&lat1={lat}&lon1={lon}&radius={radius}&lat2={lat}&lon2={lon}&elevbottom={elev}&elevtop={elev}] Parameters:

  • camstatic=radius - Get cameras within radius (requires lat1, lon1, radius)
  • camstatic=bbox - Get cameras within bounding box (requires lat1, lon1, lat2, lon2, elevbottom, elevtop) Migration:
  • Old: camobs.php?camstatic=radius&lat1=...&lon1=...&radius=...
  • New: main.php?service=camobs&camstatic=radius&lat1=...&lon1=...&radius=...

20. single

Description: Returns single camera information by camid Usage: main.php?service=single&camid={camid} Parameters:

  • camid - Camera ID (required) Migration:
  • Old: single.php?camid=...
  • New: main.php?service=single&camid=...

21. powerapitest

Description: Returns extended power outage testing data Usage: main.php?service=powerapitest[&{various parameters}] Parameters:

  • No parameters - Get current power outages
  • max - Get max outages (requires start and end)
  • county - Get county data
  • countyarchive - Get archived county data (requires start and end)
  • archivepoint - Get archived point data (requires start and end)
  • svr - Get severe weather reports
  • svr=current - Get current severe weather
  • svr=archive - Get archived severe weather (optional start and end) Migration:
  • Old: powerapitest.php
  • New: main.php?service=powerapitest
  • Old: powerapitest.php?max&start=...&end=...
  • New: main.php?service=powerapitest&max&start=...&end=...

22. mp4

Description: Generates MP4/gif from images (POST only) Usage: POST to main.php?service=mp4 Parameters (in POST body):

  • data - Array of image paths
  • images - Number of images
  • delay - Delay between images
  • lastdelay - Delay for last image
  • maxh, maxv - Max dimensions Migration:
  • Old: mp4.php
  • New: main.php?service=mp4 (POST request)

Error Handling

  • Invalid service parameters return HTTP 400 with available services
  • Database errors return appropriate error messages
  • Missing required parameters return HTTP 400 with descriptive error messages

Security Considerations

  • All user-provided input is properly escaped using pg_escape_string()
  • SQL injection prevention through parameterized queries
  • Input validation for numeric and boolean values

Migration Guide

For Web Applications

  1. Update all API calls to use the new endpoint format
  2. Replace direct script calls with main.php?service={service_name}
  3. Ensure all existing parameters are preserved
  4. Test all functionality to verify compatibility

For JavaScript Applications

// Old approach
fetch('cam.php')
  .then(response => response.json())

// New approach
fetch('main.php?service=cams')
  .then(response => response.json())

For Server-to-Server Communication

// Old approach
$result = file_get_contents('http://yourserver/camapi.php?cams&lat1=...&lon1=...');

// New approach
$result = file_get_contents('http://yourserver/main.php?service=camapi&cams&lat1=...&lon1=...');

Testing

  • All services maintain the same output format as the original scripts
  • Backwards compatibility is preserved for parameter usage
  • JSON output remains consistent with previous implementations