Public Data
Unauthenticated endpoints for grid cells, DER types, and device types.
Public endpoints that require no authentication. Useful for building maps, dashboards, and device configuration UIs.
Grid Cells
Aggregated, privacy-preserving data about energy sites grouped by H3 resolution-6 cells (~36 km² each). Individual site locations and IDs are never exposed.
List Cells
GET /public/cells
Returns all H3 R6 cells that contain at least one site.
Response:
{
"cells": [
{
"h3_index": "861203a4fffffff",
"center_lat": 59.3293,
"center_lng": 18.0686,
"site_count": 3,
"der_types": ["solar", "battery"]
}
]
}
| Field | Type | Description |
|---|---|---|
h3_index | string | H3 cell identifier |
center_lat | number | Approximate latitude of cell center |
center_lng | number | Approximate longitude of cell center |
site_count | integer | Number of sites in this cell |
der_types | string[] | Union of DER types present in the cell |
Cell Stats
GET /public/cells/{h3_index}/stats
Returns aggregated telemetry and device counts for a single cell. All metrics are sums or averages across sites — no per-site data is exposed.
Parameters:
h3_index(required): H3 R6 cell index (e.g.,861203a4fffffff)
Example:
curl "https://novacore-mainnet.sourceful.dev/public/cells/861203a4fffffff/stats"
Response:
{
"h3_index": "861203a4fffffff",
"site_count": 3,
"der_count": 5,
"total_power_w": 12500,
"avg_frequency_hz": 50.01,
"der_summary": {
"solar": {
"count": 3,
"total_power_w": 10000,
"total_export_w": 8000,
"total_import_w": 0,
"avg_soc_pct": null
},
"battery": {
"count": 2,
"total_power_w": 2500,
"total_export_w": 500,
"total_import_w": 2000,
"avg_soc_pct": 45.5
}
}
}
| Field | Type | Description |
|---|---|---|
site_count | integer | Number of sites aggregated |
der_count | integer | Total number of DERs |
total_power_w | number | Sum of all power values across DERs |
avg_frequency_hz | number | Average grid frequency |
der_summary | object | Per-DER-type breakdown |
der_summary.*.count | integer | Number of devices of this type |
der_summary.*.total_power_w | number | Sum of active power |
der_summary.*.total_export_w | number | Sum of exported power |
der_summary.*.total_import_w | number | Sum of imported power |
der_summary.*.avg_soc_pct | number | Average state of charge (batteries only) |
DER Types
List DER Types
GET /public/der-types
Returns all valid Distributed Energy Resource types with their telemetry schemas.
Example:
curl "https://novacore-mainnet.sourceful.dev/public/der-types"
Response:
[
{
"id": "solar",
"display_name": "PV System",
"description": "Photovoltaic energy generation system",
"schema_version": "1.0.0",
"telemetry_schema": [0, 1, 2, 3]
},
{
"id": "battery",
"display_name": "Battery Storage",
"description": "Energy storage system",
"schema_version": "1.0.0",
"telemetry_schema": [0, 1, 2, 3, 4, 5]
}
]
| Field | Type | Description |
|---|---|---|
id | string | Unique identifier (e.g., solar, battery) |
display_name | string | Human-readable name |
description | string | Detailed description |
schema_version | string | Telemetry schema version |
telemetry_schema | integer[] | Telemetry field indices |
Get DER Type
GET /public/der-types/{id}
Returns a single DER type by ID.
Parameters:
id(required): DER type ID (e.g.,solar,battery)
Device Types
List Device Types
GET /public/device-types
Returns all valid device types that can be used when provisioning devices, including which DER types each supports.
Example:
curl "https://novacore-mainnet.sourceful.dev/public/device-types"
Response:
[
{
"id": "inverter",
"display_name": "Inverter",
"description": "DC to AC inverter device",
"allowed_der_types": ["solar", "battery"]
},
{
"id": "meter",
"display_name": "Smart Meter",
"description": "Energy meter for monitoring",
"allowed_der_types": ["load"]
}
]
| Field | Type | Description |
|---|---|---|
id | string | Unique identifier (e.g., inverter, meter) |
display_name | string | Human-readable name |
description | string | Detailed description |
allowed_der_types | string[] | DER types that can be associated with this device type |