ATCO Electric Hosting Capacity Feature Service

ATCO Electric's distributed energy resource (DER) hosting capacity data, published as a public Esri ArcGIS REST feature service and surfaced through the "DER HOSTING CAPACITY MAP" web application that ATCO Electric links from its micro-generation and connect-to-the-grid pages. The service is registered in ATCO's own ArcGIS Online organization (urlKey "ATCO", item id 7b4d2b3dcecb4a509f34cbfc3587ff3e, item title "ATCO Electric Hosting Capacity", description "CYME Hosting Capacity Map", access "public"). A single polyline feature layer, "Hosting Capacity (KW)", exposes FEEDER, PHASE, SUB_NAME, SUB_NUM, DATELOADED, DER_CAP_KW, DER_CAP_KW1 and PROJECT_AREA fields. An anonymous, unauthenticated query against layer 0 returned a feature count of 880,623 on 2026-07-27. Service capabilities are "Query" only, maxRecordCount 1000. There is no ATCO documentation page, no OpenAPI definition, and no published usage terms — the contract is the self-describing ArcGIS REST service descriptor itself, harvested verbatim into openapi/.

Documentation

Specifications

Other Resources

OpenAPI Specification

atco-electric-hosting-capacity-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: ATCO Electric Hosting Capacity Feature Service
  version: '12'
  summary: >-
    DER hosting capacity for ATCO Electric's Alberta distribution system,
    published as a public, anonymously queryable Esri ArcGIS REST feature service.
  description: >-
    ATCO Electric publishes distributed energy resource (DER) hosting capacity for its
    Alberta distribution system as an Esri ArcGIS Online hosted feature service. A single
    polyline feature layer, "Hosting Capacity (KW)" (layer id 0), carries one feature per
    feeder segment with the substation, circuit, phase and the DER capacity in kW that the
    segment can host. An anonymous count query returned 880,623 features and 135 distinct
    substation names on 2026-07-27.


    This OpenAPI document was GENERATED by API Evangelist from the service's own
    self-describing ArcGIS REST descriptors (harvested verbatim to
    openapi/atco-electric-hosting-capacity-featureserver.esri.json and
    openapi/atco-electric-hosting-capacity-layer-0.esri.json) plus live, anonymous probes of
    the running service on 2026-07-27. ATCO publishes no OpenAPI of its own and no API
    documentation page; the parameter set below is the subset of the Esri ArcGIS REST Feature
    Service query specification that this service actually advertises (capabilities "Query")
    and that was exercised successfully against the live endpoint. Nothing here is invented:
    every path, parameter and field is present in the harvested descriptor or was confirmed
    by a live request.


    Access is completely ungated: no API key, no token, no signup, no referer check and no
    licence click-through. `Access-Control-Allow-Origin: *` is returned, so the service is
    directly callable from a browser. maxRecordCount is 1000, so paginate with `resultOffset`
    and `resultRecordCount` and watch `exceededTransferLimit` in the response.


    Note on error semantics: ArcGIS REST returns application errors with HTTP status 200 and
    an `{"error": {...}}` body rather than a 4xx status. See
    errors/atco-problem-types.yml.
  contact:
    name: ATCO Electric
    url: https://electric.atco.com/en-ca/about-us/contact.html
  x-generated-by: API Evangelist enrichment pipeline
  x-generated: '2026-07-27'
  x-method: generated
  x-source:
  - https://services7.arcgis.com/cw2emabghNLkoYlB/arcgis/rest/services/AGO_HostingCapacity/FeatureServer?f=json
  - https://services7.arcgis.com/cw2emabghNLkoYlB/arcgis/rest/services/AGO_HostingCapacity/FeatureServer/0?f=json
externalDocs:
  description: Esri ArcGIS REST API — Feature Service reference (the upstream contract this service implements)
  url: https://developers.arcgis.com/rest/services-reference/enterprise/feature-service/
servers:
- url: https://services7.arcgis.com/cw2emabghNLkoYlB/arcgis/rest/services/AGO_HostingCapacity/FeatureServer
  description: ATCO Electric AGO_HostingCapacity feature service (ArcGIS Online tenant cw2emabghNLkoYlB, org urlKey "ATCO")
tags:
- name: Service
  description: Feature service and feature layer metadata
- name: Query
  description: Read-only queries against the hosting capacity feature layer
security: []
paths:
  /:
    get:
      tags:
      - Service
      operationId: getFeatureServiceInfo
      summary: Get feature service metadata
      description: >-
        Returns the self-describing FeatureServer descriptor — currentVersion, serviceDescription,
        capabilities, maxRecordCount, spatial reference, full extent and the layer list.
      parameters:
      - $ref: '#/components/parameters/f'
      responses:
        '200':
          description: Feature service descriptor, or an ArcGIS error envelope.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FeatureServiceInfo'
              examples:
                serviceInfo:
                  summary: AGO Hosting Capacity service descriptor (truncated)
                  value:
                    currentVersion: 12
                    serviceItemId: 7b4d2b3dcecb4a509f34cbfc3587ff3e
                    serviceDescription: AGO Hosting Capacity
                    description: CYME Hosting Capacity Map
                    capabilities: Query
                    maxRecordCount: 1000
                    layers:
                    - id: 0
                      name: Hosting Capacity (KW)
                      type: Feature Layer
                      geometryType: esriGeometryPolyline
  /0:
    get:
      tags:
      - Service
      operationId: getHostingCapacityLayerInfo
      summary: Get hosting capacity feature layer metadata
      description: >-
        Returns the layer 0 descriptor — field definitions, object id field, geometry type,
        extent, drawing info, advanced query capabilities and record-count limits.
      parameters:
      - $ref: '#/components/parameters/f'
      responses:
        '200':
          description: Feature layer descriptor, or an ArcGIS error envelope.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FeatureLayerInfo'
  /0/query:
    get:
      tags:
      - Query
      operationId: queryHostingCapacity
      summary: Query hosting capacity feeder segments
      description: >-
        Query the "Hosting Capacity (KW)" layer with a SQL `where` clause, an optional spatial
        filter, and optional statistics. Supports pagination via `resultOffset` /
        `resultRecordCount` (maxRecordCount 1000; `standardMaxRecordCount` 2000, and 32000 when
        `returnGeometry=false`). Set `returnCountOnly=true` for a feature count,
        `returnDistinctValues=true` for a distinct-value list, and `f=geojson` for RFC 7946 GeoJSON.
      parameters:
      - $ref: '#/components/parameters/where'
      - $ref: '#/components/parameters/objectIds'
      - $ref: '#/components/parameters/geometry'
      - $ref: '#/components/parameters/geometryType'
      - $ref: '#/components/parameters/inSR'
      - $ref: '#/components/parameters/spatialRel'
      - $ref: '#/components/parameters/outFields'
      - $ref: '#/components/parameters/returnGeometry'
      - $ref: '#/components/parameters/outSR'
      - $ref: '#/components/parameters/orderByFields'
      - $ref: '#/components/parameters/groupByFieldsForStatistics'
      - $ref: '#/components/parameters/outStatistics'
      - $ref: '#/components/parameters/returnDistinctValues'
      - $ref: '#/components/parameters/returnCountOnly'
      - $ref: '#/components/parameters/returnExtentOnly'
      - $ref: '#/components/parameters/returnIdsOnly'
      - $ref: '#/components/parameters/resultOffset'
      - $ref: '#/components/parameters/resultRecordCount'
      - $ref: '#/components/parameters/having'
      - $ref: '#/components/parameters/f'
      responses:
        '200':
          description: >-
            A feature set, a count, a distinct-value set, or an ArcGIS error envelope
            (ArcGIS returns application errors with HTTP 200).
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/FeatureSet'
                - $ref: '#/components/schemas/CountResult'
                - $ref: '#/components/schemas/ErrorEnvelope'
              examples:
                count:
                  summary: Total feature count (verified 2026-07-27)
                  value:
                    count: 880623
                invalidWhere:
                  summary: Error envelope returned with HTTP 200
                  value:
                    error:
                      code: 400
                      message: Cannot perform query. Invalid query parameters.
                      details:
                      - "'where' parameter is invalid"
            application/geo+json:
              schema:
                $ref: '#/components/schemas/GeoJSONFeatureCollection'
    post:
      tags:
      - Query
      operationId: queryHostingCapacityByPost
      summary: Query hosting capacity feeder segments (form POST)
      description: >-
        Identical to the GET form, submitted as `application/x-www-form-urlencoded`. Use this
        when the `where` clause or geometry exceeds practical URL length. Verified anonymously
        on 2026-07-27.
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/QueryRequest'
            examples:
              bySubstation:
                summary: Count segments on the BONNYVILLE substation (verified — 34,009)
                value:
                  where: "SUB_NAME='BONNYVILLE'"
                  returnCountOnly: true
                  f: json
      responses:
        '200':
          description: >-
            A feature set, a count, or an ArcGIS error envelope.
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/FeatureSet'
                - $ref: '#/components/schemas/CountResult'
                - $ref: '#/components/schemas/ErrorEnvelope'
  /0/queryTopFeatures:
    get:
      tags:
      - Query
      operationId: queryTopHostingCapacityFeatures
      summary: Query top features per group
      description: >-
        Return the top N features within each group — for example the highest DER capacity
        segment per substation. The layer advertises `supportsTopFeaturesQuery: true`; a `where`
        clause is required in addition to `topFilter`. Verified anonymously on 2026-07-27.
      parameters:
      - $ref: '#/components/parameters/topFilter'
      - $ref: '#/components/parameters/where'
      - $ref: '#/components/parameters/outFields'
      - $ref: '#/components/parameters/returnGeometry'
      - $ref: '#/components/parameters/resultOffset'
      - $ref: '#/components/parameters/resultRecordCount'
      - $ref: '#/components/parameters/f'
      responses:
        '200':
          description: A feature set of the top features per group, or an ArcGIS error envelope.
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/FeatureSet'
                - $ref: '#/components/schemas/ErrorEnvelope'
components:
  parameters:
    f:
      name: f
      in: query
      required: false
      description: >-
        Response format. The service advertises supportedQueryFormats "JSON, geoJSON, PBF";
        `html` and `pjson` are also served by ArcGIS REST.
      schema:
        type: string
        enum: [json, geojson, pbf, pjson, html]
        default: html
    where:
      name: where
      in: query
      required: false
      description: >-
        A standardized SQL WHERE clause over the layer's fields (the layer sets
        `useStandardizedQueries: true`). Use `1=1` for all features.
      schema:
        type: string
      examples:
        all:
          value: 1=1
        bySubstation:
          value: "SUB_NAME='BONNYVILLE'"
        byCapacity:
          value: DER_CAP_KW > 15000
    objectIds:
      name: objectIds
      in: query
      required: false
      description: Comma-separated OBJECTID list. maxIdsCount is 1,000,000.
      schema:
        type: string
    geometry:
      name: geometry
      in: query
      required: false
      description: Spatial filter geometry, as JSON or comma-separated envelope/point coordinates.
      schema:
        type: string
    geometryType:
      name: geometryType
      in: query
      required: false
      schema:
        type: string
        enum:
        - esriGeometryPoint
        - esriGeometryMultipoint
        - esriGeometryPolyline
        - esriGeometryPolygon
        - esriGeometryEnvelope
        default: esriGeometryEnvelope
    inSR:
      name: inSR
      in: query
      required: false
      description: >-
        Spatial reference of the input geometry. The layer's native spatial reference is
        wkid 102185 / latestWkid 3401 (NAD83 / Alberta 3TM ref merid 115 W).
      schema:
        type: string
    spatialRel:
      name: spatialRel
      in: query
      required: false
      description: Spatial relationship to apply. Values taken verbatim from the layer's `supportedSpatialRelationships`.
      schema:
        type: string
        enum:
        - esriSpatialRelIntersects
        - esriSpatialRelContains
        - esriSpatialRelCrosses
        - esriSpatialRelEnvelopeIntersects
        - esriSpatialRelIndexIntersects
        - esriSpatialRelOverlaps
        - esriSpatialRelTouches
        - esriSpatialRelWithin
        - esriSpatialRelDisjoint
        - esriSpatialRelRelation
        default: esriSpatialRelIntersects
    outFields:
      name: outFields
      in: query
      required: false
      description: Comma-separated field list, or `*` for all fields.
      schema:
        type: string
        default: '*'
    returnGeometry:
      name: returnGeometry
      in: query
      required: false
      description: >-
        Include feature geometry. Setting this to false raises the per-request ceiling to
        `standardMaxRecordCountNoGeometry` (32,000).
      schema:
        type: boolean
        default: true
    outSR:
      name: outSR
      in: query
      required: false
      description: Output spatial reference wkid, e.g. 4326 for WGS84.
      schema:
        type: string
    orderByFields:
      name: orderByFields
      in: query
      required: false
      description: "Comma-separated `FIELD [ASC|DESC]` list. Layer advertises `supportsOrderBy: true`."
      schema:
        type: string
    groupByFieldsForStatistics:
      name: groupByFieldsForStatistics
      in: query
      required: false
      description: Comma-separated group-by field list, used with `outStatistics`.
      schema:
        type: string
    outStatistics:
      name: outStatistics
      in: query
      required: false
      description: >-
        JSON array of statistic definitions. Supported statistic types include COUNT, SUM,
        AVG, VAR, STDDEV, MIN, MAX and the percentile family.
      schema:
        type: string
    returnDistinctValues:
      name: returnDistinctValues
      in: query
      required: false
      description: "Return distinct values for `outFields`. Layer advertises `supportsDistinct: true`."
      schema:
        type: boolean
        default: false
    returnCountOnly:
      name: returnCountOnly
      in: query
      required: false
      description: Return only the matching feature count.
      schema:
        type: boolean
        default: false
    returnExtentOnly:
      name: returnExtentOnly
      in: query
      required: false
      description: "Return only the extent of matching features. Layer advertises `supportsReturningQueryExtent: true`."
      schema:
        type: boolean
        default: false
    returnIdsOnly:
      name: returnIdsOnly
      in: query
      required: false
      description: Return only OBJECTIDs of matching features.
      schema:
        type: boolean
        default: false
    resultOffset:
      name: resultOffset
      in: query
      required: false
      description: >-
        Zero-based offset into the result set. Layer advertises `supportsPagination: true`.
        Pair with `resultRecordCount` and always order by a stable field.
      schema:
        type: integer
        minimum: 0
    resultRecordCount:
      name: resultRecordCount
      in: query
      required: false
      description: >-
        Page size. maxRecordCount is 1000; standardMaxRecordCount 2000; 32000 with
        `returnGeometry=false`.
      schema:
        type: integer
        minimum: 1
        maximum: 32000
    having:
      name: having
      in: query
      required: false
      description: "SQL HAVING clause applied to grouped statistics. Layer advertises `supportsHavingClause: true`."
      schema:
        type: string
    topFilter:
      name: topFilter
      in: query
      required: true
      description: >-
        JSON object with `groupByFields`, `topCount` and `orderByFields` selecting the top N
        features per group.
      schema:
        type: string
      example: '{"groupByFields":"SUB_NAME","topCount":1,"orderByFields":"DER_CAP_KW DESC"}'
  schemas:
    FeatureServiceInfo:
      type: object
      description: ArcGIS REST FeatureServer descriptor. Harvested verbatim in openapi/atco-electric-hosting-capacity-featureserver.esri.json.
      properties:
        currentVersion:
          type: number
        serviceItemId:
          type: string
        serviceDescription:
          type: string
        description:
          type: string
        capabilities:
          type: string
          description: Comma-separated capability list. This service advertises "Query" only — it is read-only.
        maxRecordCount:
          type: integer
        maxIdsCount:
          type: integer
        supportedQueryFormats:
          type: string
        supportedExportFormats:
          type: string
        spatialReference:
          $ref: '#/components/schemas/SpatialReference'
        fullExtent:
          $ref: '#/components/schemas/Extent'
        initialExtent:
          $ref: '#/components/schemas/Extent'
        layers:
          type: array
          items:
            type: object
            properties:
              id:
                type: integer
              name:
                type: string
              type:
                type: string
              geometryType:
                type: string
        tables:
          type: array
          items:
            type: object
    FeatureLayerInfo:
      type: object
      description: ArcGIS REST Feature Layer descriptor. Harvested verbatim in openapi/atco-electric-hosting-capacity-layer-0.esri.json.
      properties:
        id:
          type: integer
        name:
          type: string
        type:
          type: string
        geometryType:
          type: string
        objectIdField:
          type: string
        displayField:
          type: string
        maxRecordCount:
          type: integer
        standardMaxRecordCount:
          type: integer
        standardMaxRecordCountNoGeometry:
          type: integer
        capabilities:
          type: string
        extent:
          $ref: '#/components/schemas/Extent'
        fields:
          type: array
          items:
            $ref: '#/components/schemas/FieldInfo'
    FieldInfo:
      type: object
      properties:
        name:
          type: string
        type:
          type: string
        alias:
          type: string
        sqlType:
          type: string
        length:
          type: integer
        nullable:
          type: boolean
        editable:
          type: boolean
    SpatialReference:
      type: object
      properties:
        wkid:
          type: integer
        latestWkid:
          type: integer
    Extent:
      type: object
      properties:
        xmin:
          type: number
        ymin:
          type: number
        xmax:
          type: number
        ymax:
          type: number
        spatialReference:
          $ref: '#/components/schemas/SpatialReference'
    HostingCapacityAttributes:
      type: object
      description: >-
        Attributes of one feeder segment in the "Hosting Capacity (KW)" layer. Field names,
        types, aliases and lengths are taken verbatim from the layer descriptor.
      properties:
        OBJECTID:
          type: integer
          description: System-maintained object id (esriFieldTypeOID), unique and not nullable.
        FEEDER:
          type: [string, 'null']
          maxLength: 200
          description: Feeder / circuit identifier (field alias "CIRCUIT").
          examples: ['700-508']
        PHASE:
          type: [string, 'null']
          maxLength: 200
          description: Phase designation of the segment.
          examples: ['B', 'AB']
        SUB_NAME:
          type: [string, 'null']
          maxLength: 200
          description: Substation name. The layer's displayField. 135 distinct values observed 2026-07-27.
          examples: ['BONNYVILLE']
        SUB_NUM:
          type: [string, 'null']
          maxLength: 200
          description: Substation number.
          examples: ['700S']
        DATELOADED:
          type: [string, 'null']
          maxLength: 200
          description: >-
            Load date of the underlying CYME hosting capacity study, as an unpadded YYYYMMDD
            string (stored as a string field, not a date field).
          examples: ['20251031']
        DER_CAP_KW:
          type: [number, 'null']
          description: Distributed energy resource hosting capacity for the segment, in kilowatts.
          examples: [62.9]
        DER_CAP_KW1:
          type: [number, 'null']
          description: >-
            Second DER capacity field carrying the alias "DER_CAP_KW". Observed equal to
            DER_CAP_KW in sampled features; ATCO publishes no field definitions, so the intended
            distinction is undocumented.
          examples: [62.9]
        PROJECT_AREA:
          type: [string, 'null']
          maxLength: 50
          description: Project area (field alias "PROJ_AREA"). Null in sampled features.
        SE_ANNO_CAD_DATA:
          type: [string, 'null']
          description: ArcSDE annotation CAD blob field (esriFieldTypeBlob). Empty in sampled features.
        Shape__Length:
          type: [number, 'null']
          description: Segment length in metres (geometryProperties.units esriMeters). Read-only.
          examples: [678.11243656856732]
    Feature:
      type: object
      properties:
        attributes:
          $ref: '#/components/schemas/HostingCapacityAttributes'
        geometry:
          type: [object, 'null']
          description: Esri polyline geometry — a `paths` array of coordinate arrays.
          properties:
            paths:
              type: array
              items:
                type: array
                items:
                  type: array
                  items:
                    type: number
    FeatureSet:
      type: object
      properties:
        objectIdFieldName:
          type: string
        uniqueIdField:
          type: object
          properties:
            name:
              type: string
            isSystemMaintained:
              type: boolean
        globalIdFieldName:
          type: string
        geometryType:
          type: string
        spatialReference:
          $ref: '#/components/schemas/SpatialReference'
        fields:
          type: array
          items:
            $ref: '#/components/schemas/FieldInfo'
        exceededTransferLimit:
          type: boolean
          description: >-
            True when more features match than were returned. This is the pagination signal —
            keep advancing `resultOffset` until it is absent or false.
        features:
          type: array
          items:
            $ref: '#/components/schemas/Feature'
    GeoJSONFeatureCollection:
      type: object
      description: RFC 7946 GeoJSON, returned when `f=geojson`. Verified against the live service 2026-07-27.
      properties:
        type:
          type: string
          const: FeatureCollection
        properties:
          type: object
          properties:
            exceededTransferLimit:
              type: boolean
        features:
          type: array
          items:
            type: object
            properties:
              type:
                type: string
                const: Feature
              id:
                type: integer
              geometry:
                type: [object, 'null']
              properties:
                $ref: '#/components/schemas/HostingCapacityAttributes'
    CountResult:
      type: object
      properties:
        count:
          type: integer
          examples: [880623]
    QueryRequest:
      type: object
      description: Form-encoded body for the POST form of the query operation.
      properties:
        where:
          type: string
        objectIds:
          type: string
        geometry:
          type: string
        geometryType:
          type: string
        spatialRel:
          type: string
        outFields:
          type: string
        returnGeometry:
          type: boolean
        outSR:
          type: string
        orderByFields:
          type: string
        groupByFieldsForStatistics:
          type: string
        outStatistics:
          type: string
        returnDistinctValues:
          type: boolean
        returnCountOnly:
          type: boolean
        resultOffset:
          type: integer
        resultRecordCount:
          type: integer
        f:
          type: string
    ErrorEnvelope:
      type: object
      description: >-
        ArcGIS REST error envelope. Note that it is returned with HTTP status 200, not a 4xx —
        clients MUST inspect the body for an `error` member rather than relying on the status code.
      properties:
        error:
          type: object
          properties:
            code:
              type: integer
            message:
              type: string
            details:
              type: array
              items:
                type: string