Elhub · Schema

controllable_unit_response

Response schema - Controllable unit

CompanyEnergyElectricityDatahubMeteringOpen DataNorwayUtilities

Properties

Name Type Description
id integer Unique surrogate key.
business_id string Unique business identifier for the controllable unit.
name string Free text name of the controllable unit.
start_date stringnull The usage date when the controllable unit is first active.
status object
regulation_direction object
maximum_active_power number Maximum continuous active power (flexible power) that the controllable unit can produce or consume, i.e. deliver for balancing and congestion services, in kilowatts.
is_small boolean Whether the controllable unit is small or not, following NCDR. Current threshold for this to be true is <= 50 kW of flexible power.
accounting_point_id integer Reference to the accounting point that the controllable unit is connected to.
additional_information stringnull Free text field for extra information about the controllable unit if needed.
recorded_at string When the resource was recorded (created or updated) in the system.
recorded_by integer The identity that recorded the resource.
accounting_point object Embedded accounting_point
suspension object Embedded controllable_unit_suspension
service_provider object Embedded controllable_unit_service_provider
summary object Embedded controllable_unit_summary
service_providing_group_membership object Embedded service_providing_group_membership
technical_resource object Embedded technical_resource
View JSON Schema on GitHub

JSON Schema

elhub-controllable-unit-response-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/elhub/main/json-schema/elhub-controllable-unit-response-schema.json",
  "title": "controllable_unit_response",
  "description": "Response schema - Controllable unit",
  "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_response",
  "summary": "Response - Controllable unit",
  "type": "object",
  "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
    },
    "accounting_point": {
      "description": "Embedded accounting_point",
      "oneOf": [
        {
          "$ref": "#/$defs/accounting_point_response"
        },
        {
          "type": "null"
        }
      ],
      "nullable": true
    },
    "suspension": {
      "description": "Embedded controllable_unit_suspension",
      "oneOf": [
        {
          "type": "array",
          "items": {
            "$ref": "#/$defs/controllable_unit_suspension_response"
          }
        },
        {
          "type": "null"
        }
      ],
      "nullable": true
    },
    "service_provider": {
      "description": "Embedded controllable_unit_service_provider",
      "oneOf": [
        {
          "type": "array",
          "items": {
            "$ref": "#/$defs/controllable_unit_service_provider_response"
          }
        },
        {
          "type": "null"
        }
      ],
      "nullable": true
    },
    "summary": {
      "description": "Embedded controllable_unit_summary",
      "oneOf": [
        {
          "$ref": "#/$defs/controllable_unit_summary_response"
        },
        {
          "type": "null"
        }
      ],
      "nullable": true
    },
    "service_providing_group_membership": {
      "description": "Embedded service_providing_group_membership",
      "oneOf": [
        {
          "type": "array",
          "items": {
            "$ref": "#/$defs/service_providing_group_membership_response"
          }
        },
        {
          "type": "null"
        }
      ],
      "nullable": true
    },
    "technical_resource": {
      "description": "Embedded technical_resource",
      "oneOf": [
        {
          "type": "array",
          "items": {
            "$ref": "#/$defs/technical_resource_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"
  ],
  "$defs": {
    "accounting_point_balance_responsible_party_energy_direction": {
      "description": "The direction of the effect on the balance that the BRP takes responsibility for.",
      "format": "text",
      "type": "string",
      "readOnly": true,
      "enum": [
        "consumption",
        "production"
      ]
    },
    "accounting_point_balance_responsible_party_response": {
      "summary": "Response - Accounting Point Balance Responsible Party",
      "description": "Response schema - Relation linking a balance responsible party to an accounting point.",
      "type": "object",
      "properties": {
        "accounting_point_id": {
          "description": "The ID of the accounting point.",
          "format": "bigint",
          "type": "integer",
          "readOnly": true
        },
        "balance_responsible_party_id": {
          "description": "The balance responsible party of the accounting point.",
          "format": "bigint",
          "type": "integer",
          "readOnly": true
        },
        "energy_direction": {
          "$ref": "#/$defs/accounting_point_balance_responsible_party_energy_direction",
          "readOnly": true
        },
        "valid_from": {
          "description": "The date from which the relation between the accounting point and the balance responsible party is valid. Midnight aligned on Norwegian timezone.",
          "format": "date-time",
          "type": "string",
          "readOnly": true
        },
        "valid_to": {
          "description": "The date until which the relation between the accounting point and the balance responsible party is valid. Midnight aligned on Norwegian timezone.",
          "format": "date-time",
          "type": [
            "string",
            "null"
          ],
          "readOnly": true
        },
        "accounting_point": {
          "description": "Embedded accounting_point",
          "oneOf": [
            {
              "$ref": "#/$defs/accounting_point_response"
            },
            {
              "type": "null"
            }
          ],
          "nullable": true
        },
        "balance_responsible_party": {
          "description": "Embedded party",
          "oneOf": [
            {
              "$ref": "#/$defs/party_response"
            },
            {
              "type": "null"
            }
          ],
          "nullable": true
        }
      },
      "required": [
        "accounting_point_id",
        "balance_responsible_party_id",
        "energy_direction",
        "valid_from"
      ]
    },
    "accounting_point_bidding_zone_bidding_zone": {
      "description": "The bidding zone of the accounting point.",
      "format": "text",
      "type": "string",
      "enum": [
        "NO1",
        "NO2",
        "NO3",
        "NO4",
        "NO5"
      ]
    },
    "accounting_point_bidding_zone_response": {
      "summary": "Response - Accounting Point Bidding Zone",
      "description": "Response schema - Relation telling which bidding zone an accounting point belongs to.",
      "type": "object",
      "properties": {
        "accounting_point_id": {
          "description": "The ID of the accounting point.",
          "format": "bigint",
          "type": "integer",
          "readOnly": true
        },
        "bidding_zone": {
          "$ref": "#/$defs/accounting_point_bidding_zone_bidding_zone"
        },
        "valid_from": {
          "description": "The date from which the accounting point belongs to the bidding zone. Midnight aligned on Norwegian timezone.",
          "format": "date-time",
          "type": "string",
          "readOnly": true
        },
        "valid_to": {
          "description": "The date until which the accounting point belongs to the bidding zone. Midnight aligned on Norwegian timezone.",
          "format": "date-time",
          "type": [
            "string",
            "null"
          ],
          "readOnly": true
        },
        "accounting_point": {
          "description": "Embedded accounting_point",
          "oneOf": [
            {
              "$ref": "#/$defs/accounting_point_response"
            },
            {
              "type": "null"
            }
          ],
          "nullable": true
        }
      },
      "required": [
        "accounting_point_id",
        "bidding_zone",
        "valid_from"
      ]
    },
    "accounting_point_end_user_response": {
      "summary": "Response - Accounting Point End User",
      "description": "Response schema - Relation telling which end user an accounting point belongs to.",
      "type": "object",
      "properties": {
        "accounting_point_id": {
          "description": "The ID of the accounting point.",
          "format": "bigint",
          "type": "integer",
          "readOnly": true
        },
        "end_user_id": {
          "description": "The end user on the accounting point.",
          "format": "bigint",
          "type": "integer",
          "readOnly": true
        },
        "valid_from": {
          "description": "The date from which the accounting point belongs to the end user. Midnight aligned on Norwegian timezone.",
          "format": "date-time",
          "type": "string",
          "readOnly": true
        },
        "valid_to": {
          "description": "The date until which the accounting point belongs to the end user. Midnight aligned on Norwegian timezone.",
          "format": "date-time",
          "type": [
            "string",
            "null"
          ],
          "readOnly": true
        },
        "accounting_point": {
          "description": "Embedded accounting_point",
          "oneOf": [
            {
              "$ref": "#/$defs/accounting_point_response"
            },
            {
              "type": "null"
            }
          ],
          "nullable": true
        },
        "end_user": {
          "description": "Embedded party",
          "oneOf": [
            {
              "$ref": "#/$defs/party_response"
            },
            {
              "type": "null"
            }
          ],
          "nullable": true
        }
      },
      "required": [
        "accounting_point_id",
        "end_user_id",
        "valid_from"
      ]
    },
    "accounting_point_energy_supplier_response": {
      "summary": "Response - Accounting Point Energy Supplier",
      "description": "Response schema - Relation linking an energy supplier to an accounting point.",
      "type": "object",
      "properties": {
        "accounting_point_id": {
          "description": "The ID of the accounting point.",
          "format": "bigint",
          "type": "integer",
          "readOnly": true
        },
        "energy_supplier_id": {
          "description": "The energy supplier of the accounting point.",
          "format": "bigint",
          "type": "integer",
          "readOnly": true
        },
        "valid_from": {
          "description": "The date from which the relation between the accounting point and the energy supplier is valid. Midnight aligned on Norwegian timezone.",
          "format": "date-time",
          "type": "string",
          "readOnly": true
        },
        "valid_to": {
          "description": "The date until which the relation between the accounting point and the energy supplier is valid. Midnight aligned on Norwegian timezone.",
          "format": "date-time",
          "type": [
            "string",
            "null"
          ],
          "readOnly": true
        },
        "accounting_point": {
          "description": "Embedded accounting_point",
          "oneOf": [
            {
              "$ref": "#/$defs/accounting_point_response"
            },
            {
              "type": "null"
            }
          ],
          "nullable": true
        },
        "energy_supplier": {
          "description": "Embedded party",
          "oneOf": [
            {
              "$ref": "#/$defs/party_response"
            },
            {
              "type": "null"
            }
          ],
          "nullable": true
        }
      },
      "required": [
        "accounting_point_id",
        "energy_supplier_id",
        "valid_from"
      ]
    },
    "accounting_point_grid_location_object_type": {
      "description": "The type of object in the common grid model that the accounting point is at.",
      "format": "text",
      "type": "string",
      "enum": [
        "substation"
      ]
    },
    "accounting_point_grid_location_quality": {
      "description": "Indicates how the grid location was determined. Guessed means that Flexibility Information System has estimated the location, while confirmed means that someone has verified it.",
      "format": "text",
      "type": "string",
      "enum": [
        "confirmed",
        "guessed"
      ]
    },
    "accounting_point_grid_location_response": {
      "summary": "Response - Accounting Point Grid Location",
      "description": "Response schema - The electrical (topological) location of an accounting point in the common grid model (Nemo).",
      "type": "object",
      "properties": {
        "id": {
          "description": "Unique surrogate key.",
          "format": "bigint",
          "type": "integer",
          "readOnly": true
        },
        "accounting_point_id": {
          "description": "The accounting point this grid location belongs to.",
          "format": "bigint",
          "type": "integer"
        },
        "object_type": {
          "$ref": "#/$defs/accounting_point_grid_location_object_type"
        },
        "business_id": {
          "description": "Business identifier (mRID) referencing the object in the common grid model (NEMO).",
          "format": "text",
          "type": "string",
          "nullable": false,
          "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
        },
        "name": {
          "description": "Name of the grid model object at the location.",
          "format": "text",
          "type": "string",
          "maxLength": 512
        },
        "nominal_voltage": {
          "description": "Nominal voltage level at the grid location, in kilovolt (kV).",
          "format": "decimal",
          "type": "number",
          "minimum": 0,
          "maximum": 999999.999,
          "multipleOf": 0.001
        },
        "additional_information": {
          "description": "Free text field for extra information about the grid location if needed.",
          "format": "text",
          "type": [
            "string",
            "null"
          ]
        },
        "source": {
          "$ref": "#/$defs/accounting_point_grid_location_source",
          "readOnly": true
        },
        "quality": {
          "$ref": "#/$defs/accounting_point_grid_location_quality"
        },
        "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
        },
        "accounting_point": {
          "description": "Embedded accounting_point",
          "oneOf": [
            {
              "$ref": "#/$defs/accounting_point_response"
            },
            {
              "type": "null"
            }
          ],
          "nullable": true
        }
      },
      "required": [
        "id",
        "accounting_point_id",
        "object_type",
        "business_id",
        "name",
        "nominal_voltage",
        "source",
        "quality",
        "recorded_at",
        "recorded_by"
      ]
    },
    "accounting_point_grid_location_source": {
      "description": "How the grid location was determined. When a system operator creates or updates a grid location, this field is set automatically: `cso` if the SO is the connecting system operator, `so` otherwise.",
      "format": "text",
      "type": "string",
      "readOnly": true,
      "enum": [
        "cso",
        "so",
        "grid_model",
        "system"
      ]
    },
    "accounting_point_metering_grid_area_response": {
      "summary": "Response - Accounting Point Metering Grid Area",
      "description": "Response schema - Relation telling which metering grid area an accounting point belongs to.",
      "type": "object",
      "properties": {
        "accounting_point_id": {
          "description": "The ID of the accounting point.",
          "format": "bigint",
          "type": "integer",
          "readOnly": true
        },
        "metering_grid_area_id": {
          "description": "The metering grid area of the accounting point.",
          "format": "bigint",
          "type": "integer",
          "readOnly": true
        },
        "valid_from": {
          "description": "The date from which the accounting point belongs to the metering grid area. Midnight aligned on Norwegian timezone.",
          "format": "date-time",
          "type": "string",
          "readOnly": true
        },
        "valid_to": {
          "description": "The date until which the accounting point belongs to the metering grid area. Midnight aligned on Norwegian timezone.",
          "format": "date-time",
          "type": [
            "string",
            "null"
          ],
          "readOnly": true
        },
        "accounting_point": {
          "description": "Embedded accounting_point",
          "oneOf": [
            {
              "$ref": "#/$defs/accounting_point_response"
            },
            {
              "type": "null"
            }
          ],
          "nullable": true
        },
        "metering_grid_area": {
          "description": "Embedded metering_grid_area",
          "oneOf": [
            {
              "$ref": "#/$defs/metering_grid_area_response"
            },
            {
              "type": "null"
            }
          ],
          "nullable": true
        }
      },
      "required": [
        "accounting_point_id",
        "metering_grid_area_id",
        "valid_from"
      ]
    },
    "accounting_point_response": {
      "summary": "Response - Accounting Point",
      "description": "Response schema - Accounting point for a controllable unit.",
      "type": "object",
      "properties": {
        "id": {
          "description": "Unique surrogate identifier.",
          "format": "bigint",
          "type": "integer",
          "readOnly": true
        },
        "business_id": {
          "description": "The GSRN metering point id of the accounting point.",
          "format": "text",
          "type": "string",
          "readOnly": true,
          "pattern": "^[1-9][0-9]{17}$"
        },
        "system_operator_id": {
          "description": "The system operator of the accounting point.",
          "format": "bigint",
          "type": "integer",
          "readOnly": true
        },
        "location": {
          "description": "Geographic location of the accounting point (WGS84), as a GeoJSON point object.",
          "readOnly": true,
          "type": [
            "object",
            "null"
          ],
          "oneOf": [
            {
              "$ref": "#/$defs/geojson_point"
            },
            {
              "type": "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": {
          "description": "Embedded controllable_unit",
          "oneOf": [
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/controllable_unit_response"
              }
            },
            {
              "type": "null"
            }
          ],
          "nullable": true
        },
        "system_operator": {
          "description": "Embedded party",
          "oneOf": [
            {
              "$ref": "#/$defs/party_response"
            },
            {
              "type": "null"
            }
          ],
          "nullable": true
        },
        "balance_responsible_party": {
          "description": "Embedded accounting_point_balance_responsible_party",
          "oneOf": [
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/accounting_point_balance_responsible_party_response"
              }
            },
            {
              "type": "null"
            }
          ],
          "nullable": true
        },
        "bidding_zone": {
          "description": "Embedded accounting_point_bidding_zone",
          "oneOf": [
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/accounting_point_bidding_zone_response"
              }
            },
            {
              "type": "null"
            }
          ],
          "nullable": true
        },
        "end_user": {
          "description": "Embedded accounting_point_end_user",
          "oneOf": [
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/accounting_point_end_user_response"
              }
            },
            {
              "type": "null"
            }
          ],
          "nullable": true
        },
        "energy_supplier": {
          "description": "Embedded accounting_point_energy_supplier",
          "oneOf": [
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/accounting_point_energy_supplier_response"
              }
            },
            {
              "type": "null"
            }
          ],
          "nullable": true
        },
        "metering_grid_area": {
          "description": "Embedded accounting_point_metering_grid_area",
          "oneOf": [
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/accounting_point_metering_grid_area_response"
              }
            },
            {
              "type": "null"
            }
          ],
          "nullable": true
        },
        "grid_location": {
          "description": "Embedded accounting_point_grid_location",
          "oneOf": [
            {
              "$ref": "#/$defs/accounting_point_grid_location_response"
            },
            {
              "type": "null"
            }
          ],
          "nullable": true
        }
      },
      "required": [
        "id",
        "business_id",
        "system_operator_id",
        "recorded_at",
        "recorded_by"
      ]
    },
    "auth_scope": {
      "description": "Authorization scopes.",
      "format": "text",
      "type": "string",
      "enum": [
        "manage:attachment",
        "manage:attachment:service_providing_group_product_application_attachment",
        "manage:auth",
        "manage:data",
        "manage:data:accounting_point_grid_location",
        "manage:data:controllable_unit",
        "manage:data:controllable_unit_service_provider",
        "manage:data:controllable_unit_suspension",
        "manage:data:controllable_unit_suspension_comment",
        "manage:data:entity",
        "manage:data:entity_client",
        "manage:data:notification",
        "manage:data:party",
        "manage:data:party_membership",
        "manage:data:service_provider_product_application",
        "manage:data:service_provider_product_application_comment",
        "manage:data:service_provider_product_suspension",
        "manage:data:service_provider_product_suspension_comment",
        "manage:data:service_providing_group",
        "manage:data:service_providing_group_grid_prequalification",
        "manage:data:service_providing_group_grid_prequalification_comment",
        "manage:data:service_providing_group_grid_suspension",
        "manage:data:service_providing_group_grid_suspension_comment",
        "manage:data:service_providing_group_membership",
        "manage:data:service_providing_group_product_application",
        "manage:data:service_providing_group_product_application_comment",
        "manage:data:service_providing_group_product_suspension",
        "manage:data:service_providing_group_product_suspension_comment",
        "manage:data:system_operator_product_type",
        "manage:data:technical_resource",
        "read:attachment",
        "read:attachment:service_providing_group_product_application_attachment",
        "read:attachment:service_providing_group_product_application_attachment_history",
        "read:auth",
        "read:data",
        "read:data:accounting_point",
        "read:data:accounting_point_balance_responsible_party",
        "read:data:accounting_point_bidding_zone",
        "read:data:accounting_point_end_user",
        "read:data:accounting_point_energy_supplier",
        "read:data:accounting_point_grid_location",
        "read:data:accounting_point_grid_location_history",
        "read:data:accounting_point_metering_grid_area",
        "read:data:controllable_unit",
        "read:data:controllable_unit_history",
        "read:data:controllable_unit_service_provider",
        "read:data:controllable_unit_service_provider_history",
        "read:data:controllable_unit_summary",
        "read:data:controllable_unit_suspension",
        "read:data:controllable_unit_suspension_comment",
        "read:data:controllable_unit_suspension_comment_history",
        "read:data:controllable_unit_suspension_history",
        "read:data:entity",
        "read:data:entity_client",
        "read:data:event",
        "read:data:identity",
        "read:data:metering_grid_area",
        "read:data:notice",
        "read:data:notification",
        "read:data:party",
        "read:data:party_history",
        "read:data:party_membership",
        "read:data:party_membership_history",
        "read:data:product_type",
        "read:data:service_provider_product_application",
        "read:data:service_provider_product_application_comment",
        "read:data:service_provider_product_application_comment_history",
        "read:data:service_provider_product_application_history",
        "read:data:service_provider_product_suspension",
        "read:data:service_provider_product_suspension_comment",
        "read:data:service_provider_product_suspension_comment_history",
        "read:data:service_provider_product_suspension_history",
        "read:data:service_providing_group",
        "read:data:service_providing_group_grid_prequalification",
        "read:data:service_providing_group_grid_prequalification_comment",
        "read:data:service_providing_group_grid_prequalification_comment_history",
        "read:data:service_providing_group_grid_prequalification_history",
        "read:data:service_providing_group_grid_suspension",
        "read:data:service_providing_group_grid_suspension_comment",
        "read:data:service_providing_group_grid_suspension_comment_history",
        "read:data:service_providing_group_grid_suspension_history",
        "read:data:service_providing_group_history",
        "read:data:service_providing_group_membership",
        "read:data:service_providing_group_membership_history",
        "read:data:service_providing_group_power_per_substation",
        "read:data:service_providing_group_product_application",
        "read:data:service_providing_group_product_application_comment",
        "read:data:service_providing_group_product_application_comment_history",
        "read:data:service_providing_group_product_application_history",
        "read:data:service_providing_group_product_suspension",
        "read:data:service_providing_group_product_suspension_comment",
        "read:data:service_providing_group_product_suspension_comment_history",
        "read:data:service_providing_group_product_suspension_history",
        "read:data:service_providing_group_summary",
        "read:data:system_operator_product_type",
        "read:data:system_operator_product_type_history",
        "read:data:technical_resource",
        "read:data:technical_resource_history",
        "read:grid",
        "read:grid:line",
        "read:grid:substation",
        "read:grid:substation_cluster",
        "use:auth",
        "use:data",
        "use:data:controllable_unit",
        "use:data:controllable_unit:lookup",
        "use:data:entity",
        "use:data:entity:lookup"
      ]
    },
    "category": {
      "description": "Resource category classification. Derived from technologies.",
      "format": "text",
      "type": "string",
      "enum": [
        "consumption",
        "production",
        "energy_storage"
      ]
    },
    "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_response": {
      "summary": "Response - Controllable unit",
      "description": "Response schema - Controllable unit",
      "type": "object",
      "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",
          "n

# --- truncated at 32 KB (113 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/elhub/refs/heads/main/json-schema/elhub-controllable-unit-response-schema.json

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/elhub-controllable-unit-response"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.