Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

reconciliation article #164

Merged
merged 2 commits into from
Sep 23, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions cspell.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,13 @@
"dictionaries": [],
"words": [
"affordance"
,"affordances"
,"auditability"
,"brotli"
,"CGMES"
,"debuggability"
,"derate"
,"derated"
,"devcontainer"
,"ENTSO"
,"excalidraw"
Expand Down
4 changes: 3 additions & 1 deletion docs/Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,9 @@ GEM
ffi (>= 1.15.0)
eventmachine (1.2.7)
execjs (2.9.1)
faraday (2.11.0)
faraday (2.12.0)
faraday-net_http (>= 2.0, < 3.4)
json
logger
faraday-net_http (3.3.0)
net-http
Expand Down Expand Up @@ -211,6 +212,7 @@ GEM
gemoji (>= 3, < 5)
html-pipeline (~> 2.2)
jekyll (>= 3.0, < 5.0)
json (2.7.2)
just-the-docs (0.10.0)
jekyll (>= 3.8.5)
jekyll-include-cache
Expand Down
2 changes: 1 addition & 1 deletion docs/_data/paths/limits_realtime-snapshot.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ get:
schema:
$ref: "../components/schemas/array-max-monitored-elements.yaml#/realtime-limits-snapshot"
example:
$ref: '../../example-narratives/examples/realtime-limit-set-slim.json'
$ref: '../../example-narratives/examples/realtime-limit-set.json'
application/vnd.trolie.realtime-limits-detailed-snapshot.v1+json:
schema:
$ref: "../components/schemas/array-max-monitored-elements.yaml#/realtime-limits-detailed-snapshot"
Expand Down
74 changes: 70 additions & 4 deletions docs/example-narratives/examples/realtime-limit-set-detailed.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
},
{
"name": "dal",
"duration-minutes": 15
"duration-minutes": 5
}
],
"power-system-resources": [
Expand All @@ -38,8 +38,74 @@
},
"limits": [
{
"resource-id": "line2",
"proposals-considered": [],
"resource-id": "8badf00d",
"period-start":"2025-07-12T15:00:00-07:00",
"period-end":"2025-07-12T16:00:00-07:00",
"proposals-considered": [
{
"source":{
"last-updated": "2025-07-12T14:10:12-07:00",
"provider": "UTILITY-A"
},
"period-start":"2025-07-12T15:00:00-07:00",
"period-end":"2025-07-12T16:00:00-07:00",
"proposal-disposition": "Used",
"continuous-operating-limit": {
"mva": 150
},
"emergency-operating-limits": [
{
"duration-name": "lte",
"limit": {
"mva": 165
}
},
{
"duration-name": "ste",
"limit": {
"mva": 170
}
},
{
"duration-name": "dal",
"limit": {
"mva": 180
}
}
]
},{
"source":{
"last-updated": "2025-07-12T14:10:12-07:00",
"provider": "UTILITY-B"
},
"period-start":"2025-07-12T15:00:00-07:00",
"period-end":"2025-07-12T16:00:00-07:00",
"proposal-disposition": "Used",
"continuous-operating-limit": {
"mva": 150
},
"emergency-operating-limits": [
{
"duration-name": "lte",
"limit": {
"mva": 166
}
},
{
"duration-name": "ste",
"limit": {
"mva": 171
}
},
{
"duration-name": "dal",
"limit": {
"mva": 175
}
}
]
}
],
"temporary-aar-exceptions": [
"2d8c80e8-f533-4be9-85bf-f7f81eb73d67"
],
Expand All @@ -66,7 +132,7 @@
{
"duration-name": "dal",
"limit": {
"mva": 180
"mva": 175
}
}
]
Expand Down
4 changes: 2 additions & 2 deletions docs/example-narratives/in-use-realtime-limits.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ nav_order: 4
Assuming a MonitoringSet "my-monitoring-set" that contains TransmissionFacilities of interest, then the current in-use real-time limits may be fetched with the following command:

```bash
curl -H "Accept: application/vnd.trolie.realtime-limits-slim-snapshot.v1+json" \
curl -H "Accept: application/vnd.trolie.realtime-limits-snapshot.v1+json" \
-o output.json \
"https://trolie.example.com/limits/realtime-snapshot?monitoring-set=my-monitoring-set"
```
Expand All @@ -20,7 +20,7 @@ they were submitted through TROLIE, through ICCP, or derived by the Transmission
through some other means. See the following for an example:

```json
{% include_relative examples/realtime-limit-set-slim.json %}
{% include_relative examples/realtime-limit-set.json %}
```

**NOTE**: This query is an example of an HTTP GET. In addition to curl, the same URL may also be placed in a web browser to see the data.
Expand Down
57 changes: 57 additions & 0 deletions docs/example-narratives/reconciliation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
---
title: Reconciliation with Limit Snapshots
parent: Usage Examples
nav_order: 6
---

# Reconciliation with Limit Snapshots

A central concept in TROLIE is the Clearinghouse. [Ratings
Providers](../concepts#ratings-provider) propose ratings, and the [Clearinghouse
Provider](../concepts#clearinghouse-provider) determines operating limits:
**ratings in, limits out**.

<img src="../images/reconciliation.excalidraw.png" alt="Reconciliation Diagram" width="600">

Crucially, the limits determined by the Clearinghouse Provider may differ from
the ratings proposed by any individual Ratings Provider. In this article we
will briefly describe the API affordances that support reconciliation of limits
(produced by the Clearinghouse) with the ratings proposed by the Ratings
Provider. Our example with focus on real-time ratings, but the basic approach
applies to forecast ratings as well.

We have discussed [Real-Time Rating Submittal](submitting-realtime-ratings) and
[Querying in-use Real-Time Limits](in-use-realtime-limits) elsewhere. Here we
will focus on making use of the provenance information in
`application/vnd.trolie.realtime-limits-detailed-snapshot.v1+json`. For more
details on the different response messages available in TROLIE, see the article
on [Media Types](../articles/media-types#read-requests).


#### Request
```bash
curl -H "Accept: application/vnd.trolie.realtime-limits-detailed-snapshot.v1+json" \
$TROLIE_SERVER_URL/limits/realtime-snapshot?monitoring-set=my-monitoring-set
```

#### Response

Some headers are elided for clarity, but a successful response will start with:

```http
HTTP/1.1 200 OK
Content-Type: application/vnd.trolie.realtime-limits-detailed-snapshot.v1+json
```

Here's an example of the body of the response:

```json
{% include_relative examples/realtime-limit-set-detailed.json %}
```

#### Discussion

The `proposals-considered` array contains the salient details of the ratings
proposals that were considered. Note that in this example the continuous,
"lte", and "ste" limits were determined by UTILITY-A but the "dal" limit was set
by UTILITY-B.
Binary file added docs/images/reconciliation.excalidraw.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.