EPCOR Infrastructure API

Water infrastructure construction projects.

Operations 5

GET /Water_InfrastructureProjects_Prod/FeatureServer Get Water_InfrastructureProjects_Prod service metadata #
GET /Water_InfrastructureProjects_Prod/FeatureServer/0 Get Water_InfrastructureProjects_Prod layer 0 metadata #
GET /Water_InfrastructureProjects_Prod/FeatureServer/0/query Query WaterInfrastructureProjects_pt #
GET /Water_InfrastructureProjects_Prod/FeatureServer/1 Get Water_InfrastructureProjects_Prod layer 1 metadata #
GET /Water_InfrastructureProjects_Prod/FeatureServer/1/query Query WaterInfrastructureProjects_area #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/epcor-infrastructure-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

epcor-infrastructure-api-openapi.yml Raw ↑
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