# WAPA outage-map record, U.S. Virgin Islands: the raw map responses

Released 9 November 2026. Raw-response release v1.0, with the data package (wapa-outage-record v1.0) and the
report *What WAPA's outage map recorded, 23 March to 7 November 2026* (VI Update).

**What this is.** Every response from the Virgin Islands Water and Power Authority's public outage map
(`http://outageviewer.viwapa.vi:7575/data/`), captured by VI Update every five minutes from 2026-03-23 13:49:03 UTC to 2026-11-07 14:54:03 UTC:
65,446 polls, 196,339 files. WAPA publishes the map. The data package's tables are built from these files.

## Files

One zip per month. Inside, one folder per endpoint, one JSON file per endpoint per poll. A file's name is the poll's
capture time in UTC, with `:` and `.` written as `-` (`2026-06-01T00-02-16-019Z.json`). For a poll with a summary it is
`poll_utc` in the data package's `as-filed/polls.csv`, written the same way; for the 6 polls with outage records and
no summary it is `poll_utc` in `as-filed/sightings.csv`.

| Zip | `outages` | `outageSummary` | `outagePolygons` |
|---|---|---|---|
| `wapa-outage-record-v1-raw-2026-03.zip` | 2,011 | 2,011 | 2,011 |
| `wapa-outage-record-v1-raw-2026-04.zip` | 8,673 | 8,673 | 8,673 |
| `wapa-outage-record-v1-raw-2026-05.zip` | 8,925 | 8,925 | 8,925 |
| `wapa-outage-record-v1-raw-2026-06.zip` | 8,639 | 8,639 | 8,639 |
| `wapa-outage-record-v1-raw-2026-07.zip` | 8,898 | 8,898 | 8,897 |
| `wapa-outage-record-v1-raw-2026-08.zip` | 8,913 | 8,914 | 8,915 |
| `wapa-outage-record-v1-raw-2026-09.zip` | 8,640 | 8,638 | 8,638 |
| `wapa-outage-record-v1-raw-2026-10.zip` | 8,840 | 8,841 | 8,842 |
| `wapa-outage-record-v1-raw-2026-11.zip` | 1,907 | 1,907 | 1,907 |

In all: 65,446 `outages` files, 65,446 `outageSummary` files, 65,447 `outagePolygons` files. A poll can have one
endpoint's file and not another's. 6 polls have a summary and no `outages` file, and 6 the reverse; the data
package's `labeled/holes.csv` lists these 12 as PARTIAL. Polygon files are counted against the `outages` files: 5 polls have an `outagePolygons` file and no `outages` file (2026-04-28 13:01:03 UTC, 2026-08-07 09:17:04 UTC, 2026-08-29 03:58:04 UTC, 2026-10-04 09:05:06 UTC, 2026-10-30 11:07:10 UTC), and 4 have an `outages` file and no `outagePolygons` file (2026-04-19 21:58:03 UTC, 2026-07-04 10:53:04 UTC, 2026-09-02 07:28:13 UTC, 2026-09-08 09:18:19 UTC).

`MANIFEST.sha256` holds the SHA-256 of every file here. Check with `sha256sum -c MANIFEST.sha256` (Linux) or
`shasum -a 256 -c MANIFEST.sha256` (macOS).

## Fields

Every file is `{"data": <WAPA's response>, "fetchedAt": <time>}`.

| Field | Tag | Meaning |
|---|---|---|
| `fetchedAt` | capture | when our poller fetched the response, UTC |
| `data` | as filed | WAPA's response, as WAPA sent it (masks below) |

**`outages`**: `data` is a list, one entry per outage record on the map at that poll. Fields, all as filed:
`outageRecID`, `outageName`, `outagePoint` (`lat`, `lng`), `outageStartTime`, `estimatedTimeOfRestoral`,
`outageEndTime`, `verified`, `cause`, `crewAssigned`, `customersOutInitially`, `customersOutNow`, `customersRestored`,
`streetsAffected` (a list of WAPA's street labels), `outageModifiedTime`, `outageWorkStatus`.

**`outageSummary`**: `data` is one object. Fields, all as filed: `customersServed`, `customersOutNow`,
`customersAffected`, `customersRestored`, `updateTime`, `hourlyCustomersOut` (a list of `customers`, `eventTime`: WAPA's
territory-wide count for each of the last 48 hours), `streetsAffected`.

**`outagePolygons`**: `data` is a list, one entry per record with a map shape. Fields, all as filed: `outageRecId`,
`outNow`, `points` (a GeoJSON geometry; empty `{}` where WAPA sent none).

WAPA's times keep the offset WAPA gave (`-04:00`, Atlantic Standard Time).

## Masked

- 314 values in `outageSummary` files, `streetsAffected`: initials in a street label (the parcel and unit are kept; the initials read `[initials removed]`)
- 28,696 values in `outageSummary` files, `streetsAffected`: person's name in a street label (the parcel and unit are kept; the name reads `[name removed]`)
- 62,753 values in `outages` files, `outageName`: record name that acts as a customer identifier (`[customer identifier removed]`)
- 312 values in `outages` files, `streetsAffected`: initials in a street label (the parcel and unit are kept; the initials read `[initials removed]`)
- 28,692 values in `outages` files, `streetsAffected`: person's name in a street label (the parcel and unit are kept; the name reads `[name removed]`)
- 120,767 masks in all, in 39,923 files. Every other file is as captured, byte for byte; in a masked file only the masked strings differ.

The same values are masked in the data package. The working data keeps the original values.

## Not included

- Polls that failed saved no file; stale polls saved WAPA's old content, kept here as captured. Both are listed in the
  data package's `labeled/holes.csv`.
- The 27 summaries and 27 records saved before the five-minute capture began: they are in the data package's
  `as-filed/pre_capture_*.csv`.
- Customer names, account numbers and contact details. Where WAPA's map data carried a record name that acts as a
  customer identifier, or a person's name in a street label, it is masked (above).

## License

These files are dedicated to the public domain under CC0 1.0 (https://creativecommons.org/publicdomain/zero/1.0/), with
this limit set by the source: WAPA's records are WAPA's publication, reproduced as published.

## How to cite

Louden, Brian. "What WAPA's outage map recorded, 23 March to 7 November 2026: the raw map responses"
(wapa-outage-record-raw), v1.0, 9 November 2026. https://doi.org/10.5281/zenodo.24094228 (the data record, which
holds these files and the data package). And cite WAPA as
the original source.
