openapi: 3.2.0 info: title: EPCOR Public Outage and Service Area Feature Services (ArcGIS REST) Infrastructure 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: infrastructure description: Water infrastructure construction projects. paths: /Water_InfrastructureProjects_Prod/FeatureServer: get: operationId: getWaterInfrastructureProjectsProdService summary: Get Water_InfrastructureProjects_Prod service metadata description: 'Water infrastructure construction projects (points and areas). Returns the ArcGIS feature service metadata document: layers, capabilities (Query), maxRecordCount (2000) and spatial reference.' tags: - infrastructure parameters: - $ref: '#/components/parameters/f' responses: '200': description: Feature service metadata. content: application/json: schema: $ref: '#/components/schemas/ServiceMetadata' /Water_InfrastructureProjects_Prod/FeatureServer/0: get: operationId: getWaterInfrastructureProjectsProdL0Layer summary: Get Water_InfrastructureProjects_Prod layer 0 metadata description: Field definitions, geometry type (esriGeometryPoint), extent and edit timestamps for the `WaterInfrastructureProjects_pt` layer. tags: - infrastructure parameters: - $ref: '#/components/parameters/f' responses: '200': description: Feature layer metadata. content: application/json: schema: $ref: '#/components/schemas/LayerMetadata' /Water_InfrastructureProjects_Prod/FeatureServer/0/query: get: operationId: queryWaterInfrastructureProjectsProdL0 summary: Query WaterInfrastructureProjects_pt description: 'Water infrastructure construction projects (points and areas). Query the `WaterInfrastructureProjects_pt` layer with a SQL `where` clause and optional spatial filter. Anonymous read, no API key. Observed feature count at harvest time: 8.' tags: - infrastructure 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/WaterInfrastructureProjectsProdL0FeatureSet' - $ref: '#/components/schemas/GeoJSONFeatureCollection' - $ref: '#/components/schemas/EsriError' /Water_InfrastructureProjects_Prod/FeatureServer/1: get: operationId: getWaterInfrastructureProjectsProdL1Layer summary: Get Water_InfrastructureProjects_Prod layer 1 metadata description: Field definitions, geometry type (esriGeometryPolygon), extent and edit timestamps for the `WaterInfrastructureProjects_area` layer. tags: - infrastructure parameters: - $ref: '#/components/parameters/f' responses: '200': description: Feature layer metadata. content: application/json: schema: $ref: '#/components/schemas/LayerMetadata' /Water_InfrastructureProjects_Prod/FeatureServer/1/query: get: operationId: queryWaterInfrastructureProjectsProdL1 summary: Query WaterInfrastructureProjects_area description: 'Water infrastructure construction projects (points and areas). Query the `WaterInfrastructureProjects_area` layer with a SQL `where` clause and optional spatial filter. Anonymous read, no API key. Observed feature count at harvest time: 8.' tags: - infrastructure 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/WaterInfrastructureProjectsProdL1FeatureSet' - $ref: '#/components/schemas/GeoJSONFeatureCollection' - $ref: '#/components/schemas/EsriError' components: schemas: 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 WaterInfrastructureProjectsProdL0FeatureSet: type: object description: Esri FeatureSet returned by a query against the `WaterInfrastructureProjects_pt` 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/WaterInfrastructureProjectsProdL0Attributes' geometry: type: object description: Feature geometry, omitted when `returnGeometry=false`. WaterInfrastructureProjectsProdL1FeatureSet: type: object description: Esri FeatureSet returned by a query against the `WaterInfrastructureProjects_area` 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/WaterInfrastructureProjectsProdL1Attributes' 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 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' WaterInfrastructureProjectsProdL1Attributes: type: object description: Attributes of a feature in the `WaterInfrastructureProjects_area` layer (Water_InfrastructureProjects_Prod, layer 1). Geometry type esriGeometryPolygon. properties: OBJECTID: type: integer description: Object ID; the unique, service maintained identifier. x-esri-field-type: esriFieldTypeOID PR_NUMBER: type: string maxLength: 20 description: Project Number x-esri-field-type: esriFieldTypeString PR_STATUS: type: string maxLength: 40 description: Project Status x-esri-field-type: esriFieldTypeString PR_TYPE: type: string maxLength: 256 description: Project Type x-esri-field-type: esriFieldTypeString PR_YEAR: type: integer description: Project Year x-esri-field-type: esriFieldTypeInteger LIFE_CYCLE: type: string maxLength: 40 description: Life Cycle x-esri-field-type: esriFieldTypeString PR_NAME: type: string maxLength: 256 description: Project Name x-esri-field-type: esriFieldTypeString START_DATE: type: integer maxLength: 8 description: Start Date Epoch milliseconds (Esri date field). x-esri-field-type: esriFieldTypeDate END_DATE: type: integer maxLength: 8 description: End Date Epoch milliseconds (Esri date field). x-esri-field-type: esriFieldTypeDate OVERVIEW: type: string maxLength: 256 description: Overview x-esri-field-type: esriFieldTypeString REDIRECT: type: string maxLength: 256 description: Redirect URL x-esri-field-type: esriFieldTypeString Shape__Area: type: number x-esri-field-type: esriFieldTypeDouble Shape__Length: type: number x-esri-field-type: esriFieldTypeDouble 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 WaterInfrastructureProjectsProdL0Attributes: type: object description: Attributes of a feature in the `WaterInfrastructureProjects_pt` layer (Water_InfrastructureProjects_Prod, layer 0). Geometry type esriGeometryPoint. properties: OBJECTID: type: integer description: Object ID; the unique, service maintained identifier. x-esri-field-type: esriFieldTypeOID PR_NUMBER: type: string maxLength: 20 description: Project Number x-esri-field-type: esriFieldTypeString PR_STATUS: type: string maxLength: 40 description: Project Status x-esri-field-type: esriFieldTypeString PR_TYPE: type: string maxLength: 256 description: Project Type x-esri-field-type: esriFieldTypeString PR_YEAR: type: integer description: Project Year x-esri-field-type: esriFieldTypeInteger LIFE_CYCLE: type: string maxLength: 40 description: Life Cycle x-esri-field-type: esriFieldTypeString PR_NAME: type: string maxLength: 256 description: Project Name x-esri-field-type: esriFieldTypeString START_DATE: type: integer maxLength: 8 description: Start Date Epoch milliseconds (Esri date field). x-esri-field-type: esriFieldTypeDate END_DATE: type: integer maxLength: 8 description: End Date Epoch milliseconds (Esri date field). x-esri-field-type: esriFieldTypeDate OVERVIEW: type: string maxLength: 256 description: Overview x-esri-field-type: esriFieldTypeString REDIRECT: type: string maxLength: 256 description: Redirect URL 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