Skip to content

Price API: support PT15M (15-minute) resolution on the Electricity Prices endpoint #30

Description

@HuggeK

Summary

Add support for PT15M (15-minute) resolution to the Electricity Prices API (/services/price/electricity/{area}), in addition to the current hourly PT60M.

Background

The Price API docs currently specify Hourly (PT60M) as the only resolution, with no resolution parameter exposed:
https://developer.sourceful.energy/docs/api/price-api

The upstream data source (ENTSO-E Transparency Platform) now publishes 15-minute MTU data for a growing number of European bidding zones, driven by the EU move to a 15-minute imbalance settlement period. So the raw PT15M data already exists upstream — it's just not surfaced through Nova Core.

Motivation

Sourceful's Price API is valuable specifically because it proxies ENTSO-E and avoids hitting ENTSO-E directly. Calling ENTSO-E from browser/frontend projects runs into CORS restrictions (no permissive CORS headers) plus API-key/token handling — so a hosted, CORS-friendly proxy is the practical way to consume this data client-side.

We'd like to use 15-minute prices in:

  • srcfl/negative-price-calc (the negative-price project) — finer granularity matters for spotting and acting on negative-price windows that an hourly average can mask.
  • Other downstream projects that consume the Price API client-side and can't call ENTSO-E directly due to CORS.

Proposed change

Expose an optional resolution selector on the electricity prices endpoint, e.g.:

GET /services/price/electricity/{area}?resolution=PT15M
  • Default remains PT60M for backward compatibility.
  • Accept PT15M (and ideally PT60M) explicitly.
  • For areas/dates where 15-minute data isn't available upstream, fall back to PT60M (or return a clear indicator of the resolution actually served).
  • Document the supported resolutions and per-area availability.

Acceptance criteria

  • resolution=PT15M returns 15-minute price points for supported bidding zones.
  • Each price point / response indicates the resolution actually served.
  • Docs updated to describe the parameter and area coverage.
  • Existing callers (no parameter) keep getting PT60M unchanged.

Thanks! Happy to test against negative-price-calc once it's available.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions