Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.2.0
info:
title: EPCOR Public Outage and Service Area Feature Services (ArcGIS REST) Power Outages API
version: '12'
summary: Anonymous, machine-readable read access to EPCOR's live power outage, water outage, water infrastructure project and service area feature layers.
description: 'EPCOR publishes no OpenAPI, no developer portal and no API documentation. It does, however, operate a public ArcGIS Online organization (`services6.arcgis.com/Ji2rusuWXDFSqNsP`, owner `epcor_outages`) whose production feature services are shared publicly and are readable anonymously over the ArcGIS REST GeoServices interface. Those services back the EPCOR outage map at https://outages.epcor.com/ and cover Edmonton power outages, Canadian water outages and main breaks, water infrastructure projects, and the outage and service area layers for EPCOR Water''s US districts in Arizona and New Mexico.
THIS DOCUMENT IS DERIVED, NOT PUBLISHED BY EPCOR. Every path, layer, field name and field type below was read from the live ArcGIS service and layer metadata documents on 2026-07-27; the query parameter set is the standard Esri ArcGIS REST `query` operation contract. No endpoint, field or value has been invented. Editing capabilities advertised by some services (Create/Update/Delete) are NOT modelled here: only anonymous read was probed, and write access requires an ArcGIS token.
Data is operational, near real time and unversioned. EPCOR publishes no licence, no terms of use for this surface, no rate limit and no support channel for it.'
contact:
name: EPCOR
url: https://www.epcor.com/ca/en/ab/edmonton/contact-edmonton.html
x-apievangelist:
method: derived
generated: '2026-07-27'
derived_from:
- https://services6.arcgis.com/Ji2rusuWXDFSqNsP/ArcGIS/rest/services?f=json
- ArcGIS feature service and layer metadata documents for every *_prod service in the folder
- https://outages.epcor.com/assets/config.json
note: Derived by the API Evangelist enrichment pipeline from live, anonymously readable ArcGIS REST metadata. EPCOR does not publish this specification.
servers:
- url: https://services6.arcgis.com/Ji2rusuWXDFSqNsP/ArcGIS/rest/services
description: EPCOR public ArcGIS Online feature service folder (hosted by Esri ArcGIS Online).
security: []
tags:
- name: power-outages
description: Edmonton electricity distribution outages (active, planned and point features).
paths:
/ocps_prod_av/FeatureServer:
get:
operationId: getOcpsProdAvService
summary: Get ocps_prod_av service metadata
description: 'Edmonton active power outage areas (Outage Coordination and Publishing System). Returns the ArcGIS feature service metadata document: layers, capabilities (Create,Delete,Query,Update,Editing,Extract,ChangeTracking), maxRecordCount (2000) and spatial reference.'
tags:
- power-outages
parameters:
- $ref: '#/components/parameters/f'
responses:
'200':
description: Feature service metadata.
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceMetadata'
/ocps_prod_av/FeatureServer/0:
get:
operationId: getOcpsProdAvLayer
summary: Get ocps_prod_av layer 0 metadata
description: Field definitions, geometry type (esriGeometryPolygon), extent and edit timestamps for the `ocps_prod_av` layer.
tags:
- power-outages
parameters:
- $ref: '#/components/parameters/f'
responses:
'200':
description: Feature layer metadata.
content:
application/json:
schema:
$ref: '#/components/schemas/LayerMetadata'
/ocps_prod_av/FeatureServer/0/query:
get:
operationId: queryOcpsProdAv
summary: Query ocps_prod_av
description: 'Edmonton active power outage areas (Outage Coordination and Publishing System). Query the `ocps_prod_av` layer with a SQL `where` clause and optional spatial filter. Anonymous read, no API key. Observed feature count at harvest time: 5.'
tags:
- power-outages
parameters:
- $ref: '#/components/parameters/f'
- $ref: '#/components/parameters/where'
- $ref: '#/components/parameters/outFields'
- $ref: '#/components/parameters/returnGeometry'
- $ref: '#/components/parameters/returnCountOnly'
- $ref: '#/components/parameters/returnIdsOnly'
- $ref: '#/components/parameters/orderByFields'
- $ref: '#/components/parameters/resultOffset'
- $ref: '#/components/parameters/resultRecordCount'
- $ref: '#/components/parameters/geometry'
- $ref: '#/components/parameters/geometryType'
- $ref: '#/components/parameters/spatialRel'
- $ref: '#/components/parameters/inSR'
- $ref: '#/components/parameters/outSR'
responses:
'200':
description: Esri FeatureSet (`f=json`), GeoJSON FeatureCollection (`f=geojson`), or an ArcGIS error envelope — these services answer invalid requests with HTTP 200 and an `error` body.
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/OcpsProdAvL0FeatureSet'
- $ref: '#/components/schemas/GeoJSONFeatureCollection'
- $ref: '#/components/schemas/EsriError'
/ocps_prod_pl/FeatureServer:
get:
operationId: getOcpsProdPlService
summary: Get ocps_prod_pl service metadata
description: 'Edmonton planned power outage areas (Outage Coordination and Publishing System). Returns the ArcGIS feature service metadata document: layers, capabilities (Create,Delete,Query,Update,Editing,Extract,ChangeTracking), maxRecordCount (2000) and spatial reference.'
tags:
- power-outages
parameters:
- $ref: '#/components/parameters/f'
responses:
'200':
description: Feature service metadata.
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceMetadata'
/ocps_prod_pl/FeatureServer/0:
get:
operationId: getOcpsProdPlLayer
summary: Get ocps_prod_pl layer 0 metadata
description: Field definitions, geometry type (esriGeometryPolygon), extent and edit timestamps for the `ocps_prod_pl` layer.
tags:
- power-outages
parameters:
- $ref: '#/components/parameters/f'
responses:
'200':
description: Feature layer metadata.
content:
application/json:
schema:
$ref: '#/components/schemas/LayerMetadata'
/ocps_prod_pl/FeatureServer/0/query:
get:
operationId: queryOcpsProdPl
summary: Query ocps_prod_pl
description: 'Edmonton planned power outage areas (Outage Coordination and Publishing System). Query the `ocps_prod_pl` layer with a SQL `where` clause and optional spatial filter. Anonymous read, no API key. Observed feature count at harvest time: 0.'
tags:
- power-outages
parameters:
- $ref: '#/components/parameters/f'
- $ref: '#/components/parameters/where'
- $ref: '#/components/parameters/outFields'
- $ref: '#/components/parameters/returnGeometry'
- $ref: '#/components/parameters/returnCountOnly'
- $ref: '#/components/parameters/returnIdsOnly'
- $ref: '#/components/parameters/orderByFields'
- $ref: '#/components/parameters/resultOffset'
- $ref: '#/components/parameters/resultRecordCount'
- $ref: '#/components/parameters/geometry'
- $ref: '#/components/parameters/geometryType'
- $ref: '#/components/parameters/spatialRel'
- $ref: '#/components/parameters/inSR'
- $ref: '#/components/parameters/outSR'
responses:
'200':
description: Esri FeatureSet (`f=json`), GeoJSON FeatureCollection (`f=geojson`), or an ArcGIS error envelope — these services answer invalid requests with HTTP 200 and an `error` body.
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/OcpsProdPlL0FeatureSet'
- $ref: '#/components/schemas/GeoJSONFeatureCollection'
- $ref: '#/components/schemas/EsriError'
/power_outage_prod/FeatureServer:
get:
operationId: getPowerOutageProdService
summary: Get power_outage_prod service metadata
description: 'Edmonton power outage points. Returns the ArcGIS feature service metadata document: layers, capabilities (Create,Delete,Query,Update,Editing), maxRecordCount (2000) and spatial reference.'
tags:
- power-outages
parameters:
- $ref: '#/components/parameters/f'
responses:
'200':
description: Feature service metadata.
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceMetadata'
/power_outage_prod/FeatureServer/0:
get:
operationId: getPowerOutageProdLayer
summary: Get power_outage_prod layer 0 metadata
description: Field definitions, geometry type (esriGeometryPoint), extent and edit timestamps for the `power_outage-prod` layer.
tags:
- power-outages
parameters:
- $ref: '#/components/parameters/f'
responses:
'200':
description: Feature layer metadata.
content:
application/json:
schema:
$ref: '#/components/schemas/LayerMetadata'
/power_outage_prod/FeatureServer/0/query:
get:
operationId: queryPowerOutageProd
summary: Query power_outage-prod
description: 'Edmonton power outage points. Query the `power_outage-prod` layer with a SQL `where` clause and optional spatial filter. Anonymous read, no API key. Observed feature count at harvest time: 0.'
tags:
- power-outages
parameters:
- $ref: '#/components/parameters/f'
- $ref: '#/components/parameters/where'
- $ref: '#/components/parameters/outFields'
- $ref: '#/components/parameters/returnGeometry'
- $ref: '#/components/parameters/returnCountOnly'
- $ref: '#/components/parameters/returnIdsOnly'
- $ref: '#/components/parameters/orderByFields'
- $ref: '#/components/parameters/resultOffset'
- $ref: '#/components/parameters/resultRecordCount'
- $ref: '#/components/parameters/geometry'
- $ref: '#/components/parameters/geometryType'
- $ref: '#/components/parameters/spatialRel'
- $ref: '#/components/parameters/inSR'
- $ref: '#/components/parameters/outSR'
responses:
'200':
description: Esri FeatureSet (`f=json`), GeoJSON FeatureCollection (`f=geojson`), or an ArcGIS error envelope — these services answer invalid requests with HTTP 200 and an `error` body.
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/PowerOutageProdL0FeatureSet'
- $ref: '#/components/schemas/GeoJSONFeatureCollection'
- $ref: '#/components/schemas/EsriError'
components:
schemas:
PowerOutageProdL0Attributes:
type: object
description: Attributes of a feature in the `power_outage-prod` layer (power_outage_prod, layer 0). Geometry type esriGeometryPoint.
properties:
FID:
type: integer
description: Object ID; the unique, service maintained identifier.
x-esri-field-type: esriFieldTypeOID
ID:
type: number
x-esri-field-type: esriFieldTypeDouble
AvenueFrom:
type: string
maxLength: 200
x-esri-field-type: esriFieldTypeString
AvenueTo:
type: string
maxLength: 200
x-esri-field-type: esriFieldTypeString
CauseTitle:
type: string
maxLength: 200
x-esri-field-type: esriFieldTypeString
Details:
type: string
maxLength: 200
x-esri-field-type: esriFieldTypeString
FaultResto:
type: string
maxLength: 200
x-esri-field-type: esriFieldTypeString
FaultStart:
type: string
maxLength: 200
x-esri-field-type: esriFieldTypeString
NodeTitle:
type: string
maxLength: 200
x-esri-field-type: esriFieldTypeString
StreetFrom:
type: string
maxLength: 200
x-esri-field-type: esriFieldTypeString
StreetTo:
type: string
maxLength: 200
x-esri-field-type: esriFieldTypeString
SpatialReference:
type: object
properties:
wkid:
type: integer
latestWkid:
type: integer
LayerMetadata:
type: object
description: 'ArcGIS feature layer metadata document: field definitions, geometry type, extent, capabilities and edit timestamps.'
properties:
currentVersion:
type: number
id:
type: integer
name:
type: string
type:
type: string
geometryType:
type: string
fields:
type: array
items:
$ref: '#/components/schemas/FieldDefinition'
extent:
type: object
editingInfo:
type: object
maxRecordCount:
type: integer
OcpsProdAvL0FeatureSet:
type: object
description: Esri FeatureSet returned by a query against the `ocps_prod_av` layer.
properties:
objectIdFieldName:
type: string
globalIdFieldName:
type: string
geometryType:
type: string
spatialReference:
$ref: '#/components/schemas/SpatialReference'
fields:
type: array
items:
$ref: '#/components/schemas/FieldDefinition'
exceededTransferLimit:
type: boolean
description: True when more features match than were returned; page with `resultOffset`.
features:
type: array
items:
type: object
properties:
attributes:
$ref: '#/components/schemas/OcpsProdAvL0Attributes'
geometry:
type: object
description: Feature geometry, omitted when `returnGeometry=false`.
PowerOutageProdL0FeatureSet:
type: object
description: Esri FeatureSet returned by a query against the `power_outage-prod` layer.
properties:
objectIdFieldName:
type: string
globalIdFieldName:
type: string
geometryType:
type: string
spatialReference:
$ref: '#/components/schemas/SpatialReference'
fields:
type: array
items:
$ref: '#/components/schemas/FieldDefinition'
exceededTransferLimit:
type: boolean
description: True when more features match than were returned; page with `resultOffset`.
features:
type: array
items:
type: object
properties:
attributes:
$ref: '#/components/schemas/PowerOutageProdL0Attributes'
geometry:
type: object
description: Feature geometry, omitted when `returnGeometry=false`.
GeoJSONFeatureCollection:
type: object
description: RFC 7946 FeatureCollection returned when `f=geojson`.
properties:
type:
type: string
const: FeatureCollection
properties:
type: object
properties:
exceededTransferLimit:
type: boolean
features:
type: array
items:
type: object
FieldDefinition:
type: object
properties:
name:
type: string
type:
type: string
description: Esri field type, for example `esriFieldTypeString`.
alias:
type: string
sqlType:
type: string
length:
type: integer
OcpsProdAvL0Attributes:
type: object
description: Attributes of a feature in the `ocps_prod_av` layer (ocps_prod_av, layer 0). Geometry type esriGeometryPolygon.
properties:
OBJECTID:
type: integer
description: Object ID; the unique, service maintained identifier.
x-esri-field-type: esriFieldTypeOID
id:
type: string
maxLength: 256
description: ID
x-esri-field-type: esriFieldTypeString
Shape__Area:
type: number
x-esri-field-type: esriFieldTypeDouble
Shape__Length:
type: number
x-esri-field-type: esriFieldTypeDouble
GlobalID:
type: string
maxLength: 38
description: GUID.
x-esri-field-type: esriFieldTypeGlobalID
estresto:
type: string
maxLength: 50
description: Est. Restoration Time
x-esri-field-type: esriFieldTypeString
faulted:
type: string
maxLength: 50
description: Faulted At
x-esri-field-type: esriFieldTypeString
affcusts:
type: string
maxLength: 15
description: Affected Customers
x-esri-field-type: esriFieldTypeString
cause:
type: string
maxLength: 200
description: Cause
x-esri-field-type: esriFieldTypeString
nbhoods:
type: string
maxLength: 1000
description: Affected Neighborhoods
x-esri-field-type: esriFieldTypeString
affstree:
type: string
maxLength: 2147483647
description: Affected Streets
x-esri-field-type: esriFieldTypeString
examples:
- OBJECTID: 12883
id: INC 218006057
Shape__Area: null
Shape__Length: null
GlobalID: 86f1e356-7e39-4ab8-9fac-fbd22371f2be
estresto: Jul-27 5:30 PM
faulted: Jul-25 9:39 PM
affcusts: '1'
cause: Under review
nbhoods: Parkview
affstree: VALLEYVIEW CRESCENT NW, VALLEYVIEW DRIVE NW, VALLEYVIEW POINT NW, 88 AVENUE NW - 92A AVENUE NW, 137 STREET NW - 143 STREET NW
EsriError:
type: object
description: ArcGIS REST error envelope. Note that these services return HTTP 200 with this body rather than a 4xx status code.
properties:
error:
type: object
properties:
code:
type: integer
description: Esri error code.
message:
type: string
description: Short error message; may be an empty string.
details:
type: array
items:
type: string
description: Human readable detail strings.
required:
- code
required:
- error
examples:
- error:
code: 400
message: Cannot perform query. Invalid query parameters.
details:
- '''where'' parameter is invalid'
OcpsProdPlL0FeatureSet:
type: object
description: Esri FeatureSet returned by a query against the `ocps_prod_pl` layer.
properties:
objectIdFieldName:
type: string
globalIdFieldName:
type: string
geometryType:
type: string
spatialReference:
$ref: '#/components/schemas/SpatialReference'
fields:
type: array
items:
$ref: '#/components/schemas/FieldDefinition'
exceededTransferLimit:
type: boolean
description: True when more features match than were returned; page with `resultOffset`.
features:
type: array
items:
type: object
properties:
attributes:
$ref: '#/components/schemas/OcpsProdPlL0Attributes'
geometry:
type: object
description: Feature geometry, omitted when `returnGeometry=false`.
ServiceMetadata:
type: object
description: ArcGIS feature service metadata document.
properties:
currentVersion:
type: number
serviceItemId:
type: string
capabilities:
type: string
description: Comma separated capability list advertised by the service. Only `Query` is exercisable anonymously; editing capabilities require an ArcGIS token.
maxRecordCount:
type: integer
spatialReference:
$ref: '#/components/schemas/SpatialReference'
layers:
type: array
items:
type: object
OcpsProdPlL0Attributes:
type: object
description: Attributes of a feature in the `ocps_prod_pl` layer (ocps_prod_pl, layer 0). Geometry type esriGeometryPolygon.
properties:
OBJECTID:
type: integer
description: Object ID; the unique, service maintained identifier.
x-esri-field-type: esriFieldTypeOID
id:
type: string
maxLength: 256
description: ID
x-esri-field-type: esriFieldTypeString
Shape__Area:
type: number
x-esri-field-type: esriFieldTypeDouble
Shape__Length:
type: number
x-esri-field-type: esriFieldTypeDouble
GlobalID:
type: string
maxLength: 38
description: GUID.
x-esri-field-type: esriFieldTypeGlobalID
startat:
type: string
maxLength: 50
description: Start Time
x-esri-field-type: esriFieldTypeString
endat:
type: string
maxLength: 50
description: End Time
x-esri-field-type: esriFieldTypeString
affcusts:
type: string
maxLength: 15
description: Affected Customers
x-esri-field-type: esriFieldTypeString
cause:
type: string
maxLength: 200
description: Cause
x-esri-field-type: esriFieldTypeString
details:
type: string
maxLength: 300
description: Details
x-esri-field-type: esriFieldTypeString
nbhoods:
type: string
maxLength: 1000
description: Affected Neighborhoods
x-esri-field-type: esriFieldTypeString
lastupd:
type: string
maxLength: 25
description: Lasted Updated Time
x-esri-field-type: esriFieldTypeString
affstree:
type: string
maxLength: 8000
description: Affected Streets
x-esri-field-type: esriFieldTypeString
parameters:
outFields:
name: outFields
in: query
required: false
description: Comma separated list of attribute fields to return, or `*` for all fields.
schema:
type: string
example: '*'
returnCountOnly:
name: returnCountOnly
in: query
required: false
description: Return only the count of matching features instead of the features themselves.
schema:
type: boolean
default: false
orderByFields:
name: orderByFields
in: query
required: false
description: Comma separated `field ASC|DESC` list used to order the result set.
schema:
type: string
resultOffset:
name: resultOffset
in: query
required: false
description: Zero based offset into the ordered result set; the cursor half of ArcGIS paging.
schema:
type: integer
minimum: 0
inSR:
name: inSR
in: query
required: false
description: Spatial reference (WKID) of the input `geometry`.
schema:
type: string
returnGeometry:
name: returnGeometry
in: query
required: false
description: Whether the feature geometry is included in the response.
schema:
type: boolean
default: true
spatialRel:
name: spatialRel
in: query
required: false
description: Spatial relationship applied between the `geometry` filter and the layer features.
schema:
type: string
default: esriSpatialRelIntersects
where:
name: where
in: query
required: false
description: SQL-92 WHERE clause applied to the layer attributes. Use `1=1` to select all features.
schema:
type: string
example: 1=1
returnIdsOnly:
name: returnIdsOnly
in: query
required: false
description: Return only the object IDs of matching features.
schema:
type: boolean
default: false
geometryType:
name: geometryType
in: query
required: false
description: Type of the `geometry` filter.
schema:
type: string
enum:
- esriGeometryPoint
- esriGeometryMultipoint
- esriGeometryPolyline
- esriGeometryPolygon
- esriGeometryEnvelope
f:
name: f
in: query
required: false
description: Response format. `json` returns the Esri FeatureSet envelope, `geojson` returns RFC 7946 GeoJSON, `pbf` returns protocol buffers, `html` returns the human service directory.
schema:
type: string
enum:
- json
- geojson
- pbf
- html
default: html
geometry:
name: geometry
in: query
required: false
description: Geometry used to spatially filter the query, in the format implied by `geometryType`.
schema:
type: string
outSR:
name: outSR
in: query
required: false
description: Spatial reference (WKID) requested for the returned geometry, for example `4326`.
schema:
type: string
resultRecordCount:
name: resultRecordCount
in: query
required: false
description: Maximum number of features to return in this page, capped by the service `maxRecordCount` (2000 on these services).
schema:
type: integer
minimum: 1
maximum: 2000