Temporary Ratings
FERC Order 881 includes a provision that allows grid operators to temporarily set aside AARs to address immediate threats to reliability by temporarily using an alternate static rating for a facility. These temporary ratings used must be documented and stored in a database, accessible for 5 years.
TROLIE includes two kinds of temporary ratings objects:
- Temporary AAR Exceptions are temporary exemptions from AAR obligations due to exceptional circumstances. These are records that include a time-bound set of static ratings against a particular resource, with a free-text explanation as to why the exception occurred. This typically relates to an outage or other physical need to “de-rate” a line.
- Seasonal Overrides are to be used by the Clearinghouse in lieu of seasonal ratings on a temporary basis. Their structure is identical to Temporary AAR Exceptions (assuming DAY/NIGHT seasonal ratings are not involved). However, the use cases are quite different. Examples include:
- For resources that are AAR-exempt and only support seasonal ratings, the Seasonal Override serves a similar purpose to Temporary AAR Exceptions.
- Adjacent Transmission Providers update seasonal ratings independently. Sometimes these changes are temporary or occur on an offset schedule. Seasonal Overrides provide a tool to handle these updates without requiring a model build.
- Where the seasonal rating is used as a recourse rating, a Seasonal Override is effectively the recourse rating.
Creating Temporary Ratings
Temporary ratings, whether they be Temporary AAR Exceptions or Seasonal Overrides, are created in
much the same manner. The following input.json
example could be used to create either a
Temporary AAR Exception or Seasonal Override either by invoking
createTemporaryAARException
or
createSeasonalOverride
respectively:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
{
"source": {
"provider":"X-AMPL",
"last-updated": "2023-07-12T15:05:43.044267100-07:00",
"origin-id": "//trolie.example.com/temporary-aar-exceptions/46f7212b-1633-4c30-ba71-c6e987b2ded7"
},
"resource": {
"resource-id": "8badf00d",
"alternate-identifiers": [
{
"name": "segmentX",
"authority": "TO-NERC-ID"
},
{
"name": "LINE1 SEG-X",
"authority": "RC-NERC-ID",
"mrid": "8badf00d"
}
]
},
"start-time": "2025-07-12T16:00:00-07:00",
"end-time": "2025-07-13T12:00:00-07:00",
"continuous-operating-limit": {
"mva": 160
},
"emergency-operating-limits": [
{
"duration-name": "emergency",
"limit": {
"mva": 165
}
},
{
"duration-name": "load-shed",
"limit": {
"mva": 170
}
}
],
"reason": "High wildfire risk forecasted until mid-day 7/13/25"
}
Note that the structures for origin, the associated power system resources and its aliases, as well as the rating values themselves all follow similar patterns and usages to AAR proposal submissions.
Creating a Temporary AAR Exception with curl
Given the above input.json
, run the following command to send it to the TROLIE server:
1
2
3
4
5
6
curl -d @input.json \
-X POST \
-H "Content-Type: application/vnd.trolie.temporary-aar-exception.v1+json" \
-H "Accept: application/vnd.trolie.temporary-aar-exception.v1+json" \
-o output.json \
"https://trolie.example.com/temporary-aar-exceptions"
If this submission is successful, output.json
will contain the contents of the
response from TROLIE. This response is identical to the input, except that the TROLIE
server will have assigned an ID to the exception. An example of this response format
is given below:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
{
"source": {
"provider":"X-AMPL",
"last-updated": "2023-07-12T15:05:43.044267100-07:00",
"origin-id": "//trolie.example.com/temporary-aar-exceptions/46f7212b-1633-4c30-ba71-c6e987b2ded7"
},
"id": "46f7212b-1633-4c30-ba71-c6e987b2ded7",
"resource": {
"resource-id": "8badf00d",
"alternate-identifiers": [
{
"name": "segmentX",
"authority": "TO-NERC-ID"
},
{
"name": "LINE1 SEG-X",
"authority": "RC-NERC-ID",
"mrid": "8badf00d"
}
]
},
"start-time": "2025-07-12T16:00:00-07:00",
"end-time": "2025-07-13T12:00:00-07:00",
"continuous-operating-limit": {
"mva": 160
},
"emergency-operating-limits": [
{
"duration-name": "emergency",
"limit": {
"mva": 165
}
},
{
"duration-name": "load-shed",
"limit": {
"mva": 170
}
}
],
"reason": "High wildfire risk forecasted until mid-day 7/13/25"
}
Updating and Deleting Temporary Ratings
Once created, the temporary ratings may be updated. This is often needed if the anticipated end time changes, or if more detail needs to be added to the reason. For the Temporary AAR Exception created above, this may be achieved by invoking updateTemporaryAARException.
Assuming the output.json
file above was modified as desired, the Temporary
AAR Exception may be updated with the following command. Note that the ID
returned from the create operation must be used in the URL:
1
2
3
4
5
curl -d @output.json \
-X PUT \
-H "Content-Type: application/vnd.trolie.temporary-aar-exception.v1+json" \
-H "Accept: application/vnd.trolie.temporary-aar-exception.v1+json" \
"https://trolie.example.com/temporary-aar-exceptions/46f7212b-1633-4c30-ba71-c6e987b2ded7"
Finally, the temporary rating may also have been created by mistake. As long as it hasn’t started yet, it may be deleted it using deleteTemporaryAARException This can be done with the following command:
1
2
3
curl
-X DELETE \
"https://trolie.example.com/temporary-aar-exceptions/46f7212b-1633-4c30-ba71-c6e987b2ded7"
Alternatively, if a temporary rating’s window has begun, then it may be effectively “canceled” by updating its end time to the current time.
Searching for Temporary Ratings
Temporary ratings that have been submitted to TROLIE may be searched, using either getTemporaryAARExceptions or getSeasonalOverrides. These queries may be filtered with query parameters, including start/end time windows, monitoring sets and individual resources.
The following example command queries Temporary AAR Exceptions starting from 7/11 to 7/20, for any
resource within my-monitoring-set
:
1
2
3
4
curl \
-H "Accept: application/vnd.trolie.temporary-aar-exception-set.v1+json" \
-o output.json \
"https://trolie.example.com/temporary-aar-exceptions?monitoring-set=my-monitoring-set&period-start=2025-07-11T00:00:00-07:00&period-env=2025-07-20T00:00:00-07:00"
The resulting output.json
file could then look like the following:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
[
{
"source": {
"provider":"X-AMPL",
"last-updated": "2023-07-12T15:05:43.044267100-07:00",
"origin-id": "//trolie.example.com/temporary-aar-exceptions/46f7212b-1633-4c30-ba71-c6e987b2ded7"
},
"id": "46f7212b-1633-4c30-ba71-c6e987b2ded7",
"resource": {
"resource-id": "8badf00d",
"alternate-identifiers": [
{
"name": "segmentX",
"authority": "TO-NERC-ID"
},
{
"name": "LINE1 SEG-X",
"authority": "RC-NERC-ID",
"mrid": "8badf00d"
}
]
},
"start-time": "2025-07-12T16:00:00-07:00",
"end-time": "2025-07-13T12:00:00-07:00",
"continuous-operating-limit": {
"mva": 160
},
"emergency-operating-limits": [
{
"duration-name": "emergency",
"limit": {
"mva": 165
}
},
{
"duration-name": "load-shed",
"limit": {
"mva": 170
}
}
],
"reason": "High wildfire risk forecasted until mid-day 7/13/25"
}
]