frequenz-api-common 0.8.9__tar.gz → 0.8.11__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/PKG-INFO +10 -10
- frequenz_api_common-0.8.11/RELEASE_NOTES.md +10 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha7/streaming/event.proto +3 -3
- frequenz_api_common-0.8.11/proto/frequenz/api/common/v1alpha8/grid/flexibility_service.proto +171 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha8/grid/market_location.proto +1 -1
- frequenz_api_common-0.8.11/proto/frequenz/api/common/v1alpha8/grid/provision_duration.proto +102 -0
- frequenz_api_common-0.8.11/proto/frequenz/api/common/v1alpha8/gridpool/gridpool.proto +103 -0
- frequenz_api_common-0.8.11/proto/frequenz/api/common/v1alpha8/identity/resource_uri.proto +167 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha8/streaming/event.proto +3 -3
- frequenz_api_common-0.8.11/py/frequenz/api/common/v1alpha8/identity/__init__.py +4 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz_api_common.egg-info/PKG-INFO +10 -10
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz_api_common.egg-info/SOURCES.txt +6 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz_api_common.egg-info/requires.txt +9 -9
- frequenz_api_common-0.8.11/py/frequenz_api_common.egg-info/scm_file_list.json +150 -0
- frequenz_api_common-0.8.11/py/frequenz_api_common.egg-info/scm_version.json +8 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/pyproject.toml +17 -13
- frequenz_api_common-0.8.9/RELEASE_NOTES.md +0 -15
- frequenz_api_common-0.8.9/proto/frequenz/api/common/v1alpha8/gridpool/gridpool.proto +0 -22
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/LICENSE +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/MANIFEST.in +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/README.md +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/components.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/location.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/metrics/electrical.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/metrics.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1/grid/delivery_area.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1/grid/delivery_duration.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1/location.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1/market/energy.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1/market/power.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1/market/price.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1/metrics/bounds.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1/metrics/metric_sample.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1/microgrid/components/battery.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1/microgrid/components/components.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1/microgrid/components/ev_charger.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1/microgrid/components/fuse.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1/microgrid/components/grid.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1/microgrid/components/inverter.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1/microgrid/components/transformer.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1/microgrid/lifetime.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1/microgrid/microgrid.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1/microgrid/sensors/sensors.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1/pagination/pagination_info.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1/pagination/pagination_params.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1/types/decimal.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha7/grid/delivery_area.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha7/grid/delivery_duration.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha7/market/energy.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha7/market/power.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha7/market/price.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha7/metrics/bounds.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha7/metrics/metrics.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha7/microgrid/communication_components/communication_components.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha7/microgrid/electrical_components/electrical_components.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha7/microgrid/lifetime.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha7/microgrid/microgrid.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha7/microgrid/sensors/sensors.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha7/pagination/pagination_info.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha7/pagination/pagination_params.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha7/type/decimal.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha7/type/interval.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha7/type/location.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha8/grid/balancing_group.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha8/grid/delivery_area.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha8/grid/delivery_duration.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha8/market/energy.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha8/market/market_area.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha8/market/power.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha8/market/price.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha8/metrics/bounds.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha8/metrics/metrics.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha8/microgrid/communication_components/communication_components.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha8/microgrid/electrical_components/electrical_components.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha8/microgrid/lifetime.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha8/microgrid/microgrid.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha8/microgrid/sensors/sensors.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha8/pagination/pagination_info.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha8/pagination/pagination_params.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha8/types/decimal.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha8/types/interval.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha8/types/location.proto +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/__init__.py +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/metrics/__init__.py +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/py.typed +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1/__init__.py +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1/grid/__init__.py +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1/market/__init__.py +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1/metrics/__init__.py +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1/microgrid/__init__.py +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1/microgrid/components/__init__.py +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1/microgrid/sensors/__init__.py +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1/pagination/__init__.py +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1/types/__init__.py +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1alpha7/__init__.py +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1alpha7/grid/__init__.py +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1alpha7/market/__init__.py +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1alpha7/metrics/__init__.py +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1alpha7/microgrid/__init__.py +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1alpha7/microgrid/communication_components/__init__.py +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1alpha7/microgrid/electrical_components/__init__.py +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1alpha7/microgrid/sensors/__init__.py +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1alpha7/pagination/__init__.py +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1alpha7/streaming/__init__.py +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1alpha7/type/__init__.py +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1alpha8/__init__.py +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1alpha8/grid/__init__.py +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1alpha8/gridpool/__init__.py +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1alpha8/market/__init__.py +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1alpha8/metrics/__init__.py +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1alpha8/microgrid/__init__.py +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1alpha8/microgrid/communication_components/__init__.py +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1alpha8/microgrid/electrical_components/__init__.py +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1alpha8/microgrid/sensors/__init__.py +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1alpha8/pagination/__init__.py +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1alpha8/streaming/__init__.py +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1alpha8/types/__init__.py +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz_api_common.egg-info/dependency_links.txt +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz_api_common.egg-info/top_level.txt +0 -0
- {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: frequenz-api-common
|
|
3
|
-
Version: 0.8.
|
|
3
|
+
Version: 0.8.11
|
|
4
4
|
Summary: Frequenz common gRPC API and bindings
|
|
5
5
|
Author-email: Frequenz Energy-as-a-Service GmbH <floss@frequenz.com>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -19,16 +19,16 @@ Requires-Python: <4,>=3.11
|
|
|
19
19
|
Description-Content-Type: text/markdown
|
|
20
20
|
License-File: LICENSE
|
|
21
21
|
Requires-Dist: protobuf<8,>=6.33.6
|
|
22
|
-
Requires-Dist: grpcio<2,>=1.
|
|
22
|
+
Requires-Dist: grpcio<2,>=1.81.1
|
|
23
23
|
Provides-Extra: dev-flake8
|
|
24
24
|
Requires-Dist: flake8==7.3.0; extra == "dev-flake8"
|
|
25
25
|
Requires-Dist: flake8-datetimez==20.10.0; extra == "dev-flake8"
|
|
26
26
|
Requires-Dist: flake8-docstrings==1.7.0; extra == "dev-flake8"
|
|
27
27
|
Requires-Dist: flake8-pyproject==1.2.4; extra == "dev-flake8"
|
|
28
|
-
Requires-Dist: pydoclint==0.
|
|
28
|
+
Requires-Dist: pydoclint==0.9.0; extra == "dev-flake8"
|
|
29
29
|
Requires-Dist: pydocstyle==6.3.0; extra == "dev-flake8"
|
|
30
30
|
Provides-Extra: dev-formatting
|
|
31
|
-
Requires-Dist: black==26.
|
|
31
|
+
Requires-Dist: black==26.5.1; extra == "dev-formatting"
|
|
32
32
|
Requires-Dist: isort==8.0.1; extra == "dev-formatting"
|
|
33
33
|
Provides-Extra: dev-mkdocs
|
|
34
34
|
Requires-Dist: mike==1.1.2; extra == "dev-mkdocs"
|
|
@@ -36,20 +36,20 @@ Requires-Dist: mkdocs-gen-files==0.6.1; extra == "dev-mkdocs"
|
|
|
36
36
|
Requires-Dist: mkdocs-literate-nav==0.6.3; extra == "dev-mkdocs"
|
|
37
37
|
Requires-Dist: mkdocs-material==9.7.6; extra == "dev-mkdocs"
|
|
38
38
|
Requires-Dist: mkdocstrings[python]==1.0.4; extra == "dev-mkdocs"
|
|
39
|
-
Requires-Dist: frequenz-repo-config[api]==0.
|
|
39
|
+
Requires-Dist: frequenz-repo-config[api]==0.18.0; extra == "dev-mkdocs"
|
|
40
40
|
Provides-Extra: dev-mypy
|
|
41
|
-
Requires-Dist: mypy==1.
|
|
41
|
+
Requires-Dist: mypy==2.1.0; extra == "dev-mypy"
|
|
42
42
|
Requires-Dist: grpc-stubs==1.53.0.6; extra == "dev-mypy"
|
|
43
43
|
Requires-Dist: frequenz-api-common[dev-mkdocs,dev-noxfile,dev-pytest]; extra == "dev-mypy"
|
|
44
44
|
Provides-Extra: dev-noxfile
|
|
45
45
|
Requires-Dist: nox==2026.4.10; extra == "dev-noxfile"
|
|
46
|
-
Requires-Dist: frequenz-repo-config[api]==0.
|
|
46
|
+
Requires-Dist: frequenz-repo-config[api]==0.18.0; extra == "dev-noxfile"
|
|
47
47
|
Provides-Extra: dev-pylint
|
|
48
|
-
Requires-Dist: pylint==4.0.
|
|
48
|
+
Requires-Dist: pylint==4.0.6; extra == "dev-pylint"
|
|
49
49
|
Requires-Dist: frequenz-api-common[dev-mkdocs,dev-noxfile,dev-pytest]; extra == "dev-pylint"
|
|
50
50
|
Provides-Extra: dev-pytest
|
|
51
|
-
Requires-Dist: pytest==9.
|
|
52
|
-
Requires-Dist: frequenz-repo-config[extra-lint-examples]==0.
|
|
51
|
+
Requires-Dist: pytest==9.1.1; extra == "dev-pytest"
|
|
52
|
+
Requires-Dist: frequenz-repo-config[extra-lint-examples]==0.18.0; extra == "dev-pytest"
|
|
53
53
|
Provides-Extra: dev
|
|
54
54
|
Requires-Dist: frequenz-api-common[dev-flake8,dev-formatting,dev-mkdocs,dev-mypy,dev-noxfile,dev-pylint,dev-pytest]; extra == "dev"
|
|
55
55
|
Dynamic: license-file
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Frequenz Common API Release Notes
|
|
2
|
+
|
|
3
|
+
## Summary
|
|
4
|
+
|
|
5
|
+
This release renames the `MarketLocation` message to `MarketLocationRef`.
|
|
6
|
+
|
|
7
|
+
## Upgrading
|
|
8
|
+
|
|
9
|
+
Replace uses of `frequenz.api.common.v1alpha8.grid.MarketLocation` with
|
|
10
|
+
`frequenz.api.common.v1alpha8.grid.MarketLocationRef`.
|
|
@@ -15,12 +15,12 @@ enum Event {
|
|
|
15
15
|
// Default, unspecified event
|
|
16
16
|
EVENT_UNSPECIFIED = 0;
|
|
17
17
|
|
|
18
|
-
// A new
|
|
18
|
+
// A new resource has been created
|
|
19
19
|
EVENT_CREATED = 1;
|
|
20
20
|
|
|
21
|
-
// An existing
|
|
21
|
+
// An existing resource has been updated
|
|
22
22
|
EVENT_UPDATED = 2;
|
|
23
23
|
|
|
24
|
-
// An existing
|
|
24
|
+
// An existing resource has been deleted
|
|
25
25
|
EVENT_DELETED = 3;
|
|
26
26
|
}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
// Frequenz definitions for grid-facing flexibility services.
|
|
2
|
+
//
|
|
3
|
+
// Copyright 2025 Frequenz Energy-as-a-Service GmbH
|
|
4
|
+
//
|
|
5
|
+
// Licensed under the MIT License (the "License");
|
|
6
|
+
// you may not use this file except in compliance with the License.
|
|
7
|
+
|
|
8
|
+
syntax = "proto3";
|
|
9
|
+
|
|
10
|
+
package frequenz.api.common.v1alpha8.grid;
|
|
11
|
+
|
|
12
|
+
// Defines the type of flexibility service associated with a flexibility
|
|
13
|
+
// resource.
|
|
14
|
+
//
|
|
15
|
+
// A flexibility resource can represent an individual asset, an asset group, a
|
|
16
|
+
// microgrid, a Gridpool, or another market-specific aggregation that provides
|
|
17
|
+
// or consumes flexibility.
|
|
18
|
+
//
|
|
19
|
+
// Each service type represents a flexibility service, often corresponding to
|
|
20
|
+
// a market product or grid-operator requirement, with specific rules for
|
|
21
|
+
// activation, delivery, telemetry, and control-signal handling.
|
|
22
|
+
//
|
|
23
|
+
// !!! note "Naming conventions"
|
|
24
|
+
// This enum uses region-neutral terminology and maps it to common
|
|
25
|
+
// flexibility-service names used by grid system operators and market
|
|
26
|
+
// operators in different regions.
|
|
27
|
+
//
|
|
28
|
+
// !!! note "Service behavior"
|
|
29
|
+
// This enum classifies the service type only. Service-specific behavior
|
|
30
|
+
// such as setpoint cadence, ramping windows, activation timing, telemetry
|
|
31
|
+
// requirements, and dispatch method is defined by the service or API that
|
|
32
|
+
// consumes this enum.
|
|
33
|
+
//
|
|
34
|
+
enum FlexServiceType {
|
|
35
|
+
// UNSPECIFIED: Default unspecified value — must not be used.
|
|
36
|
+
FLEX_SERVICE_TYPE_UNSPECIFIED = 0;
|
|
37
|
+
|
|
38
|
+
// PRIMARY: Primary Regulation
|
|
39
|
+
//
|
|
40
|
+
// Also known as:
|
|
41
|
+
// - Frequency Containment Reserve (FCR) [Europe]
|
|
42
|
+
// - Primary Frequency Response [US]
|
|
43
|
+
// - Dynamic Containment [UK]
|
|
44
|
+
//
|
|
45
|
+
// Provides autonomous frequency response within an assigned ΔP capacity band.
|
|
46
|
+
// Participating resources adjust active power locally and in real time based
|
|
47
|
+
// on measured frequency deviations.
|
|
48
|
+
//
|
|
49
|
+
// No centralized real-time dispatch signal is required for activation. The
|
|
50
|
+
// assigned capacity band may be determined by a bid, contract, schedule,
|
|
51
|
+
// or other service commitment.
|
|
52
|
+
//
|
|
53
|
+
// During the provision period, the assigned capacity responsibility may be
|
|
54
|
+
// updated, for example when availability changes or assets are deregistered.
|
|
55
|
+
FLEX_SERVICE_TYPE_PRIMARY = 1;
|
|
56
|
+
|
|
57
|
+
// SECONDARY_POS: Secondary Upward Regulation
|
|
58
|
+
//
|
|
59
|
+
// Also known as:
|
|
60
|
+
// - Automatic Frequency Restoration Reserve Up (aFRR+) [Europe]
|
|
61
|
+
// - Regulation Up [US, PJM]
|
|
62
|
+
// - Dynamic Regulation Up [UK]
|
|
63
|
+
//
|
|
64
|
+
// Supports the grid by increasing net export or reducing net import:
|
|
65
|
+
// - increasing generation or battery discharge,
|
|
66
|
+
// - decreasing consumption or battery charging.
|
|
67
|
+
//
|
|
68
|
+
// Secondary upward regulation is typically activated through recurring
|
|
69
|
+
// explicit control instructions or ΔP setpoints.
|
|
70
|
+
//
|
|
71
|
+
// Unlike primary regulation, activation is signal-based rather than purely
|
|
72
|
+
// autonomous. Participating resources are expected to follow received control
|
|
73
|
+
// instructions within the required ramping and delivery constraints.
|
|
74
|
+
FLEX_SERVICE_TYPE_SECONDARY_POS = 2;
|
|
75
|
+
|
|
76
|
+
// SECONDARY_NEG: Secondary Downward Regulation
|
|
77
|
+
//
|
|
78
|
+
// Also known as:
|
|
79
|
+
// - Automatic Frequency Restoration Reserve Down (aFRR-) [Europe]
|
|
80
|
+
// - Regulation Down / RegD Down [US, PJM]
|
|
81
|
+
// - Dynamic Regulation Down [UK]
|
|
82
|
+
//
|
|
83
|
+
// Supports the grid by reducing net export or increasing net import:
|
|
84
|
+
// - decreasing generation or battery discharge,
|
|
85
|
+
// - increasing consumption or battery charging.
|
|
86
|
+
//
|
|
87
|
+
// Secondary downward regulation is typically activated through recurring
|
|
88
|
+
// explicit control instructions or ΔP setpoints.
|
|
89
|
+
//
|
|
90
|
+
// Unlike primary regulation, activation is signal-based rather than purely
|
|
91
|
+
// autonomous. Participating resources are expected to follow received control
|
|
92
|
+
// instructions within the required ramping and delivery constraints.
|
|
93
|
+
FLEX_SERVICE_TYPE_SECONDARY_NEG = 3;
|
|
94
|
+
|
|
95
|
+
// MANUAL_POS: Manual Upward Reserve
|
|
96
|
+
//
|
|
97
|
+
// Also known as:
|
|
98
|
+
// - mFRR+ / Replacement Reserve Up [Europe]
|
|
99
|
+
// - Contingency Reserve Up [US]
|
|
100
|
+
//
|
|
101
|
+
// Supports the grid by increasing net export or reducing net import:
|
|
102
|
+
// - increasing generation or battery discharge,
|
|
103
|
+
// - decreasing consumption or battery charging.
|
|
104
|
+
//
|
|
105
|
+
// Manual upward reserve is typically activated through explicit control
|
|
106
|
+
// instructions or setpoints.
|
|
107
|
+
//
|
|
108
|
+
// Compared to secondary regulation, activation is usually less frequent and
|
|
109
|
+
// may follow manual, semi-automated, or event-driven operator processes.
|
|
110
|
+
FLEX_SERVICE_TYPE_MANUAL_POS = 4;
|
|
111
|
+
|
|
112
|
+
// MANUAL_NEG: Manual Downward Reserve
|
|
113
|
+
//
|
|
114
|
+
// Also known as:
|
|
115
|
+
// - mFRR– / Replacement Reserve Down [Europe]
|
|
116
|
+
// - Contingency Reserve Down [US]
|
|
117
|
+
//
|
|
118
|
+
// Supports the grid by reducing net export or increasing net import:
|
|
119
|
+
// - decreasing generation or battery discharge,
|
|
120
|
+
// - increasing consumption or battery charging.
|
|
121
|
+
//
|
|
122
|
+
// Manual downward reserve is typically activated through explicit control
|
|
123
|
+
// instructions or setpoints.
|
|
124
|
+
//
|
|
125
|
+
// Compared to secondary regulation, activation is usually less frequent and
|
|
126
|
+
// may follow manual, semi-automated, or event-driven operator processes.
|
|
127
|
+
FLEX_SERVICE_TYPE_MANUAL_NEG = 5;
|
|
128
|
+
|
|
129
|
+
// REPLACEMENT_RESERVE: Replacement Reserve
|
|
130
|
+
//
|
|
131
|
+
// Also known as:
|
|
132
|
+
// - Replacement Reserve (RR) [Europe]
|
|
133
|
+
// - Supplemental Reserve [US]
|
|
134
|
+
//
|
|
135
|
+
// Provides slower reserve capacity to restore operational balance or replace
|
|
136
|
+
// previously activated balancing capacity.
|
|
137
|
+
//
|
|
138
|
+
// Replacement reserve can support the grid in either direction, depending on
|
|
139
|
+
// the relevant market rules or grid-operator requirements:
|
|
140
|
+
// - upward reserve increases net export or reduces net import,
|
|
141
|
+
// - downward reserve reduces net export or increases net import.
|
|
142
|
+
//
|
|
143
|
+
// The activation process and control-instruction semantics are defined by the
|
|
144
|
+
// concrete service rules. Compared to primary and secondary regulation,
|
|
145
|
+
// activation is typically slower and less continuous.
|
|
146
|
+
FLEX_SERVICE_TYPE_REPLACEMENT_RESERVE = 6;
|
|
147
|
+
|
|
148
|
+
// DEMAND: Demand Response
|
|
149
|
+
//
|
|
150
|
+
// Also known as:
|
|
151
|
+
// - Emergency Demand Response
|
|
152
|
+
// - Interruptible Load
|
|
153
|
+
// - Flexible Load or Load Curtailment
|
|
154
|
+
//
|
|
155
|
+
// Provides load-side flexibility by changing consumption in response to
|
|
156
|
+
// market rules, grid-operator requirements, or a specific flexibility
|
|
157
|
+
// service.
|
|
158
|
+
//
|
|
159
|
+
// Demand response most commonly supports the grid by reducing net import:
|
|
160
|
+
// - decreasing consumption,
|
|
161
|
+
// - shifting consumption to another time period,
|
|
162
|
+
// - or temporarily interrupting flexible loads.
|
|
163
|
+
//
|
|
164
|
+
// Some demand-response products may also support increasing net import, for
|
|
165
|
+
// example to absorb excess generation or relieve local grid constraints.
|
|
166
|
+
//
|
|
167
|
+
// Activation is typically event-based or instruction-based rather than
|
|
168
|
+
// autonomous frequency response. Activation timing, duration, and control
|
|
169
|
+
// behavior are service-specific.
|
|
170
|
+
FLEX_SERVICE_TYPE_DEMAND = 7;
|
|
171
|
+
}
|
|
@@ -142,7 +142,7 @@ message MarketLocationId {
|
|
|
142
142
|
// - UK: MPAN
|
|
143
143
|
// - Australia: NMI
|
|
144
144
|
// - US: ESI-ID
|
|
145
|
-
message
|
|
145
|
+
message MarketLocationRef {
|
|
146
146
|
// Market area in which the Market Location is registered.
|
|
147
147
|
frequenz.api.common.v1alpha8.market.MarketArea market_area = 1;
|
|
148
148
|
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
// Frequenz definitions for provision durations and periods used by
|
|
2
|
+
// grid-facing flexibility services.
|
|
3
|
+
//
|
|
4
|
+
// Copyright 2025 Frequenz Energy-as-a-Service GmbH
|
|
5
|
+
//
|
|
6
|
+
// Licensed under the MIT License (the "License");
|
|
7
|
+
// you may not use this file except in compliance with the License.
|
|
8
|
+
|
|
9
|
+
syntax = "proto3";
|
|
10
|
+
|
|
11
|
+
package frequenz.api.common.v1alpha8.grid;
|
|
12
|
+
|
|
13
|
+
import "google/protobuf/timestamp.proto";
|
|
14
|
+
|
|
15
|
+
// Defines standard provision durations for flexibility services.
|
|
16
|
+
//
|
|
17
|
+
// A provision duration is the duration of a single provision period. In many
|
|
18
|
+
// markets, this corresponds to the delivery block or service interval for which
|
|
19
|
+
// a flexibility service is contracted, committed, or delivered.
|
|
20
|
+
//
|
|
21
|
+
// Provision durations are modeled as an enum because only a fixed set of
|
|
22
|
+
// provision periods is supported by the relevant services, markets, and
|
|
23
|
+
// operator integrations. This makes invalid durations unrepresentable and
|
|
24
|
+
// keeps validation behavior consistent across APIs.
|
|
25
|
+
//
|
|
26
|
+
// !!! note "Duration vs. resolution"
|
|
27
|
+
// This field defines the duration of a single provision period. In market
|
|
28
|
+
// terms, this is often the delivery block or product block for the
|
|
29
|
+
// flexibility service. It does not define the cadence or resolution of
|
|
30
|
+
// telemetry samples, control instructions, or setpoint updates.
|
|
31
|
+
//
|
|
32
|
+
enum ProvisionDuration {
|
|
33
|
+
// UNSPECIFIED: Default value — must not be used in production messages.
|
|
34
|
+
PROVISION_DURATION_UNSPECIFIED = 0;
|
|
35
|
+
|
|
36
|
+
// 5_MIN: 5-minute delivery window (planned for future reconstruction of
|
|
37
|
+
// ancillary service markets).
|
|
38
|
+
PROVISION_DURATION_5_MIN = 1;
|
|
39
|
+
|
|
40
|
+
// 15_MIN: 15-minute delivery window (common in balancing energy markets
|
|
41
|
+
// and secondary regulation).
|
|
42
|
+
PROVISION_DURATION_15_MIN = 2;
|
|
43
|
+
|
|
44
|
+
// 30_MIN: 30-minute delivery block (used in some scheduling or redispatch
|
|
45
|
+
// services).
|
|
46
|
+
PROVISION_DURATION_30_MIN = 3;
|
|
47
|
+
|
|
48
|
+
// 60_MIN: Hourly provision period (e.g., for day-ahead markets or system
|
|
49
|
+
// dispatch).
|
|
50
|
+
PROVISION_DURATION_60_MIN = 4;
|
|
51
|
+
|
|
52
|
+
// 120_MIN: 2-hour blocks, less commonly used but possible in some markets.
|
|
53
|
+
PROVISION_DURATION_120_MIN = 5;
|
|
54
|
+
|
|
55
|
+
// 240_MIN: 4-hour block (e.g., German and EU primary regulation tenders).
|
|
56
|
+
PROVISION_DURATION_240_MIN = 6;
|
|
57
|
+
|
|
58
|
+
// 1440_MIN: Full-day delivery period (e.g., capacity or commitment-based
|
|
59
|
+
// products).
|
|
60
|
+
PROVISION_DURATION_1440_MIN = 7;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// Represents the time period during which the flexibility market contract is
|
|
64
|
+
// delivered.
|
|
65
|
+
//
|
|
66
|
+
// This defines the contractual length of a provision period. Valid start
|
|
67
|
+
// times are determined by the combination of duration, flexibility service,
|
|
68
|
+
// delivery area, and market-specific rules
|
|
69
|
+
//
|
|
70
|
+
message ProvisionPeriod {
|
|
71
|
+
// Start UTC timestamp representing the beginning of the provision period.
|
|
72
|
+
//
|
|
73
|
+
// This timestamp is inclusive. The end of the provision period is derived
|
|
74
|
+
// from `start_time` and `duration`.
|
|
75
|
+
//
|
|
76
|
+
// !!! note "Start Time Constraints"
|
|
77
|
+
// The start time must align with the provision duration and the market
|
|
78
|
+
// rules for the selected `FlexServiceType` and delivery area.
|
|
79
|
+
//
|
|
80
|
+
// Unless stricter market-specific rules apply, the following default
|
|
81
|
+
// alignment is used:
|
|
82
|
+
//
|
|
83
|
+
// - 15-minute durations must start at :00, :15, :30, or :45.
|
|
84
|
+
// - 30-minute durations must start at :00 or :30.
|
|
85
|
+
// - 60-minute durations must start at :00 past the hour.
|
|
86
|
+
// - 120-minute durations must start on an even UTC hour
|
|
87
|
+
// (00:00, 02:00, 04:00, ...).
|
|
88
|
+
// - 240-minute durations must start on a UTC hour divisible by 4
|
|
89
|
+
// (00:00, 04:00, 08:00, 12:00, ...).
|
|
90
|
+
// - 1440-minute durations must start at the daily boundary defined by
|
|
91
|
+
// the relevant market rules for the selected delivery area. If no
|
|
92
|
+
// market-specific rule applies, this defaults to 00:00 UTC.
|
|
93
|
+
//
|
|
94
|
+
// Market-specific rules may further restrict valid start times. For
|
|
95
|
+
// example, a 4-hour product may only support predefined auction blocks,
|
|
96
|
+
// and a full-day product may follow the delivery-day definition of the
|
|
97
|
+
// relevant market.
|
|
98
|
+
google.protobuf.Timestamp start_time = 1;
|
|
99
|
+
|
|
100
|
+
// The length of the provision period.
|
|
101
|
+
ProvisionDuration duration = 2;
|
|
102
|
+
}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
// Frequenz gridpool definition.
|
|
2
|
+
//
|
|
3
|
+
// Copyright 2025 Frequenz Energy-as-a-Service GmbH
|
|
4
|
+
//
|
|
5
|
+
// Licensed under the MIT License (the "License");
|
|
6
|
+
// you may not use this file except in compliance with the License.
|
|
7
|
+
|
|
8
|
+
syntax = "proto3";
|
|
9
|
+
|
|
10
|
+
package frequenz.api.common.v1alpha8.gridpool;
|
|
11
|
+
|
|
12
|
+
// Gridpool contains details of a specific Gridpool.
|
|
13
|
+
//
|
|
14
|
+
// A Gridpool is a virtual balancing, trading, and operating pool. It combines
|
|
15
|
+
// Gridpool members and other position contributions into a unified operational
|
|
16
|
+
// and commercial position.
|
|
17
|
+
//
|
|
18
|
+
// A Gridpool is attached to a parent balancing group, market account, or
|
|
19
|
+
// scheduling entity. Conceptually, it functions as a virtual sub-balancing
|
|
20
|
+
// group: it aggregates measured, forecasted, scheduled, contractual, flexible,
|
|
21
|
+
// and virtual effects into a position that can be forecasted, scheduled,
|
|
22
|
+
// traded, balanced, reported, optimized, or used for flexibility services.
|
|
23
|
+
//
|
|
24
|
+
// A Gridpool does not necessarily have a standalone settlement identity with a
|
|
25
|
+
// grid operator. Physical settlement and imbalance accounting may occur
|
|
26
|
+
// through the parent balancing group, market account, or scheduling entity.
|
|
27
|
+
//
|
|
28
|
+
// Gridpool members are explicit assignments of entities or relationships to a
|
|
29
|
+
// Gridpool. Members describe what belongs to the Gridpool structurally. They
|
|
30
|
+
// may include:
|
|
31
|
+
//
|
|
32
|
+
// • Market Locations: market-facing metering or settlement points
|
|
33
|
+
// representing consumption, generation, import, export, or other
|
|
34
|
+
// market-relevant energy flows.
|
|
35
|
+
// • Microgrids: single-site energy systems containing multiple assets, such
|
|
36
|
+
// as batteries, PV, generators, flexible loads, or other controllable
|
|
37
|
+
// components, typically operated through a local edge controller.
|
|
38
|
+
// • FlexClusters or distributed flexible asset groups: distributed pools of
|
|
39
|
+
// flexible assets, such as stand-alone batteries, home storage systems,
|
|
40
|
+
// PV-battery deployments, EV chargers, or other controllable assets.
|
|
41
|
+
//
|
|
42
|
+
// Gridpool contributions describe how members or other inputs affect the
|
|
43
|
+
// Gridpool's operational, commercial, balance-relevant, or tradable position.
|
|
44
|
+
// Contributions may include:
|
|
45
|
+
//
|
|
46
|
+
// • measured consumption or generation from Market Locations,
|
|
47
|
+
// • flexibility availability from Microgrids or distributed flexible assets,
|
|
48
|
+
// • energy transfer schedules,
|
|
49
|
+
// • contractual positions,
|
|
50
|
+
// • and virtual contributions.
|
|
51
|
+
//
|
|
52
|
+
// A Gridpool member does not necessarily contribute to every service,
|
|
53
|
+
// direction, or time period. For example, a Microgrid may provide
|
|
54
|
+
// flexibility without having an export Market Location managed by Frequenz,
|
|
55
|
+
// or a Market Location may contribute measured consumption without
|
|
56
|
+
// providing controllable flexibility.
|
|
57
|
+
//
|
|
58
|
+
// Virtual contributions are synthetic or model-derived volumes used for
|
|
59
|
+
// forecasting, strategy development, hedging, or virtual trading. They do not
|
|
60
|
+
// correspond to physical assets, Microgrids, or Market Locations and are
|
|
61
|
+
// independent of the physical flexibility range of the Gridpool. A Gridpool may
|
|
62
|
+
// therefore have virtual contributions even if it has no physical contributors
|
|
63
|
+
// for a specific service or time period.
|
|
64
|
+
//
|
|
65
|
+
// Gridpools bring physical, contractual, flexible, scheduled, and virtual
|
|
66
|
+
// contributions together into a single position:
|
|
67
|
+
//
|
|
68
|
+
// ```text
|
|
69
|
+
// Parent Balancing Group / Market Account / Scheduling Entity
|
|
70
|
+
// └── Gridpool (virtual sub-balancing group)
|
|
71
|
+
// ├── Gridpool members (Physical contributors)
|
|
72
|
+
// │ ├── Market Locations (metering or settlement points)
|
|
73
|
+
// │ ├── Microgrids (DER sites such as batteries, PV, generators,
|
|
74
|
+
// │ │ and flexible loads; typically controlled via edge controller)
|
|
75
|
+
// │ └── FlexClusters or distributed flexible asset groups
|
|
76
|
+
// ├── Scheduled and contractual contributions
|
|
77
|
+
// │ ├── Energy transfer schedules
|
|
78
|
+
// │ └── Contracted positions
|
|
79
|
+
// └── Virtual contributions
|
|
80
|
+
// └── Synthetic or model-derived volumes for forecasting,
|
|
81
|
+
// hedging, strategy development, or virtual trading
|
|
82
|
+
// ```
|
|
83
|
+
//
|
|
84
|
+
// A Gridpool is not a physical site and does not imply a single delivery area.
|
|
85
|
+
// Members and contributions of the same Gridpool may belong to different
|
|
86
|
+
// delivery areas, bidding zones, regional markets, ISO/TSO regions, or nodes.
|
|
87
|
+
//
|
|
88
|
+
// The members and contributions of a Gridpool define its operational, physical,
|
|
89
|
+
// flexible, and financial profile. A Gridpool's aggregated consumption,
|
|
90
|
+
// production, schedules, forecasts, contracts, flexibility, and virtual
|
|
91
|
+
// positions determine its balance-relevant and tradable position.
|
|
92
|
+
//
|
|
93
|
+
// Gridpool members, services, schedules, application variables, and
|
|
94
|
+
// contributor-specific details are modeled as separate resources by APIs
|
|
95
|
+
// that expose Gridpool topology and service configuration.
|
|
96
|
+
//
|
|
97
|
+
message Gridpool {
|
|
98
|
+
// Unique identifier of the Gridpool.
|
|
99
|
+
uint64 id = 1;
|
|
100
|
+
|
|
101
|
+
// Human-readable name of the Gridpool.
|
|
102
|
+
string name = 2;
|
|
103
|
+
}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
// Domain Resource URI definitions used across Frequenz APIs.
|
|
2
|
+
//
|
|
3
|
+
// Resource URIs identify domain resources such as access owners, operators,
|
|
4
|
+
// flexibility groups, control groups, or other resources that participate in
|
|
5
|
+
// energy, flexibility, grid-operation, or market workflows.
|
|
6
|
+
//
|
|
7
|
+
// Copyright 2025 Frequenz Energy-as-a-Service GmbH
|
|
8
|
+
//
|
|
9
|
+
// Licensed under the MIT License (the "License");
|
|
10
|
+
// you may not use this file except in compliance with the License.
|
|
11
|
+
|
|
12
|
+
syntax = "proto3";
|
|
13
|
+
|
|
14
|
+
package frequenz.api.common.v1alpha8.identity;
|
|
15
|
+
|
|
16
|
+
// Classifies the type of resource identified by a `ResourceUri`.
|
|
17
|
+
//
|
|
18
|
+
// The URI scheme identifies the general namespace, while the `type` field
|
|
19
|
+
// provides the domain-specific interpretation. For example, `group://...`
|
|
20
|
+
// identifies a group resource; when used with `RESOURCE_URI_TYPE_FLEX_GROUP`,
|
|
21
|
+
// that group is interpreted as a flexibility group.
|
|
22
|
+
//
|
|
23
|
+
// !!! note "URI scheme vs. resource type"
|
|
24
|
+
// URI schemes and resource types do not need to be one-to-one.
|
|
25
|
+
// For example:
|
|
26
|
+
// - A URI like `access-owner://frequenz` with
|
|
27
|
+
// `RESOURCE_URI_TYPE_ACCESS_OWNER` identifies a flexibility market
|
|
28
|
+
// access owner.
|
|
29
|
+
// - A URI like `operator://50hertz` with
|
|
30
|
+
// `RESOURCE_URI_TYPE_OPERATOR` identifies an operator or control-system
|
|
31
|
+
// authority.
|
|
32
|
+
// - A URI like `group://frequenz/secondary/fsp_q3` with
|
|
33
|
+
// `RESOURCE_URI_TYPE_FLEX_GROUP` identifies a flexibility group.
|
|
34
|
+
//
|
|
35
|
+
enum ResourceUriType {
|
|
36
|
+
// UNSPECIFIED: Default unspecified value — must not be used in production
|
|
37
|
+
// messages.
|
|
38
|
+
RESOURCE_URI_TYPE_UNSPECIFIED = 0;
|
|
39
|
+
|
|
40
|
+
// ACCESS_OWNER: Flexibility market access owner URI.
|
|
41
|
+
//
|
|
42
|
+
// Identifies the entity that holds or represents the market access rights
|
|
43
|
+
// under which flexibility services are offered, activated, or settled.
|
|
44
|
+
//
|
|
45
|
+
// An access owner may define or authorize flexibility groups and may
|
|
46
|
+
// represent microgrids, Gridpools, asset groups, or other flexibility
|
|
47
|
+
// resources toward market operators, grid operators, or flexibility
|
|
48
|
+
// platforms.
|
|
49
|
+
//
|
|
50
|
+
// Depending on the market model, this role may be referred to as a
|
|
51
|
+
// flexibility service provider, balancing service provider, aggregator, or
|
|
52
|
+
// virtual power plant operator. In this API, the generic term is access
|
|
53
|
+
// owner.
|
|
54
|
+
RESOURCE_URI_TYPE_ACCESS_OWNER = 1;
|
|
55
|
+
|
|
56
|
+
// OPERATOR: Operator URI.
|
|
57
|
+
//
|
|
58
|
+
// Identifies an entity or system authorized to operate, coordinate, validate,
|
|
59
|
+
// or issue control instructions for grid-facing or market-facing
|
|
60
|
+
// integrations.
|
|
61
|
+
//
|
|
62
|
+
// An operator may represent a grid operator, market operator, flexibility
|
|
63
|
+
// platform, gateway, or control-system authority. Unlike an access owner, an
|
|
64
|
+
// operator does not necessarily hold flexibility market access rights. It may
|
|
65
|
+
// instead act as the external or internal authority that exchanges setpoints,
|
|
66
|
+
// telemetry, status information, or validation signals with the platform.
|
|
67
|
+
//
|
|
68
|
+
// Typical examples include transmission system operators (TSOs),
|
|
69
|
+
// distribution system operators (DSOs), market operators, flexibility
|
|
70
|
+
// platforms, or gateway systems such as GridLink.
|
|
71
|
+
RESOURCE_URI_TYPE_OPERATOR = 2;
|
|
72
|
+
|
|
73
|
+
// FLEX_GROUP: Flexibility group URI.
|
|
74
|
+
//
|
|
75
|
+
// Identifies a logical group of microgrids or assets that can jointly
|
|
76
|
+
// participate in a flexibility service.
|
|
77
|
+
//
|
|
78
|
+
// !!! note "What is a flexibility group?"
|
|
79
|
+
// A flexibility group represents a logical group of microgrids or assets
|
|
80
|
+
// that can jointly participate in flexibility services.
|
|
81
|
+
//
|
|
82
|
+
// Instruction delivery, telemetry interpretation, and delivery evaluation
|
|
83
|
+
// are determined by the concrete participation context, such as the
|
|
84
|
+
// flexibility group, service type, and provision period.
|
|
85
|
+
//
|
|
86
|
+
// !!! note "Terminology across markets"
|
|
87
|
+
// Different markets use different terms for the concept of a
|
|
88
|
+
// flexibility group:
|
|
89
|
+
// - Europe: "Pool" or "Flexibility Service Provider Group"
|
|
90
|
+
// - US: "Aggregated Resource", "DER Aggregation", "Composite Resource"
|
|
91
|
+
// - UK: "Balancing Unit (BU)", "VLP Group", "Asset Group"
|
|
92
|
+
//
|
|
93
|
+
// !!! note "Examples for flexibility group usage"
|
|
94
|
+
// - A group of microgrids committed together to provide FCR capacity in a
|
|
95
|
+
// specific delivery area.
|
|
96
|
+
// - A group of controllable batteries used to follow an aFRR activation
|
|
97
|
+
// signal as one aggregated flexibility unit.
|
|
98
|
+
// - A group of flexible loads participating in a demand-response product
|
|
99
|
+
// for congestion relief.
|
|
100
|
+
RESOURCE_URI_TYPE_FLEX_GROUP = 3;
|
|
101
|
+
|
|
102
|
+
// GROUP: Generic group URI.
|
|
103
|
+
//
|
|
104
|
+
// Identifies a logical aggregation of assets, microgrids, controllable
|
|
105
|
+
// components, or other resources that are addressed as one unit.
|
|
106
|
+
//
|
|
107
|
+
// A group is intentionally context-neutral. It can be used whenever the API
|
|
108
|
+
// needs to refer to an aggregated resource scope without assigning a specific
|
|
109
|
+
// market, regulatory, or product meaning to that aggregation.
|
|
110
|
+
//
|
|
111
|
+
// !!! note "Generic group vs. flexibility group"
|
|
112
|
+
// Use `RESOURCE_URI_TYPE_GROUP` when the group is merely the addressed
|
|
113
|
+
// scope for telemetry, setpoints, control, routing, status reporting, or
|
|
114
|
+
// another operational interaction.
|
|
115
|
+
//
|
|
116
|
+
// Use `RESOURCE_URI_TYPE_FLEX_GROUP` when the group specifically
|
|
117
|
+
// represents a flexibility-market or provision-registration concept, such
|
|
118
|
+
// as a pool used for bid placement, reserve provisioning, activation, or
|
|
119
|
+
// delivery validation.
|
|
120
|
+
//
|
|
121
|
+
// !!! note "Examples for generic group usage"
|
|
122
|
+
// - A controllable asset group used by GridGuard, such as all batteries,
|
|
123
|
+
// all PV inverters, or another DER subset in a microgrid.
|
|
124
|
+
// - A GridLink routing scope used to exchange telemetry, setpoints,
|
|
125
|
+
// communication status, or activation acknowledgements.
|
|
126
|
+
// - A curtailment or grid-compliance group defined by an operator or
|
|
127
|
+
// control-system integration.
|
|
128
|
+
RESOURCE_URI_TYPE_GROUP = 4;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
// Represents a typed URI to identify a resource in the Frequenz ecosystem.
|
|
132
|
+
//
|
|
133
|
+
// !!! format "Structure"
|
|
134
|
+
// URIs must follow the format:
|
|
135
|
+
// ```
|
|
136
|
+
// <scheme>://<authority>/<path>...
|
|
137
|
+
// ```
|
|
138
|
+
//
|
|
139
|
+
// Examples:
|
|
140
|
+
// - `access-owner://frequenz` → flexibility market access owner
|
|
141
|
+
// - `operator://50hertz` → operator or control-system authority
|
|
142
|
+
// - `group://frequenz/primary/pool-1` → flexibility group
|
|
143
|
+
//
|
|
144
|
+
// !!! example
|
|
145
|
+
// ```
|
|
146
|
+
// ResourceUri {
|
|
147
|
+
// uri: "group://frequenz/secondary/fsp_q3",
|
|
148
|
+
// type: RESOURCE_URI_TYPE_FLEX_GROUP
|
|
149
|
+
// }
|
|
150
|
+
// ```
|
|
151
|
+
//
|
|
152
|
+
message ResourceUri {
|
|
153
|
+
// Full URI string, including scheme, authority, and optional path.
|
|
154
|
+
string uri = 1;
|
|
155
|
+
|
|
156
|
+
// Expected domain-specific resource type for validation.
|
|
157
|
+
//
|
|
158
|
+
// The resource type is used to validate that `uri` identifies the expected
|
|
159
|
+
// kind of resource. For example, a value of `RESOURCE_URI_TYPE_FLEX_GROUP`
|
|
160
|
+
// requires a URI that identifies a flexibility group, such as one using the
|
|
161
|
+
// `group://` scheme according to the URI conventions of this API.
|
|
162
|
+
//
|
|
163
|
+
// This field is intentionally explicit instead of being inferred only from
|
|
164
|
+
// the URI string, so clients and servers can reject mismatches early and make
|
|
165
|
+
// the expected resource category clear in API messages.
|
|
166
|
+
ResourceUriType type = 2;
|
|
167
|
+
}
|
|
@@ -15,12 +15,12 @@ enum Event {
|
|
|
15
15
|
// Default, unspecified event
|
|
16
16
|
EVENT_UNSPECIFIED = 0;
|
|
17
17
|
|
|
18
|
-
// A new
|
|
18
|
+
// A new resource has been created
|
|
19
19
|
EVENT_CREATED = 1;
|
|
20
20
|
|
|
21
|
-
// An existing
|
|
21
|
+
// An existing resource has been updated
|
|
22
22
|
EVENT_UPDATED = 2;
|
|
23
23
|
|
|
24
|
-
// An existing
|
|
24
|
+
// An existing resource has been deleted
|
|
25
25
|
EVENT_DELETED = 3;
|
|
26
26
|
}
|