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"]
    }
  ]
}
FieldTypeDescription
h3_indexstringH3 cell identifier
center_latnumberApproximate latitude of cell center
center_lngnumberApproximate longitude of cell center
site_countintegerNumber of sites in this cell
der_typesstring[]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
    }
  }
}
FieldTypeDescription
site_countintegerNumber of sites aggregated
der_countintegerTotal number of DERs
total_power_wnumberSum of all power values across DERs
avg_frequency_hznumberAverage grid frequency
der_summaryobjectPer-DER-type breakdown
der_summary.*.countintegerNumber of devices of this type
der_summary.*.total_power_wnumberSum of active power
der_summary.*.total_export_wnumberSum of exported power
der_summary.*.total_import_wnumberSum of imported power
der_summary.*.avg_soc_pctnumberAverage 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]
  }
]
FieldTypeDescription
idstringUnique identifier (e.g., solar, battery)
display_namestringHuman-readable name
descriptionstringDetailed description
schema_versionstringTelemetry schema version
telemetry_schemainteger[]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"]
  }
]
FieldTypeDescription
idstringUnique identifier (e.g., inverter, meter)
display_namestringHuman-readable name
descriptionstringDetailed description
allowed_der_typesstring[]DER types that can be associated with this device type