generated: '2026-10-09' method: derived generator: derive-data-model.py source: - openapi/trolie-openapi.yml notation: has_one = property $ref; has_many = array of $ref; belongs_to = _id field summary: entities: 79 entities_in_spec: 79 relationships: 102 entities: - name: active-power fields: 2 - name: active-power-with-power-factor fields: 3 - name: apparent-power fields: 2 - name: array-max-monitored-elements_forecast-proposal fields: 2 - name: current fields: 1 description: Representation of a thermal limit in amperes. - name: data-provenance fields: 3 description: Provides information about where the associated representation came from. *No - name: forecast-limit-item fields: 2 - name: forecast-limit-item-detailed fields: 2 - name: forecast-limits-detailed-snapshot fields: 3 description: A detailed snapshot of the forecast for a monitoring set. These details are - name: forecast-limits-detailed-snapshot-elide-psr fields: 3 description: A detailed snapshot of the forecast for a monitoring set. These details are - name: forecast-limits-snapshot fields: 2 description: A snapshot of the forecast for a monitoring set. - name: forecast-limits-snapshot-elide-psr fields: 2 description: A snapshot of the forecast for a monitoring set. - name: forecast-limits-snapshot-slim fields: 2 description: A slim snapshot of the forecast for a monitoring set. - name: forecast-limits-snapshot-slim-inputs-used fields: 3 description: A slim snapshot of the forecast for a monitoring set, including the inputs - name: forecast-proposal fields: 7 description: A Forecasted Period contains proposed limits for a power system object, - name: forecast-proposal-header fields: 5 description: Populated by the Ratings Provider in a request to submit forecast ratings. - name: forecast-proposal-slim fields: 3 - name: forecast-proposal-slim-header fields: 7 description: Populated by the Ratings Provider in a request to submit forecast ratings. - name: forecast-proposal-status fields: 6 description: Status of the rating provider's forecast proposal relative to the current - name: forecast-provenance fields: 9 description: Details a proposal that was considered by the Clearinghouse run. If `resource-id` is not provided, the ratings data is assumed to be for the overall facility. - name: forecast-snapshot fields: 5 - name: forecast-snapshot-detailed fields: 6 - name: forecast-snapshot-header fields: 5 description: Details about the snapshot provided by the Clearinghouse provider. - name: forecast-snapshot-header-elide-psr fields: 4 description: Details about the snapshot provided by the Clearinghouse provider. The - name: forecast-snapshot-slim-header fields: 6 description: Details about the snapshot provided by the Clearinghouse provider. - name: input fields: 3 - name: limit fields: 0 description: Defines the limit. In practice most exchanges will only support one kind of - name: missing-seasonal-obligation fields: 4 - name: names fields: 2 - name: operator-override-limit-provenance fields: 8 description: Data structure for a temporary AAR Exception against a resource. - name: overvoltage-threshold fields: 1 description: An upper limit to voltage for a transmission facility in kilovolts. - name: overvoltage-threshold-pu fields: 1 description: An upper limit to voltage for a transmission facility in per unit with the base voltage assumed to be the nominal voltage. - name: problem fields: 5 description: See [RFC9457](https://www.rfc-editor.org/rfc/rfc9457#appendix-A). - name: reactive-power fields: 1 description: Representation of a limit in megavolt-amperes reactive (MVAR). - name: real-time-proposal fields: 6 - name: real-time-proposal-header fields: 4 description: Populated by the Ratings Provider in a request to submit real-time ratings. - name: real-time-proposal-slim-header fields: 5 description: Populated by the Ratings Provider in a request to submit real-time ratings. - name: real-time-proposal-status fields: 5 description: Status of the rating provider's real-time obligations. - name: real-time-provenance fields: 7 - name: real-time-snapshot-header fields: 4 description: Details about the snapshot provided by the Clearinghouse provider. - name: real-time-snapshot-header-elide-psr fields: 3 description: Details about the snapshot provided by the Clearinghouse provider. - name: realtime-limits-detailed-snapshot fields: 3 description: A snapshot of the realtime limits for a monitoring set. - name: realtime-limits-detailed-snapshot-elide-psr fields: 3 description: A snapshot of the realtime limits for a monitoring set. - name: realtime-limits-snapshot fields: 2 description: A snapshot of the realtime limits for a monitoring set. - name: realtime-limits-snapshot-elide-psr fields: 2 description: A snapshot of the realtime limits for a monitoring set. - name: realtime-limits-snapshot-slim fields: 2 description: A slim snapshot of the realtime limits for a monitoring set. - name: realtime-limits-snapshot-slim-inputs-used fields: 3 description: A slim snapshot of the realtime limits for a monitoring set, including the - name: realtime-proposal fields: 3 - name: realtime-proposal-slim fields: 3 description: Used to propose real-time ratings for a set of resources. - name: realtime-snapshot fields: 4 - name: realtime-snapshot-detailed fields: 5 - name: request fields: 3 description: Request body for creating a monitoring set. The server will assign an id and - name: resource-forecast-proposal fields: 2 - name: response fields: 5 description: 'See https://trolie.energy/concepts.html#monitoring-sets for info on the ' - name: response_v2 fields: 5 description: 'See https://trolie.energy/concepts.html#monitoring-sets for info on the ' - name: season fields: 2 - name: seasonal-override fields: 9 description: Data structure for a seasonal override against a resource. Includes a - name: seasonal-override-request fields: 8 description: Data structure for a seasonal override against a resource. - name: seasonal-proposal fields: 9 description: Proposes the continuous and emergency ratings for the specified Season. - name: seasonal-proposal-considered fields: 11 description: Proposes the continuous and emergency ratings for the specified Season. - name: seasonal-proposal-header fields: 4 description: Describes the contents of this seasonal ratings proposal. - name: seasonal-proposal-header-slim fields: 5 description: Describes the contents of the seasonal proposal. In particular, the - name: seasonal-proposals fields: 2 - name: seasonal-rating-snapshot-item fields: 2 - name: seasonal-rating-snapshot-provenance-item fields: 2 - name: seasonal-ratings-proposal fields: 2 - name: seasonal-ratings-proposal-slim fields: 2 - name: seasonal-ratings-proposal-status fields: 5 description: Seasonal rating proposal status - name: seasonal-ratings-snapshot fields: 2 description: A snapshot of the seasonal ratings for a monitoring set. - name: seasonal-ratings-snapshot-detailed fields: 3 description: A snapshot of the seasonal ratings for a monitoring set. - name: seasonal-ratings-snapshot-detailed-elide-psr fields: 3 description: A snapshot of the seasonal ratings for a monitoring set. - name: seasonal-snapshot fields: 7 description: Proposes the continuous and emergency ratings for the specified Season. - name: seasonal-snapshot-header fields: 4 description: Details about the snapshot provided by the Clearinghouse provider. - name: seasonal-snapshot-header-elide-psr fields: 3 description: Details about the snapshot provided by the Clearinghouse provider. The - name: temporary-aar-exception fields: 8 description: Data structure for a temporary AAR Exception against a resource. - name: temporary-aar-exception-provenance fields: 8 description: Data structure for a temporary AAR Exception against a resource. - name: temporary-aar-exception-request fields: 7 description: Represents a temporary AAR Exception against a resource. - name: undervoltage-threshold fields: 1 description: A lower limit to voltage for a transmission facility in kilovolts. - name: undervoltage-threshold-pu fields: 1 description: An lower limit to voltage for a transmission facility in per unit with the nominal voltage assumed to be the base voltage. relationships: - from: forecast-snapshot-header to: data-provenance type: has_one via: source - from: forecast-snapshot to: limit type: has_one via: continuous-operating-limit - from: forecast-limit-item to: forecast-snapshot type: has_many via: periods - from: forecast-limits-snapshot to: forecast-snapshot-header type: has_one via: snapshot-header - from: forecast-limits-snapshot to: forecast-limit-item type: has_many via: limits - from: forecast-snapshot-header-elide-psr to: data-provenance type: has_one via: source - from: forecast-limits-snapshot-elide-psr to: forecast-snapshot-header-elide-psr type: has_one via: snapshot-header - from: forecast-limits-snapshot-elide-psr to: forecast-limit-item type: has_many via: limits - from: forecast-snapshot-slim-header to: data-provenance type: has_one via: source - from: forecast-limits-snapshot-slim to: forecast-snapshot-slim-header type: has_one via: snapshot-header - from: forecast-limits-snapshot-slim-inputs-used to: forecast-snapshot-slim-header type: has_one via: snapshot-header - from: forecast-snapshot-detailed to: limit type: has_one via: continuous-operating-limit - from: forecast-limit-item-detailed to: forecast-snapshot-detailed type: has_many via: periods - from: forecast-provenance to: limit type: has_one via: continuous-operating-limit - from: forecast-provenance to: input type: has_many via: inputs-used - from: forecast-provenance to: data-provenance type: has_one via: source - from: temporary-aar-exception-provenance to: data-provenance type: has_one via: source - from: temporary-aar-exception-provenance to: names type: has_one via: resource - from: temporary-aar-exception-provenance to: limit type: has_one via: continuous-operating-limit - from: operator-override-limit-provenance to: data-provenance type: has_one via: source - from: operator-override-limit-provenance to: names type: has_one via: resource - from: operator-override-limit-provenance to: limit type: has_one via: continuous-operating-limit - from: forecast-limits-detailed-snapshot to: forecast-snapshot-header type: has_one via: snapshot-header - from: forecast-limits-detailed-snapshot to: forecast-limit-item-detailed type: has_many via: limits - from: forecast-limits-detailed-snapshot-elide-psr to: forecast-snapshot-header-elide-psr type: has_one via: snapshot-header - from: forecast-limits-detailed-snapshot-elide-psr to: forecast-limit-item-detailed type: has_many via: limits - from: forecast-proposal-header to: data-provenance type: has_one via: source - from: forecast-proposal to: limit type: has_one via: continuous-operating-limit - from: forecast-proposal to: input type: has_many via: inputs-used - from: resource-forecast-proposal to: forecast-proposal type: has_many via: periods - from: array-max-monitored-elements_forecast-proposal to: forecast-proposal-header type: has_one via: proposal-header - from: array-max-monitored-elements_forecast-proposal to: resource-forecast-proposal type: has_many via: ratings - from: forecast-proposal-slim-header to: data-provenance type: has_one via: source - from: forecast-proposal-slim to: forecast-proposal-slim-header type: has_one via: proposal-header - from: forecast-proposal-status to: names type: has_many via: incomplete-obligations - from: forecast-proposal-status to: data-provenance type: has_one via: source - from: real-time-proposal-status to: names type: has_many via: incomplete-obligations - from: real-time-proposal-status to: data-provenance type: has_one via: source - from: real-time-proposal-header to: data-provenance type: has_one via: source - from: real-time-proposal to: limit type: has_one via: continuous-operating-limit - from: real-time-proposal to: input type: has_many via: inputs-used - from: realtime-proposal to: real-time-proposal-header type: has_one via: proposal-header - from: realtime-proposal to: real-time-proposal type: has_many via: ratings - from: real-time-proposal-slim-header to: data-provenance type: has_one via: source - from: realtime-proposal-slim to: real-time-proposal-slim-header type: has_one via: proposal-header - from: real-time-snapshot-header to: data-provenance type: has_one via: source - from: realtime-snapshot to: limit type: has_one via: continuous-operating-limit - from: realtime-limits-snapshot to: real-time-snapshot-header type: has_one via: snapshot-header - from: realtime-limits-snapshot to: realtime-snapshot type: has_many via: limits - from: real-time-snapshot-header-elide-psr to: data-provenance type: has_one via: source - from: realtime-limits-snapshot-elide-psr to: real-time-snapshot-header-elide-psr type: has_one via: snapshot-header - from: realtime-limits-snapshot-elide-psr to: realtime-snapshot type: has_many via: limits - from: realtime-snapshot-detailed to: limit type: has_one via: continuous-operating-limit - from: real-time-provenance to: limit type: has_one via: continuous-operating-limit - from: real-time-provenance to: input type: has_many via: inputs-used - from: real-time-provenance to: data-provenance type: has_one via: source - from: realtime-limits-detailed-snapshot to: real-time-snapshot-header type: has_one via: snapshot-header - from: realtime-limits-detailed-snapshot to: realtime-snapshot-detailed type: has_many via: limits - from: realtime-limits-detailed-snapshot-elide-psr to: real-time-snapshot-header-elide-psr type: has_one via: snapshot-header - from: realtime-limits-detailed-snapshot-elide-psr to: realtime-snapshot-detailed type: has_many via: limits - from: realtime-limits-snapshot-slim to: real-time-snapshot-header type: has_one via: snapshot-header - from: realtime-limits-snapshot-slim-inputs-used to: real-time-snapshot-header type: has_one via: snapshot-header - from: seasonal-snapshot-header to: data-provenance type: has_one via: source - from: seasonal-snapshot to: limit type: has_one via: continuous-operating-limit - from: seasonal-rating-snapshot-item to: seasonal-snapshot type: has_many via: periods - from: seasonal-ratings-snapshot to: seasonal-snapshot-header type: has_one via: snapshot-header - from: seasonal-ratings-snapshot to: seasonal-rating-snapshot-item type: has_many via: ratings - from: seasonal-proposal-considered to: limit type: has_one via: continuous-operating-limit - from: seasonal-proposal-considered to: input type: has_many via: inputs-used - from: seasonal-proposal-considered to: data-provenance type: has_one via: source - from: seasonal-ratings-snapshot-detailed to: seasonal-snapshot-header type: has_one via: snapshot-header - from: seasonal-ratings-snapshot-detailed to: seasonal-rating-snapshot-item type: has_many via: ratings - from: seasonal-ratings-snapshot-detailed to: seasonal-rating-snapshot-provenance-item type: has_many via: provenance - from: seasonal-snapshot-header-elide-psr to: data-provenance type: has_one via: source - from: seasonal-ratings-snapshot-detailed-elide-psr to: seasonal-snapshot-header-elide-psr type: has_one via: snapshot-header - from: seasonal-ratings-snapshot-detailed-elide-psr to: seasonal-rating-snapshot-item type: has_many via: ratings - from: seasonal-ratings-snapshot-detailed-elide-psr to: seasonal-rating-snapshot-provenance-item type: has_many via: provenance - from: missing-seasonal-obligation to: season type: has_many via: periods - from: seasonal-ratings-proposal-status to: missing-seasonal-obligation type: has_many via: incomplete-obligations - from: seasonal-ratings-proposal-status to: data-provenance type: has_one via: source - from: seasonal-proposal-header to: data-provenance type: has_one via: source - from: seasonal-proposal to: limit type: has_one via: continuous-operating-limit - from: seasonal-proposal to: input type: has_many via: inputs-used - from: seasonal-proposals to: seasonal-proposal type: has_many via: periods - from: seasonal-ratings-proposal to: seasonal-proposal-header type: has_one via: proposal-header - from: seasonal-ratings-proposal to: seasonal-proposals type: has_many via: ratings - from: seasonal-proposal-header-slim to: data-provenance type: has_one via: source - from: seasonal-ratings-proposal-slim to: seasonal-proposal-header-slim type: has_one via: proposal-header - from: seasonal-override to: data-provenance type: has_one via: source - from: seasonal-override to: names type: has_one via: resource - from: seasonal-override to: limit type: has_one via: continuous-operating-limit - from: seasonal-override-request to: data-provenance type: has_one via: source - from: seasonal-override-request to: names type: has_one via: resource - from: seasonal-override-request to: limit type: has_one via: continuous-operating-limit - from: temporary-aar-exception to: data-provenance type: has_one via: source - from: temporary-aar-exception to: names type: has_one via: resource - from: temporary-aar-exception to: limit type: has_one via: continuous-operating-limit - from: temporary-aar-exception-request to: data-provenance type: has_one via: source - from: temporary-aar-exception-request to: names type: has_one via: resource - from: temporary-aar-exception-request to: limit type: has_one via: continuous-operating-limit - from: response to: data-provenance type: has_one via: source - from: response_v2 to: data-provenance type: has_one via: source