consolidate php
This commit is contained in:
278
API_DOCUMENTATION.md
Normal file
278
API_DOCUMENTATION.md
Normal file
@@ -0,0 +1,278 @@
|
||||
# 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 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. 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
|
||||
```javascript
|
||||
// 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
|
||||
```php
|
||||
// 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
|
||||
Reference in New Issue
Block a user