Elhub · Schema

technical_resource_history_response

Technical Resource - history

CompanyEnergyElectricityDatahubMeteringOpen DataNorwayUtilities

Properties

Name Type Description
id integer Unique surrogate identifier.
name string Name of the technical resource. Maximum 128 characters.
controllable_unit_id integer Reference to the controllable unit that this technical resource belongs to.
technology array Technologies of the technical resource. Multiple technologies can be given, e.g. solar and battery for hybrid inverters.
category array Categories derived from the technologies of the technical resource. Automatically computed based on the selected technologies.
maximum_active_power number Rated power in kilowatts. This is the maximum nominal continuous power of the device, typically defined by the manufacturer.
device_type object The type of device.
make stringnull The manufacturer of the device. Required if model or business id is provided.
model stringnull The model of the device.
business_id stringnull Business identifier of the device, such as a serial number or MAC address.
business_id_type object
additional_information stringnull Free text field for extra information about the technical resource 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.
technical_resource_id integer Reference to the resource that was updated.
replaced_by integernull The identity that updated the resource when it was replaced.
replaced_at stringnull When the resource was replaced in the system.
controllable_unit_history object Embedded controllable_unit_history
View JSON Schema on GitHub

JSON Schema

elhub-technical-resource-history-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-technical-resource-history-response-schema.json",
  "title": "technical_resource_history_response",
  "description": "Technical Resource - 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/technical_resource_history_response",
  "summary": "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"
  ],
  "$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": {
          "descrip

# --- truncated at 32 KB (77 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/elhub/refs/heads/main/json-schema/elhub-technical-resource-history-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-technical-resource-history-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.