{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/api-evangelist/elhub/main/json-schema/elhub-controllable-unit-history-response-schema.json", "title": "controllable_unit_history_response", "description": "Controllable unit - history", "x-generated": "2026-10-09", "x-method": "derived", "x-generator": "derive-json-schema.py", "x-source": "openapi/elhub-flex-information-system-main-api-openapi.yml#/components/schemas/controllable_unit_history_response", "summary": "Controllable unit - history", "properties": { "id": { "description": "Unique surrogate key.", "format": "bigint", "type": "integer", "readOnly": true }, "business_id": { "description": "Unique business identifier for the controllable unit.", "format": "text", "type": "string", "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$", "readOnly": true }, "name": { "description": "Free text name of the controllable unit.", "format": "text", "type": "string", "maxLength": 512 }, "start_date": { "description": "The usage date when the controllable unit is first active.", "format": "date", "type": [ "string", "null" ] }, "status": { "$ref": "#/$defs/controllable_unit_status", "default": "new" }, "regulation_direction": { "$ref": "#/$defs/controllable_unit_regulation_direction" }, "maximum_active_power": { "description": "Maximum continuous active power (flexible power) that the controllable unit can produce or consume, i.e. deliver for balancing and congestion services, in kilowatts.", "format": "decimal", "type": "number", "minimum": 0, "maximum": 999999.999, "multipleOf": 0.001 }, "is_small": { "description": "Whether the controllable unit is small or not, following NCDR. Current threshold for this to be true is <= 50 kW of flexible power.", "format": "boolean", "type": "boolean", "readOnly": true }, "accounting_point_id": { "description": "Reference to the accounting point that the controllable unit is connected to.", "format": "bigint", "type": "integer", "nullable": false }, "additional_information": { "description": "Free text field for extra information about the controllable unit if needed.", "format": "text", "type": [ "string", "null" ] }, "recorded_at": { "description": "When the resource was recorded (created or updated) in the system.", "format": "date-time", "type": "string", "readOnly": true }, "recorded_by": { "description": "The identity that recorded the resource.", "format": "bigint", "type": "integer", "readOnly": true }, "controllable_unit_id": { "description": "Reference to the resource that was updated.", "format": "bigint", "type": "integer" }, "replaced_by": { "description": "The identity that updated the resource when it was replaced.", "format": "bigint", "type": [ "integer", "null" ] }, "replaced_at": { "description": "When the resource was replaced in the system.", "format": "date-time", "type": [ "string", "null" ] }, "suspension_history": { "description": "Embedded controllable_unit_suspension_history", "oneOf": [ { "type": "array", "items": { "$ref": "#/$defs/controllable_unit_suspension_history_response" } }, { "type": "null" } ], "nullable": true }, "service_provider_history": { "description": "Embedded controllable_unit_service_provider_history", "oneOf": [ { "type": "array", "items": { "$ref": "#/$defs/controllable_unit_service_provider_history_response" } }, { "type": "null" } ], "nullable": true }, "service_providing_group_membership_history": { "description": "Embedded service_providing_group_membership_history", "oneOf": [ { "type": "array", "items": { "$ref": "#/$defs/service_providing_group_membership_history_response" } }, { "type": "null" } ], "nullable": true }, "technical_resource_history": { "description": "Embedded technical_resource_history", "oneOf": [ { "type": "array", "items": { "$ref": "#/$defs/technical_resource_history_response" } }, { "type": "null" } ], "nullable": true } }, "required": [ "id", "business_id", "name", "status", "regulation_direction", "maximum_active_power", "is_small", "accounting_point_id", "recorded_at", "recorded_by", "controllable_unit_id" ], "$defs": { "category": { "description": "Resource category classification. Derived from technologies.", "format": "text", "type": "string", "enum": [ "consumption", "production", "energy_storage" ] }, "controllable_unit_history_response": { "summary": "Controllable unit - history", "description": "Controllable unit - history", "properties": { "id": { "description": "Unique surrogate key.", "format": "bigint", "type": "integer", "readOnly": true }, "business_id": { "description": "Unique business identifier for the controllable unit.", "format": "text", "type": "string", "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$", "readOnly": true }, "name": { "description": "Free text name of the controllable unit.", "format": "text", "type": "string", "maxLength": 512 }, "start_date": { "description": "The usage date when the controllable unit is first active.", "format": "date", "type": [ "string", "null" ] }, "status": { "$ref": "#/$defs/controllable_unit_status", "default": "new" }, "regulation_direction": { "$ref": "#/$defs/controllable_unit_regulation_direction" }, "maximum_active_power": { "description": "Maximum continuous active power (flexible power) that the controllable unit can produce or consume, i.e. deliver for balancing and congestion services, in kilowatts.", "format": "decimal", "type": "number", "minimum": 0, "maximum": 999999.999, "multipleOf": 0.001 }, "is_small": { "description": "Whether the controllable unit is small or not, following NCDR. Current threshold for this to be true is <= 50 kW of flexible power.", "format": "boolean", "type": "boolean", "readOnly": true }, "accounting_point_id": { "description": "Reference to the accounting point that the controllable unit is connected to.", "format": "bigint", "type": "integer", "nullable": false }, "additional_information": { "description": "Free text field for extra information about the controllable unit if needed.", "format": "text", "type": [ "string", "null" ] }, "recorded_at": { "description": "When the resource was recorded (created or updated) in the system.", "format": "date-time", "type": "string", "readOnly": true }, "recorded_by": { "description": "The identity that recorded the resource.", "format": "bigint", "type": "integer", "readOnly": true }, "controllable_unit_id": { "description": "Reference to the resource that was updated.", "format": "bigint", "type": "integer" }, "replaced_by": { "description": "The identity that updated the resource when it was replaced.", "format": "bigint", "type": [ "integer", "null" ] }, "replaced_at": { "description": "When the resource was replaced in the system.", "format": "date-time", "type": [ "string", "null" ] }, "suspension_history": { "description": "Embedded controllable_unit_suspension_history", "oneOf": [ { "type": "array", "items": { "$ref": "#/$defs/controllable_unit_suspension_history_response" } }, { "type": "null" } ], "nullable": true }, "service_provider_history": { "description": "Embedded controllable_unit_service_provider_history", "oneOf": [ { "type": "array", "items": { "$ref": "#/$defs/controllable_unit_service_provider_history_response" } }, { "type": "null" } ], "nullable": true }, "service_providing_group_membership_history": { "description": "Embedded service_providing_group_membership_history", "oneOf": [ { "type": "array", "items": { "$ref": "#/$defs/service_providing_group_membership_history_response" } }, { "type": "null" } ], "nullable": true }, "technical_resource_history": { "description": "Embedded technical_resource_history", "oneOf": [ { "type": "array", "items": { "$ref": "#/$defs/technical_resource_history_response" } }, { "type": "null" } ], "nullable": true } }, "required": [ "id", "business_id", "name", "status", "regulation_direction", "maximum_active_power", "is_small", "accounting_point_id", "recorded_at", "recorded_by", "controllable_unit_id" ] }, "controllable_unit_regulation_direction": { "description": "The regulation direction of the controllable unit. `up` means it can be used to increase production or decrease consumption, while `down` means to decrease production or increase consumption.", "format": "text", "type": "string", "enum": [ "up", "down", "both" ] }, "controllable_unit_service_provider_history_response": { "summary": "Relation between controllable unit and service provider - history", "description": "Relation between controllable unit and service provider - history", "properties": { "id": { "description": "Unique surrogate key.", "format": "bigint", "type": "integer", "readOnly": true }, "controllable_unit_id": { "description": "Reference to the controllable unit this relation links to a service provider.", "format": "bigint", "type": "integer" }, "service_provider_id": { "description": "Reference to the `party` (service provider) this relation links to a controllable unit.", "format": "bigint", "type": "integer" }, "end_user_id": { "description": "Technical ID of the end user behind the accounting point.", "format": "bigint", "type": "integer" }, "contract_reference": { "description": "The service providers internal reference to the contract with the end user. Typically an internal identifier to a stored document or consent record.", "format": "text", "type": "string", "maxLength": 128, "nullable": false }, "valid_from": { "description": "The date from which the relation between the controllable unit and the service provider is valid. Midnight aligned on Norwegian timezone.", "format": "date-time", "type": [ "string", "null" ] }, "valid_to": { "description": "The date until which the relation between the controllable unit and the service provider is valid. Midnight aligned on Norwegian timezone.", "format": "date-time", "type": [ "string", "null" ] }, "recorded_at": { "description": "When the resource was recorded (created or updated) in the system.", "format": "date-time", "type": "string", "readOnly": true }, "recorded_by": { "description": "The identity that recorded the resource.", "format": "bigint", "type": "integer", "readOnly": true }, "controllable_unit_service_provider_id": { "description": "Reference to the resource that was updated.", "format": "bigint", "type": "integer" }, "replaced_by": { "description": "The identity that updated the resource when it was replaced.", "format": "bigint", "type": [ "integer", "null" ] }, "replaced_at": { "description": "When the resource was replaced in the system.", "format": "date-time", "type": [ "string", "null" ] }, "controllable_unit_history": { "description": "Embedded controllable_unit_history", "oneOf": [ { "type": "array", "items": { "$ref": "#/$defs/controllable_unit_history_response" } }, { "type": "null" } ], "nullable": true }, "service_provider_history": { "description": "Embedded party_history", "oneOf": [ { "type": "array", "items": { "$ref": "#/$defs/party_history_response" } }, { "type": "null" } ], "nullable": true }, "end_user_history": { "description": "Embedded party_history", "oneOf": [ { "type": "array", "items": { "$ref": "#/$defs/party_history_response" } }, { "type": "null" } ], "nullable": true } }, "required": [ "id", "controllable_unit_id", "service_provider_id", "end_user_id", "contract_reference", "recorded_at", "recorded_by", "controllable_unit_service_provider_id" ] }, "controllable_unit_status": { "description": "The status of the controllable unit.", "format": "text", "type": "string", "default": "new", "enum": [ "new", "active", "inactive", "terminated" ] }, "controllable_unit_suspension_comment_history_response": { "summary": "Controllable Unit Suspension Comment - history", "description": "Controllable Unit Suspension Comment - history", "properties": { "id": { "description": "Unique surrogate identifier.", "format": "bigint", "type": "integer", "readOnly": true }, "controllable_unit_suspension_id": { "description": "Reference to the controllable unit suspension.", "format": "bigint", "type": "integer" }, "created_by": { "description": "Reference to the identity that created the comment.", "format": "bigint", "type": "integer", "readOnly": true }, "created_at": { "description": "When the comment was added to the CUS.", "format": "date-time", "type": "string", "readOnly": true }, "visibility": { "$ref": "#/$defs/controllable_unit_suspension_comment_visibility", "default": "same_party" }, "content": { "description": "Free text content of the comment.", "format": "text", "type": "string", "maxLength": 2048 }, "recorded_at": { "description": "When the resource was recorded (created or updated) in the system.", "format": "date-time", "type": "string", "readOnly": true }, "recorded_by": { "description": "The identity that recorded the resource.", "format": "bigint", "type": "integer", "readOnly": true }, "controllable_unit_suspension_comment_id": { "description": "Reference to the resource that was updated.", "format": "bigint", "type": "integer" }, "replaced_by": { "description": "The identity that updated the resource when it was replaced.", "format": "bigint", "type": [ "integer", "null" ] }, "replaced_at": { "description": "When the resource was replaced in the system.", "format": "date-time", "type": [ "string", "null" ] }, "controllable_unit_suspension_history": { "description": "Embedded controllable_unit_suspension_history", "oneOf": [ { "type": "array", "items": { "$ref": "#/$defs/controllable_unit_suspension_history_response" } }, { "type": "null" } ], "nullable": true } }, "required": [ "id", "controllable_unit_suspension_id", "created_by", "created_at", "visibility", "content", "recorded_at", "recorded_by", "controllable_unit_suspension_comment_id" ] }, "controllable_unit_suspension_comment_visibility": { "description": "The level of visibility of the comment.", "format": "text", "type": "string", "default": "same_party", "enum": [ "same_party", "any_involved_party" ] }, "controllable_unit_suspension_history_response": { "summary": "Controllable Unit Suspension - history", "description": "Controllable Unit Suspension - history", "properties": { "id": { "description": "Unique surrogate identifier.", "format": "bigint", "type": "integer", "readOnly": true }, "controllable_unit_id": { "description": "Reference to the suspended controllable unit.", "format": "bigint", "type": "integer" }, "impacted_system_operator_id": { "description": "Reference to the impacted system operator suspending the controllable unit.", "format": "bigint", "type": "integer" }, "reason": { "$ref": "#/$defs/controllable_unit_suspension_reason" }, "recorded_at": { "description": "When the resource was recorded (created or updated) in the system.", "format": "date-time", "type": "string", "readOnly": true }, "recorded_by": { "description": "The identity that recorded the resource.", "format": "bigint", "type": "integer", "readOnly": true }, "controllable_unit_suspension_id": { "description": "Reference to the resource that was updated.", "format": "bigint", "type": "integer" }, "replaced_by": { "description": "The identity that updated the resource when it was replaced.", "format": "bigint", "type": [ "integer", "null" ] }, "replaced_at": { "description": "When the resource was replaced in the system.", "format": "date-time", "type": [ "string", "null" ] }, "controllable_unit_history": { "description": "Embedded controllable_unit_history", "oneOf": [ { "type": "array", "items": { "$ref": "#/$defs/controllable_unit_history_response" } }, { "type": "null" } ], "nullable": true }, "impacted_system_operator_history": { "description": "Embedded party_history", "oneOf": [ { "type": "array", "items": { "$ref": "#/$defs/party_history_response" } }, { "type": "null" } ], "nullable": true }, "comment_history": { "description": "Embedded controllable_unit_suspension_comment_history", "oneOf": [ { "type": "array", "items": { "$ref": "#/$defs/controllable_unit_suspension_comment_history_response" } }, { "type": "null" } ], "nullable": true } }, "required": [ "id", "controllable_unit_id", "impacted_system_operator_id", "reason", "recorded_at", "recorded_by", "controllable_unit_suspension_id" ] }, "controllable_unit_suspension_reason": { "description": "The reason for the suspension.", "format": "text", "type": "string", "enum": [ "compromises_safe_operation", "other" ] }, "device_type": { "description": "Type of device for technical resources.", "format": "text", "type": "string", "enum": [ "inverter", "boiler", "water_heater", "socket", "hvac", "ev_charging_device", "energy_management_system", "other" ] }, "party_business_id_type": { "description": "The type of the business identifier.", "format": "text", "type": "string", "default": "uuid", "enum": [ "gln", "uuid", "eic_x", "org" ] }, "party_history_response": { "summary": "Party - history", "description": "Party - history", "properties": { "id": { "description": "Unique surrogate identifier.", "format": "bigint", "type": "integer", "readOnly": true }, "business_id": { "description": "The business identifier of the party. Format depends on `business_id_type`.", "format": "text", "type": "string" }, "business_id_type": { "$ref": "#/$defs/party_business_id_type", "default": "uuid" }, "entity_id": { "description": "Reference to the entity that is the parent of the party.", "format": "bigint", "type": "integer" }, "name": { "description": "Name of the party. Maximum 128 characters.", "format": "text", "type": "string" }, "role": { "$ref": "#/$defs/party_role" }, "type": { "$ref": "#/$defs/party_type" }, "status": { "$ref": "#/$defs/party_status", "default": "new" }, "recorded_at": { "description": "When the resource was recorded (created or updated) in the system.", "format": "date-time", "type": "string", "readOnly": true }, "recorded_by": { "description": "The identity that recorded the resource.", "format": "bigint", "type": "integer", "readOnly": true }, "party_id": { "description": "Reference to the resource that was updated.", "format": "bigint", "type": "integer" }, "replaced_by": { "description": "The identity that updated the resource when it was replaced.", "format": "bigint", "type": [ "integer", "null" ] }, "replaced_at": { "description": "When the resource was replaced in the system.", "format": "date-time", "type": [ "string", "null" ] } }, "required": [ "id", "business_id", "business_id_type", "entity_id", "name", "role", "type", "status", "recorded_at", "recorded_by", "party_id" ] }, "party_role": { "description": "The role of the party. Currently maps to 1:1 to `type`. E.g. system_operator, service_provider.", "format": "text", "type": "string", "enum": [ "flex_balance_responsible_party", "flex_end_user", "flex_energy_supplier", "flex_flexibility_information_system_operator", "flex_market_operator", "flex_organisation", "flex_service_provider", "flex_system_operator", "flex_third_party" ] }, "party_status": { "description": "The status of the party.", "format": "text", "type": "string", "default": "new", "enum": [ "new", "active", "inactive", "suspended", "terminated" ] }, "party_type": { "description": "The type of the party, e.g SystemOperator, ServiceProvider", "format": "text", "type": "string", "enum": [ "balance_responsible_party", "end_user", "energy_supplier", "flexibility_information_system_operator", "market_operator", "organisation", "service_provider", "system_operator", "third_party" ] }, "service_providing_group_bidding_zone": { "description": "The bidding zone that restricts which CUs that can be added to the group. Also known as scheduling area or price area for TSO.", "format": "text", "type": "string", "enum": [ "NO1", "NO2", "NO3", "NO4", "NO5" ] }, "service_providing_group_grid_prequalification_comment_history_response": { "summary": "Grid prequalification for service providing group Comment - history", "description": "Grid prequalification for service providing group Comment - history", "properties": { "id": { "description": "Unique surrogate identifier.", "format": "bigint", "type": "integer", "readOnly": true }, "service_providing_group_grid_prequalification_id": { "description": "Reference to the service providing group grid prequalification.", "format": "bigint", "type": "integer" }, "created_by": { "description": "Reference to the identity that created the comment.", "format": "bigint", "type": "integer", "readOnly": true }, "created_at": { "description": "When the comment was added to the SPGGP.", "format": "date-time", "type": "string", "readOnly": true }, "visibility": { "$ref": "#/$defs/service_providing_group_grid_prequalification_comment_visibility", "default": "same_party" }, "content": { "description": "Free text content of the comment.", "format": "text", "type": "string", "maxLength": 2048 }, "recorded_at": { "description": "When the resource was recorded (created or updated) in the system.", "format": "date-time", "type": "string", "readOnly": true }, "recorded_by": { "description": "The identity that recorded the resource.", "format": "bigint", "type": "integer", "readOnly": true }, "service_providing_group_grid_prequalification_comment_id": { "description": "Reference to the resource that was updated.", "format": "bigint", "type": "integer" }, "replaced_by": { "description": "The identity that updated the resource when it was replaced.", "format": "bigint", "type": [ "integer", "null" ] }, "replaced_at": { "description": "When the resource was replaced in the system.", "format": "date-time", "type": [ "string", "null" ] }, "service_providing_group_grid_prequalification_history": { "description": "Embedded service_providing_group_grid_prequalification_history", "oneOf": [ { "type": "array", "items": { "$ref": "#/$defs/service_providing_group_grid_prequalification_history_response" } }, { "type": "null" } ], "nullable": true } }, "required": [ "id", "service_providing_group_grid_prequalification_id", "created_by", "created_at", "visibility", "content", "recorded_at", "recorded_by", "service_providing_group_grid_prequalification_comment_id" ] }, "service_providing_group_grid_prequalification_comment_visibility": { "description": "The level of visibility of the comment.", "format": "text", "type": "string", "default": "same_party", "enum": [ "same_party", "any_involved_party" ] }, "service_providing_group_grid_prequalification_history_response": { "summary": "Grid prequalification for service providing group - history", "description": "Grid prequalification for service providing group - history", "properties": { "id": { "description": "Unique surrogate key.", "format": "bigint", "type": "integer", "readOnly": true }, "service_providing_group_id": { "description": "Reference to the service providing group whose grid prequalification is tracked by the current resource.", "format": "bigint", "type": "integer" }, "impacted_system_operator_id": { "description": "Reference to the `party` that is the impacted system operator.", "format": "bigint", "type": "integer" }, "status": { "$ref": "#/$defs/service_providing_group_grid_prequalification_status", "default": "requested" }, "prequalified_at": { "description": "When the current grid prequalification was last approved.", "format": "date-time", "type": [ "string", "null" ] }, "recorded_at": { "description": "When the resource was recorded (created or updated) in the system.", "format": "date-time", "type": "string", "readOnly": true }, "recorded_by": { "description": "The identity that recorded the resource.", "format": "bigint", "type": "integer", "readOnly": true }, "service_providing_group_grid_prequalification_id": { "description": "Reference to the resource that was updated.", "format": "bigint", "type": "integer" }, "replaced_by": { "description": "The identity that updated the resource when it was replaced.", "format": "bigint", "type": [ "integer", "null" ] }, "replaced_at": { "description": "When the resource was replaced in the system.", "format": "date-time", "type": [ "string", "null" ] }, "service_providing_group_history": { "description": "Embedded service_providing_group_history", "oneOf": [ { "type": "array", "items": { "$ref": "#/$defs/service_providing_group_history_response" } }, { "type": "null" } ], "nullable": true }, "impacted_system_operator_history": { "description": "Embedded party_history", "oneOf": [ { "type": "array", "items": { "$ref": "#/$defs/party_history_response" } }, { "type": "null" } ], "nullable": true }, "comment_history": { "description": "Embedded service_providing_group_grid_prequalification_comment_history", "oneOf": [ { "type": "array", "items": { "$ref": "#/$defs/service_providing_group_grid_prequalification_comment_history_response" } }, { "type": "null" } ], "nullable": true } }, "required": [ "id", "service_providing_group_id", "impacted_system_operator_id", "status", "recorded_at", "recorded_by", "service_providing_group_grid_prequalification_id" ] }, "service_providing_group_grid_prequalification_status": { "description": "The status of the grid prequalification for this service providing group.", "format": "text", "type": "string", "default": "requested", "enum": [ "requested", "in_progress", "conditionally_approved", "approved", "not_approved" ] }, "service_providing_group_grid_suspension_comment_history_response": { "summary": "Service Providing Group Grid Suspension Comment - history", "description": "Service Providing Group Grid Suspension Comment - history", "properties": { "id": { "description": "Unique surrogate identifier.", "format": "bigint", "type": "integer", "readOnly": true }, "service_providing_group_grid_suspension_id": { "description": "Reference to the service providing group grid suspension.", "format": "bigint", "type": "integer" }, "created_by": { "description": "Reference to the identity that created the comment.", "format": "bigint", "type": "integer", "readOnly": true }, "created_at": { "description": "When the comment was added to the SPGGS.", "format": "date-time", "type": "string", "readOnly": true }, "visibility": { "$ref": "#/$defs/service_providing_group_grid_suspension_comment_visibility", "default": "same_party" }, "content": { "description": "Free text content of the comment.", "format": "text", "type": "string", "maxLength": 2048 }, "recorded_at": { "description": "When the resource was recorded (created or updated) in the system.", "format": "date-time", "type": "string", "readOnly": true }, "recorded_by": { "description": "The identity that recorded the resource.", "format": "bigint", "type": "integer", "readOnly": true }, "service_providing_group_grid_suspension_comment_id": { "description": "Reference to the resource that was updated.", "format": "bigint", "type": "integer" }, "replaced_by": { "description": "The identity that updated the resource when it was replaced.", "format": "bigint", "type": [ "integer", "null" ] }, "replaced_at": { "description": "When the resource was replaced in the system.", "format": "date-time", "type": [ "string", "null" ] }, "service_providing_group_grid_suspension_history": { "description": "Embedded service_providing_group_grid_suspension_history", "oneOf": [ { "type": "array", "items": { "$ref": "#/$defs/service_providing_group_grid_suspension_history_response" } }, { "type": "null" } ], "nullable": true } }, "required": [ "id", "service_providing_group_grid_suspension_id", "created_by", "created_at", "visibility", "content", "recorded_at", "recorded_by", "service_providing_group_grid_suspension_comment_id" ] }, "service_providing_group_grid_suspension_comment_visibility": { "description": "The level of visibility of the comment.", "format": "text", "type": "string", "default": "same_party", "enum": [ "same_party", "any_involved_party" ] }, "service_providing_group_grid_suspension_history_response": { "summary": "Service Providing Group Grid Suspension - history", "description": "Service Providing Group Grid Suspension - history", "properties": { "id": { "description": "Unique surrogate identifier.", "format": "bigint", "type": "integer", "readOnly": true }, "impacted_system_operator_id": { "description": "Reference to the impacted system operator suspending the service providing group.", "format": "bigint", "type": "integer" }, "service_providing_group_id": { "description": "Reference to the service providing group being suspended.", "format": "bigint", "type": "integer" }, "reason": { "$ref": "#/$defs/service_providing_group_grid_suspension_reason" }, "recorded_at": { "description": "When the resource was recorded (created or updated) in the system.", "format": "date-time", "type": "string", "readOnly": true }, "recorded_by": { "description": "The identity that recorded the resource.", "format": "bigint", "type": "integer", "readOnly": true }, "service_providing_group_grid_suspension_id": { "description": "Reference to the resource that was updated.", "format": "bigint", "type": "integer" }, "replaced_by": { "description": "The identity that updated the resource when it was replaced.", "format": "bigint", "type": [ "integer", "null" ] }, "replaced_at": { "description": "When the resource was replaced in the system.", "format": "date-time", "type": [ "string", "null" ] }, "impacted_system_operator_history": { "description": "Embedded party_history", "oneOf": [ { "type": "array", "items": { "$ref": "#/$defs/party_history_response" } }, { "type": "null" } ], "nullable": true }, "service_providing_group_history": { "description": "Embedded service_providing_group_history", "oneOf": [ { "type": "array", "items": { "$ref": "#/$defs/service_providing_group_history_response" } }, { "type": "null" } ], "nullable": true }, "comment_history": { "description": "Embedded service_providing_group_grid_suspension_comment_history", "oneOf": [ { "type": "array", "items": { "$ref": "#/$defs/service_providing_group_grid_suspension_comment_history_response" } }, { "type": "null" } ], "nullable": true } }, "required": [ "id", "impacted_system_operator_id", "service_providing_group_id", "reason", "recorded_at", "recorded_by", "service_providing_group_grid_suspension_id" ] }, "service_providing_group_grid_suspension_reason": { "description": "The reason for the suspension.", "format": "text", "type": "string", "enum": [ "breach_of_conditions", "significant_group_change", "other" ] }, "service_providing_group_history_response": { "summary": "Service providing group - history", "description": "Service providing group - history", "properties": { "id": { "description": "Unique surrogate key.", "format": "bigint", "type": "integer", "readOnly": true }, "name": { "description": "Free text name of the service providing group.", "format": "text", "type": "string", "maxLength": 128 }, "service_provider_id": { "description": "Reference to the `party` (service provider) managing the group.", "format": "bigint", "type": "integer" }, "bidding_zone": { "$ref": "#/$defs/service_providing_group_bidding_zone" }, "status": { "$ref": "#/$defs/service_providing_group_status", "default": "new" }, "additional_information": { "description": "Free text field for extra information about the service providing group if needed.", "format": "text", "type": [ "string", "null" ] }, "created_at": { "description": "When the service providing group was first created.", "format": "date-time", "type": "string", "readOnly": true }, "recorded_at": { "description": "When the resource was recorded (created or updated) in the system.", "format": "date-time", "type": "string", "readOnly": true }, "recorded_by": { "description": "The identity that recorded the resource.", "format": "bigint", "type": "integer", "readOnly": true }, "service_providing_group_id": { "description": "Reference to the resource that was updated.", "format": "bigint", "type": "integer" }, "replaced_by": { "description": "The identity that updated the resource when it was replaced.", "format": "bigint", "type": [ "integer", "null" ] }, "replaced_at": { "description": "When the resource was replaced in the system.", "format": "date-time", "type": [ "string", "null" ] }, "service_provider_history": { "description": "Embedded party_history", "oneOf": [ { "type": "array", "items": { "$ref": "#/$defs/party_history_response" } }, { "type": "null" } ], "nullable": true }, "membership_history": { "description": "Embedded service_providing_group_membership_history", "oneOf": [ { "type": "array", "items": { "$ref": "#/$defs/service_providing_group_membership_history_response" } }, { "type": "null" } ], "nullable": true }, "grid_prequalification_history": { "description": "Embedded service_providing_group_grid_prequalification_history", "oneOf": [ { "type": "array", "items": { "$ref": "#/$defs/service_providing_group_grid_prequalification_history_response" } }, { "type": "null" } ], "nullable": true }, "grid_suspension_history": { "description": "Embedded service_providing_group_grid_suspension_history", "oneOf": [ { "type": "array", "items": { "$ref": "#/$defs/service_providing_group_grid_suspension_history_response" } }, { "type": "null" } ], "nullable": true }, "product_application_history": { "description": "Embedded service_providing_group_product_application_history", "oneOf": [ { "type": "array", "items": { "$ref": "#/$defs/service_providing_group_product_application_history_response" } }, { "type": "null" } ], "nullable": true }, "product_suspension_history": { "description": "Embedded service_providing_group_product_suspension_history", "oneOf": [ { "type": "array", "items": { "$ref": "#/$defs/service_providing_group_product_suspension_history_response" } }, { "type": "null" } ], "nullable": true } }, "required": [ "id", "name", "service_provider_id", "bidding_zone", "status", "created_at", "recorded_at", "recorded_by", "service_providing_group_id" ] }, "service_providing_group_membership_history_response": { "summary": "Membership relation of controllable unit in service providing group - history", "description": "Membership relation of controllable unit in service providing group - history", "properties": { "id": { "description": "Unique surrogate key.", "format": "bigint", "type": "integer", "readOnly": true }, "controllable_unit_id": { "description": "Reference to the controllable unit this relation links to a service providing group.", "format": "bigint", "type": "integer" }, "service_providing_group_id": { "description": "Reference to the service providing group this relation links to a controllable unit.", "format": "bigint", "type": "integer" }, "valid_from": { "description": "The date from which the relation between the controllable unit and the service providing group is valid. Midnight aligned on Norwegian timezone.", "format": "date-time", "type": "string" }, "valid_to": { "description": "The date until which the relation between the controllable unit and the service providing group is valid. Midnight aligned on Norwegian timezone.", "format": "date-time", "type": [ "string", "null" ] }, "recorded_at": { "description": "When the resource was recorded (created or updated) in the system.", "format": "date-time", "type": "string", "readOnly": true }, "recorded_by": { "description": "The identity that recorded the resource.", "format": "bigint", "type": "integer", "readOnly": true }, "service_providing_group_membership_id": { "description": "Reference to the resource that was updated.", "format": "bigint", "type": "integer" }, "replaced_by": { "description": "The identity that updated the resource when it was replaced.", "format": "bigint", "type": [ "integer", "null" ] }, "replaced_at": { "description": "When the resource was replaced in the system.", "format": "date-time", "type": [ "string", "null" ] }, "controllable_unit_history": { "description": "Embedded controllable_unit_history", "oneOf": [ { "type": "array", "items": { "$ref": "#/$defs/controllable_unit_history_response" } }, { "type": "null" } ], "nullable": true }, "service_providing_group_history": { "description": "Embedded service_providing_group_history", "oneOf": [ { "type": "array", "items": { "$ref": "#/$defs/service_providing_group_history_response" } }, { "type": "null" } ], "nullable": true } }, "required": [ "id", "controllable_unit_id", "service_providing_group_id", "valid_from", "recorded_at", "recorded_by", "service_providing_group_membership_id" ] }, "service_providing_group_product_application_attachment_content_type": { "description": "MIME type of the attachment.", "format": "text", "type": "string", "enum": [ "application/pdf", "image/jpeg", "image/png" ] }, "service_providing_group_product_application_attachment_history_response": { "summary": "Service Providing Group Product Application Attachment - history", "description": "Service Providing Group Product Application Attachment - history", "properties": { "id": { "description": "Unique surrogate identifier.", "format": "bigint", "type": "integer", "readOnly": true }, "service_providing_group_product_application_id": { "description": "Reference to the service providing group product application.", "format": "bigint", "type": "integer" }, "object_id": { "description": "Identifier of the object to which the attachment is linked.", "format": "text", "type": "string" }, "filename": { "description": "Original filename of the attachment.", "format": "text", "type": "string" }, "filename_sanitised": { "description": "Sanitised filename safe for storage.", "format": "text", "type": "string" }, "content_type": { "$ref": "#/$defs/service_providing_group_product_application_attachment_content_type" }, "size_bytes": { "description": "Size of the attachment in bytes.", "format": "bigint", "type": "integer" }, "recorded_at": { "description": "When the resource was recorded (created or updated) in the system.", "format": "date-time", "type": "string", "readOnly": true }, "recorded_by": { "description": "The identity that recorded the resource.", "format": "bigint", "type": "integer", "readOnly": true }, "service_providing_group_product_application_attachment_id": { "description": "Reference to the resource that was updated.", "format": "bigint", "type": "integer" }, "replaced_by": { "description": "The identity that updated the resource when it was replaced.", "format": "bigint", "type": [ "integer", "null" ] }, "replaced_at": { "description": "When the resource was replaced in the system.", "format": "date-time", "type": [ "string", "null" ] }, "service_providing_group_product_application_history": { "description": "Embedded service_providing_group_product_application_history", "oneOf": [ { "type": "array", "items": { "$ref": "#/$defs/service_providing_group_product_application_history_response" } }, { "type": "null" } ], "nullable": true } }, "required": [ "id", "service_providing_group_product_application_id", "object_id", "filename", "filename_sanitised", "content_type", "size_bytes", "recorded_at", "recorded_by", "service_providing_group_product_application_attachment_id" ] }, "service_providing_group_product_application_comment_history_response": { "summary": "Service Providing Group Product Application Comment - history", "description": "Service Providing Group Product Application Comment - history", "properties": { "id": { "description": "Unique surrogate identifier.", "format": "bigint", "type": "integer", "readOnly": true }, "service_providing_group_product_application_id": { "description": "Reference to the service providing group product application.", "format": "bigint", "type": "integer" }, "created_by": { "description": "Reference to the identity that created the comment.", "format": "bigint", "type": "integer", "readOnly": true }, "created_at": { "description": "When the comment was added to the SPGPA.", "format": "date-time", "type": "string", "readOnly": true }, "visibility": { "$ref": "#/$defs/service_providing_group_product_application_comment_visibility", "default": "same_party" }, "content": { "description": "Free text content of the comment.", "format": "text", "type": "string", "maxLength": 2048 }, "recorded_at": { "description": "When the resource was recorded (created or updated) in the system.", "format": "date-time", "type": "string", "readOnly": true }, "recorded_by": { "description": "The identity that recorded the resource.", "format": "bigint", "type": "integer", "readOnly": true }, "service_providing_group_product_application_comment_id": { "description": "Reference to the resource that was updated.", "format": "bigint", "type": "integer" }, "replaced_by": { "description": "The identity that updated the resource when it was replaced.", "format": "bigint", "type": [ "integer", "null" ] }, "replaced_at": { "description": "When the resource was replaced in the system.", "format": "date-time", "type": [ "string", "null" ] }, "service_providing_group_product_application_history": { "description": "Embedded service_providing_group_product_application_history", "oneOf": [ { "type": "array", "items": { "$ref": "#/$defs/service_providing_group_product_application_history_response" } }, { "type": "null" } ], "nullable": true } }, "required": [ "id", "service_providing_group_product_application_id", "created_by", "created_at", "visibility", "content", "recorded_at", "recorded_by", "service_providing_group_product_application_comment_id" ] }, "service_providing_group_product_application_comment_visibility": { "description": "The level of visibility of the comment.", "format": "text", "type": "string", "default": "same_party", "enum": [ "same_party", "any_involved_party" ] }, "service_providing_group_product_application_history_response": { "summary": "Service Providing Group Product Application - history", "description": "Service Providing Group Product Application - history", "properties": { "id": { "description": "Unique surrogate identifier.", "format": "bigint", "type": "integer", "readOnly": true }, "service_providing_group_id": { "description": "Reference to the service providing group.", "format": "bigint", "type": "integer" }, "procuring_system_operator_id": { "description": "Reference to the procuring system operator.", "format": "bigint", "type": "integer" }, "product_type_ids": { "description": "References to the product types.", "type": "array", "items": { "format": "bigint", "type": "integer" } }, "status": { "$ref": "#/$defs/service_providing_group_product_application_status", "default": "requested" }, "maximum_active_power_up": { "description": "The maximum active power applied for in regulation direction up. Stored in kilowatts.", "format": "decimal", "type": "number", "minimum": 0, "maximum": 999999.999, "multipleOf": 0.001 }, "maximum_active_power_down": { "description": "The maximum active power applied for in regulation direction down. Stored in kilowatts.", "format": "decimal", "type": "number", "minimum": 0, "maximum": 999999.999, "multipleOf": 0.001 }, "additional_information": { "description": "Free text field for extra information about the application if needed (bidding periods, unavailabilities, etc).", "format": "text", "type": [ "string", "null" ], "maxLength": 512 }, "prequalified_at": { "description": "When the product application was last prequalified.", "format": "date-time", "type": [ "string", "null" ] }, "verified_at": { "description": "When the product application was last verified.", "format": "date-time", "type": [ "string", "null" ] }, "ramping_capability": { "oneOf": [ { "$ref": "#/$defs/service_providing_group_product_application_ramping_capability" }, { "type": "null" } ], "nullable": true }, "ramping_description": { "description": "Free text description of ramping details. Only required for product Manual Frequency Restoration (mFRR).", "format": "text", "type": [ "string", "null" ] }, "created_at": { "description": "When the application was first created.", "format": "date-time", "type": "string", "readOnly": true }, "complete_at": { "description": "When the application was last marked complete by the procuring system operator.", "format": "date-time", "type": [ "string", "null" ] }, "recorded_at": { "description": "When the resource was recorded (created or updated) in the system.", "format": "date-time", "type": "string", "readOnly": true }, "recorded_by": { "description": "The identity that recorded the resource.", "format": "bigint", "type": "integer", "readOnly": true }, "service_providing_group_product_application_id": { "description": "Reference to the resource that was updated.", "format": "bigint", "type": "integer" }, "replaced_by": { "description": "The identity that updated the resource when it was replaced.", "format": "bigint", "type": [ "integer", "null" ] }, "replaced_at": { "description": "When the resource was replaced in the system.", "format": "date-time", "type": [ "string", "null" ] }, "service_providing_group_history": { "description": "Embedded service_providing_group_history", "oneOf": [ { "type": "array", "items": { "$ref": "#/$defs/service_providing_group_history_response" } }, { "type": "null" } ], "nullable": true }, "procuring_system_operator_history": { "description": "Embedded party_history", "oneOf": [ { "type": "array", "items": { "$ref": "#/$defs/party_history_response" } }, { "type": "null" } ], "nullable": true }, "attachment_history": { "description": "Embedded service_providing_group_product_application_attachment_history", "oneOf": [ { "type": "array", "items": { "$ref": "#/$defs/service_providing_group_product_application_attachment_history_response" } }, { "type": "null" } ], "nullable": true }, "comment_history": { "description": "Embedded service_providing_group_product_application_comment_history", "oneOf": [ { "type": "array", "items": { "$ref": "#/$defs/service_providing_group_product_application_comment_history_response" } }, { "type": "null" } ], "nullable": true } }, "required": [ "id", "service_providing_group_id", "procuring_system_operator_id", "product_type_ids", "status", "maximum_active_power_up", "maximum_active_power_down", "created_at", "recorded_at", "recorded_by", "service_providing_group_product_application_id" ] }, "service_providing_group_product_application_ramping_capability": { "description": "Whether the service providing group can ramp in accordance with the product requirements during both activation and deactivation.", "format": "text", "type": [ "string", "null" ], "enum": [ "always", "partial", "never" ] }, "service_providing_group_product_application_status": { "description": "The status of the application.", "format": "text", "type": "string", "default": "requested", "enum": [ "requested", "prequalification", "temporary_qualified", "prequalified", "verified", "rejected" ] }, "service_providing_group_product_suspension_comment_history_response": { "summary": "Service Providing Group Product Suspension Comment - history", "description": "Service Providing Group Product Suspension Comment - history", "properties": { "id": { "description": "Unique surrogate identifier.", "format": "bigint", "type": "integer", "readOnly": true }, "service_providing_group_product_suspension_id": { "description": "Reference to the service providing group product suspension.", "format": "bigint", "type": "integer" }, "created_by": { "description": "Reference to the identity that created the comment.", "format": "bigint", "type": "integer", "readOnly": true }, "created_at": { "description": "When the comment was added to the SPGPS.", "format": "date-time", "type": "string", "readOnly": true }, "visibility": { "$ref": "#/$defs/service_providing_group_product_suspension_comment_visibility", "default": "same_party" }, "content": { "description": "Free text content of the comment.", "format": "text", "type": "string", "maxLength": 2048 }, "recorded_at": { "description": "When the resource was recorded (created or updated) in the system.", "format": "date-time", "type": "string", "readOnly": true }, "recorded_by": { "description": "The identity that recorded the resource.", "format": "bigint", "type": "integer", "readOnly": true }, "service_providing_group_product_suspension_comment_id": { "description": "Reference to the resource that was updated.", "format": "bigint", "type": "integer" }, "replaced_by": { "description": "The identity that updated the resource when it was replaced.", "format": "bigint", "type": [ "integer", "null" ] }, "replaced_at": { "description": "When the resource was replaced in the system.", "format": "date-time", "type": [ "string", "null" ] }, "service_providing_group_product_suspension_history": { "description": "Embedded service_providing_group_product_suspension_history", "oneOf": [ { "type": "array", "items": { "$ref": "#/$defs/service_providing_group_product_suspension_history_response" } }, { "type": "null" } ], "nullable": true } }, "required": [ "id", "service_providing_group_product_suspension_id", "created_by", "created_at", "visibility", "content", "recorded_at", "recorded_by", "service_providing_group_product_suspension_comment_id" ] }, "service_providing_group_product_suspension_comment_visibility": { "description": "The level of visibility of the comment.", "format": "text", "type": "string", "default": "same_party", "enum": [ "same_party", "any_involved_party" ] }, "service_providing_group_product_suspension_history_response": { "summary": "Service Providing Group Product Suspension - history", "description": "Service Providing Group Product Suspension - history", "properties": { "id": { "description": "Unique surrogate identifier.", "format": "bigint", "type": "integer", "readOnly": true }, "procuring_system_operator_id": { "description": "Reference to the procuring system operator suspending the service providing group.", "format": "bigint", "type": "integer" }, "service_providing_group_id": { "description": "Reference to the service providing group being suspended.", "format": "bigint", "type": "integer" }, "product_type_ids": { "description": "References to the suspended product types.", "type": "array", "items": { "format": "bigint", "type": "integer" } }, "reason": { "$ref": "#/$defs/service_providing_group_product_suspension_reason" }, "recorded_at": { "description": "When the resource was recorded (created or updated) in the system.", "format": "date-time", "type": "string", "readOnly": true }, "recorded_by": { "description": "The identity that recorded the resource.", "format": "bigint", "type": "integer", "readOnly": true }, "service_providing_group_product_suspension_id": { "description": "Reference to the resource that was updated.", "format": "bigint", "type": "integer" }, "replaced_by": { "description": "The identity that updated the resource when it was replaced.", "format": "bigint", "type": [ "integer", "null" ] }, "replaced_at": { "description": "When the resource was replaced in the system.", "format": "date-time", "type": [ "string", "null" ] }, "procuring_system_operator_history": { "description": "Embedded party_history", "oneOf": [ { "type": "array", "items": { "$ref": "#/$defs/party_history_response" } }, { "type": "null" } ], "nullable": true }, "service_providing_group_history": { "description": "Embedded service_providing_group_history", "oneOf": [ { "type": "array", "items": { "$ref": "#/$defs/service_providing_group_history_response" } }, { "type": "null" } ], "nullable": true }, "comment_history": { "description": "Embedded service_providing_group_product_suspension_comment_history", "oneOf": [ { "type": "array", "items": { "$ref": "#/$defs/service_providing_group_product_suspension_comment_history_response" } }, { "type": "null" } ], "nullable": true } }, "required": [ "id", "procuring_system_operator_id", "service_providing_group_id", "product_type_ids", "reason", "recorded_at", "recorded_by", "service_providing_group_product_suspension_id" ] }, "service_providing_group_product_suspension_reason": { "description": "The reason for the suspension.", "format": "text", "type": "string", "enum": [ "failed_verification", "other" ] }, "service_providing_group_status": { "description": "The status of the group.", "format": "text", "type": "string", "default": "new", "enum": [ "new", "active", "inactive", "terminated" ] }, "technical_resource_business_id_type": { "description": "The type of business identifier used for the device.", "format": "text", "type": [ "string", "null" ], "enum": [ "serial_number", "mac", "other" ] }, "technical_resource_history_response": { "summary": "Technical Resource - history", "description": "Technical Resource - history", "properties": { "id": { "description": "Unique surrogate identifier.", "format": "bigint", "type": "integer", "readOnly": true }, "name": { "description": "Name of the technical resource. Maximum 128 characters.", "format": "text", "type": "string" }, "controllable_unit_id": { "description": "Reference to the controllable unit that this technical resource belongs to.", "format": "bigint", "type": "integer" }, "technology": { "description": "Technologies of the technical resource. Multiple technologies can be given, e.g. solar and battery for hybrid inverters.", "type": "array", "items": { "$ref": "#/$defs/technology" }, "minItems": 1 }, "category": { "description": "Categories derived from the technologies of the technical resource. Automatically computed based on the selected technologies.", "type": "array", "items": { "$ref": "#/$defs/category" }, "readOnly": true }, "maximum_active_power": { "description": "Rated power in kilowatts. This is the maximum nominal continuous power of the device, typically defined by the manufacturer.", "format": "decimal", "type": "number", "minimum": 0, "maximum": 999999.999, "nullable": false, "multipleOf": 0.001 }, "device_type": { "description": "The type of device.", "allOf": [ { "$ref": "#/$defs/device_type" } ], "nullable": false }, "make": { "description": "The manufacturer of the device. Required if model or business id is provided.", "format": "text", "type": [ "string", "null" ], "maxLength": 128 }, "model": { "description": "The model of the device.", "format": "text", "type": [ "string", "null" ], "maxLength": 128 }, "business_id": { "description": "Business identifier of the device, such as a serial number or MAC address.", "format": "text", "type": [ "string", "null" ], "maxLength": 256 }, "business_id_type": { "oneOf": [ { "$ref": "#/$defs/technical_resource_business_id_type" }, { "type": "null" } ], "nullable": true }, "additional_information": { "description": "Free text field for extra information about the technical resource if needed.", "format": "text", "type": [ "string", "null" ] }, "recorded_at": { "description": "When the resource was recorded (created or updated) in the system.", "format": "date-time", "type": "string", "readOnly": true }, "recorded_by": { "description": "The identity that recorded the resource.", "format": "bigint", "type": "integer", "readOnly": true }, "technical_resource_id": { "description": "Reference to the resource that was updated.", "format": "bigint", "type": "integer" }, "replaced_by": { "description": "The identity that updated the resource when it was replaced.", "format": "bigint", "type": [ "integer", "null" ] }, "replaced_at": { "description": "When the resource was replaced in the system.", "format": "date-time", "type": [ "string", "null" ] }, "controllable_unit_history": { "description": "Embedded controllable_unit_history", "oneOf": [ { "type": "array", "items": { "$ref": "#/$defs/controllable_unit_history_response" } }, { "type": "null" } ], "nullable": true } }, "required": [ "id", "name", "controllable_unit_id", "technology", "category", "maximum_active_power", "device_type", "recorded_at", "recorded_by", "technical_resource_id" ] }, "technology": { "description": "Technology classification using ltree path notation. Technologies are hierarchical (e.g., hydropower.pumped, hvac.heat_pump). Use the most specific technology applicable to the technical resource.", "format": "text", "type": "string", "enum": [ "hydropower", "hydropower.pumped", "hydropower.run_of_river", "heat_power_plant", "heat_power_plant.chp", "solar", "wind", "backup_generator", "hvac", "hvac.heat", "hvac.heat_pump", "lighting", "water_heater", "boiler", "ev_charging_device", "ev_charging_device.v2g", "battery", "other.consumption", "other.production", "other.energy_storage" ] } } }