4.0 KiB
Raleigh Fire Reports and Inspections
Source Contract Review
Reviewed 2026-07-26:
| Source | Contract | Role |
|---|---|---|
| Raleigh referral | https://raleighnc.gov/fire/services/update-your-fire-contact-information |
Official public referral to the RFD Report System |
| ArcGIS item | c983765e304a41d19087c8d95aa46d54 |
Authoritative rolling fire-incident summaries |
| ArcGIS layer | https://services.arcgis.com/v400IkDOw1ad7Yad/arcgis/rest/services/Fire_Incidents_Past_Month/FeatureServer/0 |
Query-capable JSON/GeoJSON/PBF layer |
| RFD root | http://rfdreports.net/ |
Server-rendered report and inspection forms |
The ArcGIS layer advertises Query capability, UTC date fields, and the required report fields. Exact-date queries use a half-open UTC interval; exact incident-number queries use escaped equality. The command requests only incident_number, dispatch/arrival/clear timestamps, address, station, platoon, and current classification fields, without geometry. Results are capped at 200 and fail rather than paginate or silently truncate.
The RFD site exposed no client-visible JSON or API description during review. Content negotiation and common API paths returned HTML or 404 responses. Its root forms submit directly to these fixed contracts:
| Method | Path | Exact parameters |
|---|---|---|
| POST | /fd_date.php |
date |
| GET | /fd_incidentreport.php |
incidentnumber, incidentdate |
| POST | /fd_inspection_business_name.php |
fd_business |
| POST | /fd_inspection_business_address.php |
fd_address |
The RFD root displays a City disclaimer covering completeness, accuracy, timeliness, and warranties; no separate site-specific terms link was exposed by the reviewed page. robots.txt disallows /inspection. This adapter does not crawl, enumerate, paginate, or discover URLs. It performs one explicit user lookup at a time. Inspection result pages contain report and invoice links; report identifiers and validated source links are preserved, while invoice links are discarded and never followed or emitted.
Transport Gate
RFD did not provide a usable TLS endpoint during review. The general Raleigh HTTP client remains HTTPS-only. A separate RFD client permits only http://rfdreports.net on the default port and only the four contracts above. It rejects redirects, extra parameters, alternate hosts, arbitrary paths, oversized responses, and unrecognized HTML.
Every RFD operation requires --acknowledge-insecure-rfd. This acknowledgement is invocation-local and is never inferred from configuration. Date fallback additionally requires --allow-rfd-fallback and runs only after an exact ArcGIS date query returns no records. Inspection business names and addresses cross the network unencrypted.
Commands
# Structured ArcGIS only
scripts/raleigh fire reports --date 2026-07-24
scripts/raleigh fire reports --incident-number 26-032170
# One exact narrative after the ArcGIS incident resolves its date
scripts/raleigh fire reports --incident-number 26-032170 \
--include-narrative --acknowledge-insecure-rfd
# Date fallback only if ArcGIS returns no records
scripts/raleigh fire reports --date 2026-07-24 \
--allow-rfd-fallback --acknowledge-insecure-rfd
# RFD inspection forms
scripts/raleigh fire inspections --business "Example Market" \
--acknowledge-insecure-rfd
scripts/raleigh fire inspections --address "100 Example St" \
--acknowledge-insecure-rfd
Failure Policy
- Empty or whitespace-only selectors are rejected before network access.
- Missing ArcGIS fields, invalid features, or a result-cap overflow fail visibly.
- Changed RFD headers, malformed rows, invalid links, mismatched narrative identifiers, and error pages fail visibly.
- Empty ArcGIS output is missing evidence, not proof that no report exists; the rolling feed may lag.
- Empty recognized RFD tables are valid no-result responses.
Exclusions
No bulk crawling, report enumeration, authentication, invoice retrieval or payment, private contact access, write operation, arbitrary URL traversal, or inspection-report detail retrieval is implemented.