Skip to content

Commit 7987155

Browse files
Bumped protobuf dependency, common API submodule updates & MarketLocationSelector rename
Signed-off-by: tomni <thomas.nicolai@frequenz.com>
1 parent d946b4a commit 7987155

3 files changed

Lines changed: 72 additions & 52 deletions

File tree

proto/frequenz/api/platformassets/v1alpha1/platformassets.proto

Lines changed: 69 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,6 @@ import "google/protobuf/timestamp.proto";
4949
// planned microgrids, including electrical components, sensors, and the
5050
// directed electrical component graph.
5151
//
52-
// Platform asset and market-topology metadata is used by reporting,
53-
// forecasting, monitoring, trading, optimization, data science, deployment
54-
// validation, and operational tooling.
55-
//
5652
// !!! important "Authentication"
5753
// All requests to PlatformAssetsService must be signed. The key identifier
5854
// and signature must be included in the request metadata (gRPC metadata /
@@ -120,7 +116,7 @@ enum MarketParticipationType {
120116

121117
// ANCILLARY_SERVICES: The relation participates in ancillary services or
122118
// flex-market services, such as FCR, aFRR, or other grid-operator services.
123-
MARKET_PARTICIPATION_TYPE_ANCILLARY_SERVICES = 2;
119+
MARKET_PARTICIPATION_TYPE_FLEX_MARKETS = 2;
124120
}
125121

126122
// Describes the participation of a market-topology relation in a specific use
@@ -138,13 +134,10 @@ message MarketParticipation {
138134
// If set, the interval describes when this relation is valid for the given
139135
// use case. The interval is inclusive at `start_time` and exclusive at
140136
// `end_time`.
141-
frequenz.api.common.v1alpha8.types.Interval validity_period = 2;
142-
143-
// Optional. Timestamp at which this participation was cancelled.
144137
//
145-
// If set, this participation should no longer be considered effective from
146-
// this timestamp onward, even if `validity_period.end_time` is later.
147-
optional google.protobuf.Timestamp cancel_time = 3;
138+
// Updating `end_time` can be used to end a participation. Updating
139+
// `start_time` can be used to move a participation into the future.
140+
frequenz.api.common.v1alpha8.types.Interval validity_period = 2;
148141
}
149142

150143
// Describes a market-topology relation between a Gridpool, Microgrid, and
@@ -189,12 +182,16 @@ message MarketParticipation {
189182
//
190183
// If `gridpool_id` is unset, both `microgrid_id` and
191184
// `market_location_selector` must be set. In that case, the relation does
192-
// not represent market participation.
193-
//
194-
// If `gridpool_id` is set, `delivery_area` is required.
185+
// not represent market participation, but the relation can remain as
186+
// a Microgrid-to-Market-Location relation without Gridpool participation.
187+
// Gridpool-specific fields, such as `delivery_area` and `participations`,
188+
// no longer apply once `gridpool_id` is unset. If `gridpool_id` is set,
189+
// `delivery_area` is required.
195190
//
196191
// `participations` are only valid when `gridpool_id` is set.
197192
//
193+
// If removing `gridpool_id` would leave only `microgrid_id` or only
194+
// `market_location_selector`, no valid relation remains.
198195
//
199196
message MarketTopologyRelation {
200197
// Optional. The Microgrid associated with this relation.
@@ -214,8 +211,7 @@ message MarketTopologyRelation {
214211
//
215212
// If `gridpool_id` is unset, this field links the Market Location to the
216213
// Microgrid without market participation.
217-
frequenz.api.common.v1alpha8.grid.MarketLocationSelector
218-
market_location_selector = 2;
214+
frequenz.api.common.v1alpha8.grid.MarketLocation market_location = 2;
219215

220216
// Optional. The Gridpool associated with this relation.
221217
//
@@ -239,7 +235,8 @@ message MarketTopologyRelation {
239235
// energy trading may start before ancillary services, or ancillary services
240236
// may end while the Market Location remains associated for energy trading.
241237
//
242-
// Participations are only valid when `gridpool_id` is set.
238+
// Participations are only valid when `gridpool_id` is set. If `gridpool_id` is
239+
// unset, this field must be empty.
243240
repeated MarketParticipation participations = 5;
244241
}
245242

@@ -283,18 +280,21 @@ message GridpoolEnergyScheduleTimeSeriesEntry {
283280
// the counterparty balancing group.
284281
//
285282
// !!! note "Delivery areas"
286-
// `gridpool_delivery_area` describes the delivery area of the
287-
// Frequenz/Gridpool side of the scheduled exchange.
283+
// `frequenz_delivery_area` describes the delivery area of the Frequenz
284+
// side of the scheduled exchange.
288285
//
289286
// `counterparty_delivery_area` describes the delivery area of the
290-
// counterparty balancing group.
287+
// counterparty side of the scheduled exchange.
288+
//
289+
// These fields describe the schedule context. They do not imply that the
290+
// Gridpool itself is assigned to a single delivery area.
291291
//
292-
// If both delivery areas are the same, the schedule represents an internal
293-
// schedule within one delivery area.
292+
// If both delivery areas are the same, the schedule represents an exchange
293+
// within one delivery area.
294294
//
295-
// If they differ, the schedule represents an external schedule across
296-
// delivery areas and may be subject to additional matching, nomination, and
297-
// capacity-right validation.
295+
// If they differ, the schedule represents an exchange across delivery areas
296+
// and may be subject to additional matching, nomination, and capacity-right
297+
// validation.
298298
//
299299
// !!! note "Effective validity"
300300
// `validity_period` describes the originally configured schedule period.
@@ -305,8 +305,9 @@ message GridpoolEnergyScheduleTimeSeriesEntry {
305305
// `validity_period`.
306306
//
307307
// The API does not expose an active/inactive status because such a status
308-
// is derived from `validity_period`, `cancel_time`, and the client's
309-
// evaluation time.
308+
// is time-dependent. Consumers can derive it by comparing the schedule's
309+
// effective validity period with the timestamp at which they evaluate the
310+
// schedule.
310311
//
311312
message GridpoolEnergySchedule {
312313
// Unique identifier of the Gridpool the energy schedule belongs to.
@@ -324,19 +325,23 @@ message GridpoolEnergySchedule {
324325

325326
// Delivery area of the counterparty side of the scheduled exchange.
326327
//
327-
// If this is the same as `gridpool_delivery_area`, the schedule represents
328-
// an internal schedule within one delivery area.
328+
// If this is the same as `frequenz_delivery_area`, the schedule represents an
329+
// exchange within one delivery area.
329330
//
330-
// If this differs from `gridpool_delivery_area`, the schedule represents an
331-
// external schedule across delivery areas and may be subject to additional
332-
// matching, nomination, and capacity-right validation.
331+
// If this differs from `frequenz_delivery_area`, the schedule represents an
332+
// exchange across delivery areas and may be subject to additional matching,
333+
// nomination, and capacity-right validation.
333334
frequenz.api.common.v1alpha8.grid.DeliveryArea counterparty_delivery_area = 5;
334335

335-
// Delivery area of the Frequenz/Gridpool side of the scheduled exchange.
336+
// Delivery area of the Frequenz side of the scheduled exchange.
337+
//
338+
// This is the delivery area in which the Frequenz balancing group participates
339+
// for this schedule.
336340
//
337-
// This is the delivery area in which the Frequenz balancing group
338-
// participates for this schedule.
339-
frequenz.api.common.v1alpha8.grid.DeliveryArea gridpool_delivery_area = 6;
341+
// This field does not imply that the Gridpool itself belongs to only one
342+
// delivery area. A Gridpool can have relations or schedules in different
343+
// delivery areas.
344+
frequenz.api.common.v1alpha8.grid.DeliveryArea frequenz_delivery_area = 6;
340345

341346
// Direction of the scheduled energy exchange from the perspective of the
342347
// Frequenz balancing group.
@@ -422,13 +427,22 @@ message ListGridpoolEnergySchedulesRequest {
422427
// If empty, no direction filtering is applied.
423428
repeated GridpoolEnergyScheduleDirection directions = 2;
424429

425-
// Optional. Return only schedule entries whose `start_time` falls within
426-
// this interval.
427-
//
428-
// The interval is inclusive at `start_time` and exclusive at `end_time`.
429-
//
430-
// If omitted, no delivery-time filtering is applied.
431-
frequenz.api.common.v1alpha8.types.Interval delivery_time_interval = 3;
430+
// Optional. Restrict returned `time_series` entries to delivery periods that
431+
// overlap this interval.
432+
//
433+
// A time-series entry matches if its delivery period overlaps the requested
434+
// interval:
435+
//
436+
// ```text
437+
// entry.start_time < time_series_interval.end_time
438+
// AND
439+
// entry.start_time + schedule.delivery_duration >
440+
// time_series_interval.start_time
441+
// ```
442+
//
443+
// The returned schedules contain only matching `time_series` entries. If
444+
// omitted, no time-series filtering is applied.
445+
frequenz.api.common.v1alpha8.types.Interval time_series_interval = 3;
432446

433447
// Optional. Return only schedules whose effective validity period overlaps
434448
// this interval.
@@ -497,11 +511,16 @@ message ListMarketTopologyRelationsRequest {
497511
// If empty, no Microgrid-ID filtering is applied.
498512
repeated uint64 microgrid_ids = 2;
499513

500-
// Optional. Return only relations involving any of these Market Locations.
514+
// Optional. Return only relations involving Market Locations whose ID values
515+
// match any of these filters.
516+
//
517+
// This filter does not require callers to provide the Market Area. It is useful
518+
// when the Market Location identifier is known, but the Market Area has not
519+
// been resolved yet.
501520
//
502-
// If empty, no Market Location filtering is applied.
503-
repeated frequenz.api.common.v1alpha8.grid.MarketLocationSelector
504-
market_location_selectors = 3;
521+
// If empty, no Market Location-ID filtering is applied.
522+
repeated frequenz.api.common.v1alpha8.grid.MarketLocationIdValue
523+
market_location_id_values = 3;
505524

506525
// Optional. Return only relations applying to any of these delivery areas.
507526
//
@@ -562,8 +581,9 @@ message ListMicrogridsRequest {
562581
// If empty, no microgrid-ID filtering is applied.
563582
repeated uint64 microgrid_ids = 1;
564583

565-
// Optional. Return only microgrids assigned to any of these Gridpools
566-
// within the current enterprise scope.
584+
// Optional. Return only microgrids that are part of a market-topology
585+
// relation involving any of these Gridpools within the current enterprise
586+
// scope.
567587
//
568588
// If empty, no Gridpool-ID filtering is applied.
569589
repeated uint64 gridpool_ids = 2;

pyproject.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,11 @@ classifiers = [
4545
]
4646
requires-python = ">= 3.11, < 4"
4747
dependencies = [
48-
"frequenz-api-common >= 0.8.0, < 0.9",
48+
"frequenz-api-common >= 0.8.9, < 0.9",
4949
# We can't widen beyond the current value unless we bump the minimum
5050
# requirements too because of protobuf cross-version runtime guarantees:
5151
# https://protobuf.dev/support/cross-version-runtime-guarantee/#major
52-
"protobuf >= 6.31.1, < 8", # Do not widen beyond 8!
52+
"protobuf >= 6.33.6, < 8", # Do not widen beyond 8!
5353
# We couldn't find any document with a spec about the cross-version runtime
5454
# guarantee for grpcio, so unless we find one in the future, we'll assume
5555
# major version jumps are not compatible

0 commit comments

Comments
 (0)