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.
Files changed (120) hide show
  1. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/PKG-INFO +10 -10
  2. frequenz_api_common-0.8.11/RELEASE_NOTES.md +10 -0
  3. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha7/streaming/event.proto +3 -3
  4. frequenz_api_common-0.8.11/proto/frequenz/api/common/v1alpha8/grid/flexibility_service.proto +171 -0
  5. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha8/grid/market_location.proto +1 -1
  6. frequenz_api_common-0.8.11/proto/frequenz/api/common/v1alpha8/grid/provision_duration.proto +102 -0
  7. frequenz_api_common-0.8.11/proto/frequenz/api/common/v1alpha8/gridpool/gridpool.proto +103 -0
  8. frequenz_api_common-0.8.11/proto/frequenz/api/common/v1alpha8/identity/resource_uri.proto +167 -0
  9. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha8/streaming/event.proto +3 -3
  10. frequenz_api_common-0.8.11/py/frequenz/api/common/v1alpha8/identity/__init__.py +4 -0
  11. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz_api_common.egg-info/PKG-INFO +10 -10
  12. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz_api_common.egg-info/SOURCES.txt +6 -0
  13. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz_api_common.egg-info/requires.txt +9 -9
  14. frequenz_api_common-0.8.11/py/frequenz_api_common.egg-info/scm_file_list.json +150 -0
  15. frequenz_api_common-0.8.11/py/frequenz_api_common.egg-info/scm_version.json +8 -0
  16. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/pyproject.toml +17 -13
  17. frequenz_api_common-0.8.9/RELEASE_NOTES.md +0 -15
  18. frequenz_api_common-0.8.9/proto/frequenz/api/common/v1alpha8/gridpool/gridpool.proto +0 -22
  19. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/LICENSE +0 -0
  20. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/MANIFEST.in +0 -0
  21. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/README.md +0 -0
  22. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/components.proto +0 -0
  23. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/location.proto +0 -0
  24. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/metrics/electrical.proto +0 -0
  25. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/metrics.proto +0 -0
  26. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1/grid/delivery_area.proto +0 -0
  27. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1/grid/delivery_duration.proto +0 -0
  28. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1/location.proto +0 -0
  29. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1/market/energy.proto +0 -0
  30. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1/market/power.proto +0 -0
  31. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1/market/price.proto +0 -0
  32. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1/metrics/bounds.proto +0 -0
  33. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1/metrics/metric_sample.proto +0 -0
  34. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1/microgrid/components/battery.proto +0 -0
  35. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1/microgrid/components/components.proto +0 -0
  36. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1/microgrid/components/ev_charger.proto +0 -0
  37. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1/microgrid/components/fuse.proto +0 -0
  38. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1/microgrid/components/grid.proto +0 -0
  39. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1/microgrid/components/inverter.proto +0 -0
  40. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1/microgrid/components/transformer.proto +0 -0
  41. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1/microgrid/lifetime.proto +0 -0
  42. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1/microgrid/microgrid.proto +0 -0
  43. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1/microgrid/sensors/sensors.proto +0 -0
  44. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1/pagination/pagination_info.proto +0 -0
  45. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1/pagination/pagination_params.proto +0 -0
  46. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1/types/decimal.proto +0 -0
  47. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha7/grid/delivery_area.proto +0 -0
  48. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha7/grid/delivery_duration.proto +0 -0
  49. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha7/market/energy.proto +0 -0
  50. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha7/market/power.proto +0 -0
  51. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha7/market/price.proto +0 -0
  52. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha7/metrics/bounds.proto +0 -0
  53. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha7/metrics/metrics.proto +0 -0
  54. {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
  55. {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
  56. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha7/microgrid/lifetime.proto +0 -0
  57. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha7/microgrid/microgrid.proto +0 -0
  58. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha7/microgrid/sensors/sensors.proto +0 -0
  59. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha7/pagination/pagination_info.proto +0 -0
  60. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha7/pagination/pagination_params.proto +0 -0
  61. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha7/type/decimal.proto +0 -0
  62. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha7/type/interval.proto +0 -0
  63. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha7/type/location.proto +0 -0
  64. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha8/grid/balancing_group.proto +0 -0
  65. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha8/grid/delivery_area.proto +0 -0
  66. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha8/grid/delivery_duration.proto +0 -0
  67. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha8/market/energy.proto +0 -0
  68. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha8/market/market_area.proto +0 -0
  69. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha8/market/power.proto +0 -0
  70. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha8/market/price.proto +0 -0
  71. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha8/metrics/bounds.proto +0 -0
  72. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha8/metrics/metrics.proto +0 -0
  73. {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
  74. {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
  75. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha8/microgrid/lifetime.proto +0 -0
  76. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha8/microgrid/microgrid.proto +0 -0
  77. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha8/microgrid/sensors/sensors.proto +0 -0
  78. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha8/pagination/pagination_info.proto +0 -0
  79. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha8/pagination/pagination_params.proto +0 -0
  80. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha8/types/decimal.proto +0 -0
  81. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha8/types/interval.proto +0 -0
  82. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/proto/frequenz/api/common/v1alpha8/types/location.proto +0 -0
  83. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/__init__.py +0 -0
  84. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/metrics/__init__.py +0 -0
  85. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/py.typed +0 -0
  86. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1/__init__.py +0 -0
  87. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1/grid/__init__.py +0 -0
  88. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1/market/__init__.py +0 -0
  89. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1/metrics/__init__.py +0 -0
  90. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1/microgrid/__init__.py +0 -0
  91. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1/microgrid/components/__init__.py +0 -0
  92. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1/microgrid/sensors/__init__.py +0 -0
  93. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1/pagination/__init__.py +0 -0
  94. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1/types/__init__.py +0 -0
  95. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1alpha7/__init__.py +0 -0
  96. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1alpha7/grid/__init__.py +0 -0
  97. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1alpha7/market/__init__.py +0 -0
  98. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1alpha7/metrics/__init__.py +0 -0
  99. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1alpha7/microgrid/__init__.py +0 -0
  100. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1alpha7/microgrid/communication_components/__init__.py +0 -0
  101. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1alpha7/microgrid/electrical_components/__init__.py +0 -0
  102. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1alpha7/microgrid/sensors/__init__.py +0 -0
  103. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1alpha7/pagination/__init__.py +0 -0
  104. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1alpha7/streaming/__init__.py +0 -0
  105. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1alpha7/type/__init__.py +0 -0
  106. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1alpha8/__init__.py +0 -0
  107. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1alpha8/grid/__init__.py +0 -0
  108. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1alpha8/gridpool/__init__.py +0 -0
  109. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1alpha8/market/__init__.py +0 -0
  110. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1alpha8/metrics/__init__.py +0 -0
  111. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1alpha8/microgrid/__init__.py +0 -0
  112. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1alpha8/microgrid/communication_components/__init__.py +0 -0
  113. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1alpha8/microgrid/electrical_components/__init__.py +0 -0
  114. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1alpha8/microgrid/sensors/__init__.py +0 -0
  115. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1alpha8/pagination/__init__.py +0 -0
  116. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1alpha8/streaming/__init__.py +0 -0
  117. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz/api/common/v1alpha8/types/__init__.py +0 -0
  118. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz_api_common.egg-info/dependency_links.txt +0 -0
  119. {frequenz_api_common-0.8.9 → frequenz_api_common-0.8.11}/py/frequenz_api_common.egg-info/top_level.txt +0 -0
  120. {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.9
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.80.0
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.8.3; extra == "dev-flake8"
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.3.1; extra == "dev-formatting"
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.17.0; extra == "dev-mkdocs"
39
+ Requires-Dist: frequenz-repo-config[api]==0.18.0; extra == "dev-mkdocs"
40
40
  Provides-Extra: dev-mypy
41
- Requires-Dist: mypy==1.20.2; extra == "dev-mypy"
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.17.0; extra == "dev-noxfile"
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.5; extra == "dev-pylint"
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.0.3; extra == "dev-pytest"
52
- Requires-Dist: frequenz-repo-config[extra-lint-examples]==0.17.0; extra == "dev-pytest"
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 dispatch has been created
18
+ // A new resource has been created
19
19
  EVENT_CREATED = 1;
20
20
 
21
- // An existing dispatch has been updated
21
+ // An existing resource has been updated
22
22
  EVENT_UPDATED = 2;
23
23
 
24
- // An existing dispatch has been deleted
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 MarketLocation {
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 dispatch has been created
18
+ // A new resource has been created
19
19
  EVENT_CREATED = 1;
20
20
 
21
- // An existing dispatch has been updated
21
+ // An existing resource has been updated
22
22
  EVENT_UPDATED = 2;
23
23
 
24
- // An existing dispatch has been deleted
24
+ // An existing resource has been deleted
25
25
  EVENT_DELETED = 3;
26
26
  }
@@ -0,0 +1,4 @@
1
+ # License: MIT
2
+ # Copyright © 2025 Frequenz Energy-as-a-Service GmbH
3
+
4
+ """Grid bindings for Frequenz common gRPC API."""