# generated: '2026-07-27'
# method: generated
# source: live anonymous probes of https://drpep.sce.com/arcgis_server/rest (see info.x-source-probes)
openapi: 3.1.0
info:
title: SCE DRPEP ArcGIS REST Services
version: '11.1'
summary: Anonymous, key-free Esri ArcGIS REST interface behind Southern California Edison's Distribution Resources Plan
External Portal (DRPEP).
description: 'Machine-readable description of the anonymous grid-data API that Southern California Edison serves at `drpep.sce.com`.
SCE publishes **no** OpenAPI, no developer portal, and no written API reference for this surface; this document was generated
by API Evangelist from live, unauthenticated probes of the service itself (ArcGIS Enterprise 11.1 REST, `f=json`) on 2026-07-27
and from the service, layer, and field descriptors saved verbatim under `arcgis/` in this repository. Every path, parameter,
and example below was observed answering anonymously with HTTP 200 - nothing here is aspirational.
The catalog exposes 15 hosted FeatureServers covering 47 feature layers and 11 tables: Integration Capacity Analysis (ICA)
circuit segments and their generation/load constraint layers, distribution circuits, substations, the Distribution Deferral
Opportunity Report (DDOR), the Grid Needs Assessment (GNA), Locational Net Benefit Analysis (LNBA), Public Safety Power
Shutoff (PSPS) boundaries, CPUC fire-threat tiers, transmission projects, available-load and subtransmission heat maps,
and load-growth penetration. The ICA circuit-segment layer alone answers 676,467 features.
Read-only: every hosted service advertises `capabilities: Query` (DRP_Transmission_Projects also allows `Extract`). There
is no write surface, no API key, and no rate-limit header. The sibling `Utilities` folder on the same server is NOT open
- it returns `{"error":{"code":499,"message":"Token Required"}}`.
This spec does not cover SCE Green Button Connect My Data. That interface is real and mandated by CPUC tariff Rule 26,
but SCE discloses no base URI, endpoint, or scope publicly; see `authentication/` and the repository review for what is
actually known.'
termsOfService: https://www.sce.com/terms-conditions
contact:
name: API Evangelist (generator of this description, not the API operator)
url: https://apievangelist.com
x-generated-by: api-evangelist enrichment pipeline
x-generated-on: '2026-07-27'
x-provenance: api-evangelist-generated from live anonymous probes; NOT published by Southern California Edison
x-source-probes:
- https://drpep.sce.com/arcgis_server/rest/info?f=json
- https://drpep.sce.com/arcgis_server/rest/services?f=json
- https://drpep.sce.com/arcgis_server/rest/services/Hosted?f=json
- https://drpep.sce.com/arcgis_server/rest/services/Hosted/ICA_Layer/FeatureServer?f=json
- https://drpep.sce.com/arcgis_server/rest/services/Hosted/ICA_Layer/FeatureServer/0?f=json
- https://drpep.sce.com/arcgis_server/rest/services/Hosted/ICA_Layer/FeatureServer/0/query?where=1%3D1&returnCountOnly=true&f=json
servers:
- url: https://drpep.sce.com
description: SCE Distribution Resources Plan External Portal (production, anonymous)
externalDocs:
description: DRPEP portal (Esri Experience Builder app over these services)
url: https://drpep.sce.com/drpep/
tags:
- name: Server
description: ArcGIS Enterprise server metadata and the service catalog.
- name: Feature Services
description: The 15 hosted FeatureServers and their layer/table descriptors.
- name: Query
description: Attribute and spatial queries against a feature layer or table.
- name: DRPEP Portal
description: Undocumented JSON endpoints the DRPEP web app calls directly. Observed answering anonymously; SCE publishes
no contract for them.
paths:
/arcgis_server/rest/info:
get:
operationId: getServerInfo
tags:
- Server
summary: Get ArcGIS Enterprise server info
description: Returns the ArcGIS Enterprise version and token-service metadata for the DRPEP server. Note that `authInfo.isTokenBasedSecurity`
is true even though the Hosted folder services answer anonymously - the flag describes the server, not the public
sharing of those services.
parameters:
- name: f
in: query
required: false
description: Response format. `json` (Esri JSON), `pjson` (pretty JSON), `geojson` (GeoJSON - verified supported on
hosted feature layers), or `html` (the default ArcGIS REST Services Directory page). Always send `f=json` for machine
use; without it the service returns HTML.
schema:
type: string
enum:
- json
- pjson
- geojson
- html
default: html
example: json
responses:
'200':
description: Server info document.
content:
application/json:
schema:
$ref: '#/components/schemas/ServerInfo'
example:
currentVersion: 11.1
fullVersion: 11.1.0
soapUrl: https://drpep.sce.com/arcgis_server/services
secureSoapUrl: null
owningSystemUrl: https://drpep.sce.com/arcgis_portal
authInfo:
isTokenBasedSecurity: true
tokenServicesUrl: https://drpep.sce.com/arcgis_portal/sharing/rest/generateToken
/arcgis_server/rest/services:
get:
operationId: listServiceCatalog
tags:
- Server
summary: List the root service catalog
description: 'Lists the folders and root-level services on the DRPEP ArcGIS server. Observed: two folders, `Hosted`
(public) and `Utilities` (token-required), and no root services.'
parameters:
- name: f
in: query
required: false
description: Response format. `json` (Esri JSON), `pjson` (pretty JSON), `geojson` (GeoJSON - verified supported on
hosted feature layers), or `html` (the default ArcGIS REST Services Directory page). Always send `f=json` for machine
use; without it the service returns HTML.
schema:
type: string
enum:
- json
- pjson
- geojson
- html
default: html
example: json
responses:
'200':
description: Catalog document.
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceCatalog'
example:
currentVersion: 11.1
folders:
- Hosted
- Utilities
services: []
/arcgis_server/rest/services/Hosted:
get:
operationId: listHostedServices
tags:
- Server
summary: List the public Hosted feature services
description: Lists the 15 hosted FeatureServers DRPEP shares publicly. This is the entry point for any anonymous consumer
of SCE grid data.
parameters:
- name: f
in: query
required: false
description: Response format. `json` (Esri JSON), `pjson` (pretty JSON), `geojson` (GeoJSON - verified supported on
hosted feature layers), or `html` (the default ArcGIS REST Services Directory page). Always send `f=json` for machine
use; without it the service returns HTML.
schema:
type: string
enum:
- json
- pjson
- geojson
- html
default: html
example: json
responses:
'200':
description: Folder catalog with the hosted services.
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceCatalog'
example:
currentVersion: 11.1
folders: []
services:
- name: Hosted/AVL_LOAD_CAP_TOGGLE
type: FeatureServer
- name: Hosted/AVL_LOAD_HEAT_MAP_TOGGLE
type: FeatureServer
- name: Hosted/DDOR_Layer
type: FeatureServer
- name: Hosted/Distribution_circuits
type: FeatureServer
- name: Hosted/DRP_PSPS_Layer
type: FeatureServer
- name: Hosted/DRP_ScreenL_08202021
type: FeatureServer
- name: Hosted/DRP_Transmission_Projects
type: FeatureServer
- name: Hosted/Firemap
type: FeatureServer
- name: Hosted/GNA_Layer
type: FeatureServer
- name: Hosted/ICA_Layer
type: FeatureServer
- name: Hosted/ICA_Tables
type: FeatureServer
- name: Hosted/LNBA_Layer
type: FeatureServer
- name: Hosted/LOAD_GROWTH_PEN_HTMAP
type: FeatureServer
- name: Hosted/MGEP_AVL_LOAD_HEAT_MAP
type: FeatureServer
- name: Hosted/SUBTRANS_HEATMAP
type: FeatureServer
/arcgis_server/rest/services/Hosted/{serviceName}/FeatureServer:
get:
operationId: getFeatureService
tags:
- Feature Services
summary: Get a feature service descriptor
description: 'Returns the service-level descriptor: its layers and tables, `maxRecordCount` (2,000 or 5,000 depending
on the service), supported query capabilities, and spatial reference. Every DRPEP hosted service advertises `capabilities:
Query`; `DRP_Transmission_Projects` additionally advertises `Extract`.'
parameters:
- name: serviceName
in: path
required: true
description: Name of a hosted feature service, as returned by `listHostedServices`.
schema:
type: string
enum:
- AVL_LOAD_CAP_TOGGLE
- AVL_LOAD_HEAT_MAP_TOGGLE
- DDOR_Layer
- DRP_PSPS_Layer
- DRP_ScreenL_08202021
- DRP_Transmission_Projects
- Distribution_circuits
- Firemap
- GNA_Layer
- ICA_Layer
- ICA_Tables
- LNBA_Layer
- LOAD_GROWTH_PEN_HTMAP
- MGEP_AVL_LOAD_HEAT_MAP
- SUBTRANS_HEATMAP
example: ICA_Layer
- name: f
in: query
required: false
description: Response format. `json` (Esri JSON), `pjson` (pretty JSON), `geojson` (GeoJSON - verified supported on
hosted feature layers), or `html` (the default ArcGIS REST Services Directory page). Always send `f=json` for machine
use; without it the service returns HTML.
schema:
type: string
enum:
- json
- pjson
- geojson
- html
default: html
example: json
responses:
'200':
description: Feature service descriptor, or an ArcGIS error envelope for an unknown service.
content:
application/json:
schema:
$ref: '#/components/schemas/FeatureService'
/arcgis_server/rest/services/Hosted/{serviceName}/FeatureServer/{layerId}:
get:
operationId: getFeatureLayer
tags:
- Feature Services
summary: Get a feature layer or table descriptor
description: Returns the layer descriptor including the full field list (name, Esri type, alias), geometry type, drawing
info, `maxRecordCount`, and `advancedQueryCapabilities` (pagination, statistics, order-by, distinct are all supported
on these layers). The field list is the only field-level documentation SCE provides for DRPEP data.
parameters:
- name: serviceName
in: path
required: true
description: Name of a hosted feature service, as returned by `listHostedServices`.
schema:
type: string
enum:
- AVL_LOAD_CAP_TOGGLE
- AVL_LOAD_HEAT_MAP_TOGGLE
- DDOR_Layer
- DRP_PSPS_Layer
- DRP_ScreenL_08202021
- DRP_Transmission_Projects
- Distribution_circuits
- Firemap
- GNA_Layer
- ICA_Layer
- ICA_Tables
- LNBA_Layer
- LOAD_GROWTH_PEN_HTMAP
- MGEP_AVL_LOAD_HEAT_MAP
- SUBTRANS_HEATMAP
example: ICA_Layer
- name: layerId
in: path
required: true
description: Zero-based id of a layer or table inside the feature service, as returned by `getFeatureService`. See
`x-drpep-inventory` in this document for the full 58-entry layer/table map.
schema:
type: integer
minimum: 0
example: 0
- name: f
in: query
required: false
description: Response format. `json` (Esri JSON), `pjson` (pretty JSON), `geojson` (GeoJSON - verified supported on
hosted feature layers), or `html` (the default ArcGIS REST Services Directory page). Always send `f=json` for machine
use; without it the service returns HTML.
schema:
type: string
enum:
- json
- pjson
- geojson
- html
default: html
example: json
responses:
'200':
description: Layer/table descriptor, or an ArcGIS error envelope.
content:
application/json:
schema:
$ref: '#/components/schemas/FeatureLayer'
/arcgis_server/rest/services/Hosted/{serviceName}/FeatureServer/{layerId}/query:
get:
operationId: queryFeatureLayer
tags:
- Query
summary: Query features from a layer or table
description: 'The workhorse operation. Runs a SQL-92 attribute filter and/or a spatial filter against one layer and
returns matching features as Esri JSON (`f=json`) or GeoJSON (`f=geojson`, verified working). Paging is offset-based
via `resultOffset` + `resultRecordCount`; when a response is truncated the body carries `exceededTransferLimit: true`
and the caller must page. Errors are returned with HTTP 200 and an `error` envelope, not an HTTP error status.'
parameters:
- name: serviceName
in: path
required: true
description: Name of a hosted feature service, as returned by `listHostedServices`.
schema:
type: string
enum:
- AVL_LOAD_CAP_TOGGLE
- AVL_LOAD_HEAT_MAP_TOGGLE
- DDOR_Layer
- DRP_PSPS_Layer
- DRP_ScreenL_08202021
- DRP_Transmission_Projects
- Distribution_circuits
- Firemap
- GNA_Layer
- ICA_Layer
- ICA_Tables
- LNBA_Layer
- LOAD_GROWTH_PEN_HTMAP
- MGEP_AVL_LOAD_HEAT_MAP
- SUBTRANS_HEATMAP
example: ICA_Layer
- name: layerId
in: path
required: true
description: Zero-based id of a layer or table inside the feature service, as returned by `getFeatureService`. See
`x-drpep-inventory` in this document for the full 58-entry layer/table map.
schema:
type: integer
minimum: 0
example: 0
- name: where
in: query
required: false
description: SQL-92 WHERE clause applied to the layer attributes. Use `1=1` to select everything. A malformed clause
returns HTTP 200 with an ArcGIS error envelope (code 500, 'Syntax error').
schema:
type: string
default: 1=1
example: circuit_name = 'Acapulco'
- name: objectIds
in: query
required: false
description: Comma-separated list of ObjectIDs to fetch instead of a where clause.
schema:
type: string
- name: geometry
in: query
required: false
description: Geometry used to spatially filter the layer, in the format implied by geometryType (e.g. an envelope
`xmin,ymin,xmax,ymax`).
schema:
type: string
- name: geometryType
in: query
required: false
description: Type of the geometry filter.
schema:
type: string
enum:
- esriGeometryPoint
- esriGeometryMultipoint
- esriGeometryPolyline
- esriGeometryPolygon
- esriGeometryEnvelope
- name: spatialRel
in: query
required: false
description: Spatial relationship applied between the input geometry and the layer geometry.
schema:
type: string
enum:
- esriSpatialRelIntersects
- esriSpatialRelContains
- esriSpatialRelCrosses
- esriSpatialRelWithin
- esriSpatialRelTouches
- esriSpatialRelOverlaps
- esriSpatialRelEnvelopeIntersects
default: esriSpatialRelIntersects
- name: inSR
in: query
required: false
description: Spatial reference of the input geometry (WKID).
schema:
type: string
example: '4326'
- name: outSR
in: query
required: false
description: Spatial reference the returned geometry is projected into (WKID).
schema:
type: string
example: '4326'
- name: outFields
in: query
required: false
description: Comma-separated attribute list to return, or `*` for all. Field names come from the layer descriptor.
schema:
type: string
default: '*'
example: circuit_name,ica_overall_pv
- name: returnGeometry
in: query
required: false
description: Whether to include geometry with each feature. Set false for attribute-only pulls.
schema:
type: boolean
default: true
- name: returnCountOnly
in: query
required: false
description: 'Return only the matching feature count. Verified: `where=1=1&returnCountOnly=true` on ICA - Circuit
Segments returned 676,467.'
schema:
type: boolean
default: false
- name: returnIdsOnly
in: query
required: false
description: Return only the matching ObjectIDs - the standard way to page a layer larger than maxRecordCount.
schema:
type: boolean
default: false
- name: orderByFields
in: query
required: false
description: Comma-separated ORDER BY expression. Supported (supportsOrderBy is true on these layers).
schema:
type: string
- name: groupByFieldsForStatistics
in: query
required: false
description: Fields to group by when computing outStatistics.
schema:
type: string
- name: outStatistics
in: query
required: false
description: JSON array of statistic definitions (count/sum/min/max/avg/stddev). Supported (supportsStatistics is
true).
schema:
type: string
- name: resultOffset
in: query
required: false
description: Zero-based offset for pagination. Supported (supportsPagination is true).
schema:
type: integer
minimum: 0
- name: resultRecordCount
in: query
required: false
description: Maximum number of features to return in this page; capped by the layer maxRecordCount (2,000 or 5,000
on these services).
schema:
type: integer
minimum: 1
- name: returnDistinctValues
in: query
required: false
description: Return distinct values for the requested outFields (supportsDistinct is true).
schema:
type: boolean
default: false
- name: resultType
in: query
required: false
description: Query result hint.
schema:
type: string
enum:
- none
- standard
- tile
- name: f
in: query
required: false
description: Response format. `json` (Esri JSON), `pjson` (pretty JSON), `geojson` (GeoJSON - verified supported on
hosted feature layers), or `html` (the default ArcGIS REST Services Directory page). Always send `f=json` for machine
use; without it the service returns HTML.
schema:
type: string
enum:
- json
- pjson
- geojson
- html
default: html
example: json
responses:
'200':
description: A feature set, a count, an id list, or an ArcGIS error envelope - all with HTTP 200.
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/FeatureSet'
- $ref: '#/components/schemas/CountResult'
- $ref: '#/components/schemas/ErrorEnvelope'
examples:
count:
summary: returnCountOnly on ICA - Circuit Segments (verified 2026-07-27)
value:
count: 676467
featureSet:
summary: One ICA circuit segment, attributes only (verified 2026-07-27)
value:
features:
- attributes:
circuit_name: Acapulco
ica_overall_pv: 0
exceededTransferLimit: true
objectIdFieldName: objectid
fields:
- name: circuit_name
alias: Circuit Name
type: esriFieldTypeString
length: 50
- name: ica_overall_pv
alias: Photovoltaic Static Grid
type: esriFieldTypeDouble
error:
summary: Malformed where clause (verified 2026-07-27)
value:
error:
code: 500
message: Syntax error [].
details: []
application/geo+json:
schema:
type: object
description: GeoJSON FeatureCollection, returned when f=geojson.
/api/op3:
get:
operationId: getDrpepOperationalFlexibility
tags:
- DRPEP Portal
summary: Get operational-flexibility (Op Flex) status for a circuit
description: Undocumented JSON endpoint called by the DRPEP web application. Observed answering anonymously with HTTP
200 and the body `{"beingProcessed":false,"title":null,"op3Disclaimer":null}` for an unknown circuit. SCE publishes
no contract, no field reference, and no support commitment for this endpoint; treat it as unstable.
parameters:
- name: circuit
in: query
required: true
description: Circuit name, as found in the `circuit_name` attribute of the ICA layers.
schema:
type: string
- name: kv
in: query
required: false
description: Circuit voltage in kV, as found in the `circuit_voltage` attribute.
schema:
type: string
responses:
'200':
description: Op Flex status document.
content:
application/json:
schema:
type: object
properties:
beingProcessed:
type: boolean
title:
type:
- string
- 'null'
op3Disclaimer:
type:
- string
- 'null'
example:
beingProcessed: false
title: null
op3Disclaimer: null
x-undocumented: true
/api/DownloadCSV:
get:
operationId: downloadDrpepNodeCsv
tags:
- DRPEP Portal
summary: Request the ICA CSV export for a circuit node
description: Undocumented JSON endpoint behind the DRPEP app per-node CSV download. Observed answering anonymously with
HTTP 201 and `{"status":false}` for unknown inputs. The stable, documented-by-data path to the same exports is the
`download_link` attribute carried on each ICA circuit segment feature.
parameters:
- name: circuitName
in: query
required: true
description: Circuit name from `circuit_name`.
schema:
type: string
- name: nodeName
in: query
required: true
description: Node identifier from `node_id`.
schema:
type: string
responses:
'201':
description: Export request acknowledgement.
content:
application/json:
schema:
type: object
properties:
status:
type: boolean
example:
status: false
x-undocumented: true
components:
schemas:
ServerInfo:
type: object
description: ArcGIS Enterprise server metadata.
properties:
currentVersion:
type: number
fullVersion:
type: string
soapUrl:
type: string
secureSoapUrl:
type:
- string
- 'null'
owningSystemUrl:
type: string
authInfo:
type: object
properties:
isTokenBasedSecurity:
type: boolean
tokenServicesUrl:
type: string
ServiceCatalog:
type: object
description: A folder listing of ArcGIS services.
properties:
currentVersion:
type: number
folders:
type: array
items:
type: string
services:
type: array
items:
type: object
properties:
name:
type: string
type:
type: string
enum:
- FeatureServer
- MapServer
FeatureService:
type: object
description: Feature service descriptor.
properties:
currentVersion:
type: number
serviceDescription:
type: string
maxRecordCount:
type: integer
capabilities:
type: string
examples:
- Query
- Query,Extract
layers:
type: array
items:
$ref: '#/components/schemas/LayerSummary'
tables:
type: array
items:
$ref: '#/components/schemas/LayerSummary'
LayerSummary:
type: object
properties:
id:
type: integer
name:
type: string
type:
type: string
enum:
- Feature Layer
- Table
geometryType:
type: string
Field:
type: object
properties:
name:
type: string
alias:
type: string
type:
type: string
description: Esri field type, e.g. esriFieldTypeString.
length:
type: integer
FeatureLayer:
type: object
description: Feature layer or table descriptor, including the field list.
properties:
id:
type: integer
name:
type: string
type:
type: string
geometryType:
type: string
maxRecordCount:
type: integer
objectIdField:
type: string
fields:
type: array
items:
$ref: '#/components/schemas/Field'
advancedQueryCapabilities:
type: object
FeatureSet:
type: object
description: Esri JSON feature set returned by a query.
properties:
objectIdFieldName:
type: string
globalIdFieldName:
type: string
geometryType:
type: string
spatialReference:
type: object
fields:
type: array
items:
$ref: '#/components/schemas/Field'
exceededTransferLimit:
type: boolean
description: True when the result was truncated at maxRecordCount - page with resultOffset.
features:
type: array
items:
type: object
properties:
attributes:
type: object
geometry:
type: object
CountResult:
type: object
properties:
count:
type: integer
ErrorEnvelope:
type: object
description: ArcGIS error envelope. Returned with HTTP 200; the transport status is not the error signal.
properties:
error:
type: object
properties:
code:
type: integer
examples:
- 400
- 404
- 498
- 499
- 500
message:
type: string
messageCode:
type: string
details:
type: array
items:
type: string
IcaCircuitSegment:
type: object
title: ICA - Circuit Segments
description: Attribute shape of `ICA_Layer` layer 0 (ICA - Circuit Segments), derived from the live layer descriptor.
x-source: https://drpep.sce.com/arcgis_server/rest/services/Hosted/ICA_Layer/FeatureServer/0?f=json
properties:
system_name:
type: string
title: System Name
x-esri-field-type: esriFieldTypeString
substation_name:
type: string
title: Substation Name
x-esri-field-type: esriFieldTypeString
substation_voltage:
type: string
title: Substation Voltage
x-esri-field-type: esriFieldTypeString
circuit_name:
type: string
title: Circuit Name
x-esri-field-type: esriFieldTypeString
circuit_voltage:
type: string
title: Circuit Voltage
x-esri-field-type: esriFieldTypeString
section_id:
type: number
title: Segment ID
x-esri-field-type: esriFieldTypeDouble
node_id:
type: string
title: Node ID
x-esri-field-type: esriFieldTypeString
uniform_generation:
type: number
title: Uniform Generation Static Grid
x-esri-field-type: esriFieldTypeDouble
uniform_generation_op_flex:
type: string
title: Uniform Generation OpFlex
x-esri-field-type: esriFieldTypeString
ica_overall_pv:
type: number
title: Photovoltaic Static Grid
x-esri-field-type: esriFieldTypeDouble
ica_overall_pv_op_flex:
type: string
title: Photovoltaic OpFlex
x-esri-field-type: esriFieldTypeString
ica_overall_load:
type: string
title: Uniform Load
x-esri-field-type: esriFieldTypeString
disclaimer:
type: string
title: Disclaimer
x-esri-field-type: esriFieldTypeString
note:
type: string
title: Note
x-esri-field-type: esriFieldTypeString
lgp_flag:
type: string
title: LGP Flag
x-esri-field-type: esriFieldTypeString
most_limiting_criteria_ug_sg:
type: string
title: Most Limiting Criteria -Uniform Generation Static Grid
x-esri-field-type: esriFieldTypeString
most_limiting_criteria_ug_of:
type: string
title: Most Limiting Criteria-Uniform Gen Op Flex
x-esri-field-type: esriFieldTypeString
most_limiting_criteria_lsg:
type: string
title: Most Limiting Criteria -Load Static Grid
x-esri-field-type: esriFieldTypeString
most_limiting_criteria_pv_sg:
type: string
title: Most Limiting Criteria -Photovoltaic Static Grid
x-esri-field-type: esriFieldTypeString
most_limiting_criteria_pv_of:
type: string
title: Most Limiting Criteria -Photovoltaic Op Flex
x-esri-field-type: esriFieldTypeString
phase:
type: string
x-esri-field-type: esriFieldTypeString
download_link:
type: string
x-
# --- truncated at 32 KB (65 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/southern-california-edison/refs/heads/main/openapi/southern-california-edison-drpep-arcgis-openapi.yml