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}[¶meters]
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 cameraslat1, lon1, lat2, lon2- Bounding box coordinateselevbottom, elevtop- Elevation rangecamstatic- Get cameras near a point (requireslat1,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 beforecamimages- 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 dataohgotable- Get Ohio traffic table datalsrohgo,ohgohide- Update recordsvtec- Get data for specific VTEC codepreflagreports- Get pre-flagged reportsreports- Get reports within polygonoutages- Get power outages within polygonrtcad- Get real-time CAD reportsverify- Get verification reportsstats- Get statisticsmetars- Get METARsnews- Get news datanews2- Get news data (version 2)news3- Get news data (version 3)wv511,ky511- Get state traffic datagetCombinedTable- Get combined traffic dataupdater- 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 statisticsdatetime- 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 boundariesmax- Get max outages (requiresstartandend)county- Get county power outagescountyarchive- Get archived county outages (requiresstartandend)archivepoint- Get archived point outages (requiresstartandend)svr- Severe weather reportssvrpolys- Get severe weather polygonspowerids- Get specific power outages (requires comma-separated IDs)poweridsgeojson- Get specific power outages as GeoJSONpolygongeojson- 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 datacountyarchive- Get archived county dataarchivepoint- Get archived point datasvr- 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 rangearea_geojson- Area as GeoJSONbuffer- 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 listreset- Reset LSRslsrs- Update LSRsinc- Update incrementhide- 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 IDfield- 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 (requireslat1,lon1,radius)camstatic=bbox- Get cameras within bounding box (requireslat1,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 (requiresstartandend)county- Get county datacountyarchive- Get archived county data (requiresstartandend)archivepoint- Get archived point data (requiresstartandend)svr- Get severe weather reportssvr=current- Get current severe weathersvr=archive- Get archived severe weather (optionalstartandend) 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 pathsimages- Number of imagesdelay- Delay between imageslastdelay- Delay for last imagemaxh,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
- Update all API calls to use the new endpoint format
- Replace direct script calls with
main.php?service={service_name} - Ensure all existing parameters are preserved
- 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