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"
  }
]