M8-R08: add atomic meter close and binding transfer

This commit is contained in:
2026-08-24 18:37:46 +02:00
parent 2be4f78f8a
commit 8dc3f71aaf
15 changed files with 1667 additions and 35 deletions
+195
View File
@@ -1777,6 +1777,74 @@
}
}
},
"/api/energy/meters/{meter_id}/close": {
"post": {
"tags": [
"api-energy-meters"
],
"summary": "Close Energy Meter",
"operationId": "close_energy_meter_api_energy_meters__meter_id__close_post",
"parameters": [
{
"name": "meter_id",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"title": "Meter Id"
}
},
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "X-Csrf-Token"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/MeterCloseRequest"
}
}
}
},
"responses": {
"200": {
"description": "Successful Response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/MeterResponse"
}
}
}
},
"422": {
"description": "Validation Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
}
}
}
}
},
"/api/energy/meters/{meter_id}": {
"patch": {
"tags": [
@@ -2497,6 +2565,74 @@
}
}
},
"/api/energy/meters/{meter_id}/bindings/transfer": {
"post": {
"tags": [
"api-energy-meter-sources"
],
"summary": "Post Binding Transfer",
"operationId": "post_binding_transfer_api_energy_meters__meter_id__bindings_transfer_post",
"parameters": [
{
"name": "meter_id",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"title": "Meter Id"
}
},
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "X-Csrf-Token"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BindingTransferRequest"
}
}
}
},
"responses": {
"200": {
"description": "Successful Response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BindingTransferResponse"
}
}
}
},
"422": {
"description": "Validation Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
}
}
}
}
},
"/api/expose": {
"get": {
"tags": [
@@ -3762,6 +3898,50 @@
],
"title": "BindingResponse"
},
"BindingTransferRequest": {
"properties": {
"from_binding_uuid": {
"type": "string",
"maxLength": 36,
"minLength": 1,
"title": "From Binding Uuid"
},
"to_source_channel_uuid": {
"type": "string",
"maxLength": 36,
"minLength": 1,
"title": "To Source Channel Uuid"
},
"effective_at": {
"type": "string",
"format": "date-time",
"title": "Effective At"
}
},
"type": "object",
"required": [
"from_binding_uuid",
"to_source_channel_uuid",
"effective_at"
],
"title": "BindingTransferRequest"
},
"BindingTransferResponse": {
"properties": {
"closed_binding": {
"$ref": "#/components/schemas/BindingResponse"
},
"created_binding": {
"$ref": "#/components/schemas/BindingResponse"
}
},
"type": "object",
"required": [
"closed_binding",
"created_binding"
],
"title": "BindingTransferResponse"
},
"CatalogEntrySchema": {
"properties": {
"entity": {
@@ -4907,6 +5087,21 @@
"title": "MeterBindingSummary",
"description": "Stable, non-sensitive binding identity embedded in meter responses."
},
"MeterCloseRequest": {
"properties": {
"ended_at": {
"type": "string",
"format": "date-time",
"title": "Ended At"
}
},
"type": "object",
"required": [
"ended_at"
],
"title": "MeterCloseRequest",
"description": "Close the active meter epoch at an exclusive end boundary."
},
"MeterCostPeriodSchema": {
"properties": {
"commodity": {