{"openapi":"3.1.0","info":{"title":"Grid Status API","version":"1.3.0"},"servers":[{"url":"https://api.gridstatus.io/v1"}],"paths":{"/":{"get":{"tags":["API Info"],"summary":"API Info","operationId":"api_info_v1__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIInfoResponse"}}}}}}},"/block-pricing/{iso}":{"get":{"tags":["Block Pricing Data"],"summary":"Get Block Pricing","description":"Returns block-averaged prices for an ISO over the requested date range.\n\nThe response is a list of columns. Daily columns (keyed by ISO date) cover the requested range, and additional summary columns are appended: `MTD` (month-to-date) and a `Month-Year` label for each full month spanned. Each column's `value` is the volume-weighted average price for the block over that window.\n\nEach datum includes `pct_change`, the percent change of `value` relative to the previous period for the same market and block (prior market day for daily columns; prior calendar month for summary columns). It is null when the previous period has no value or when the prior value is zero.\n\nThe `complete` flag indicates whether every interval in the window has reported data; it is `false` for in-progress windows such as the current day or month-to-date.","operationId":"get_block_pricing_v1_block_pricing__iso__get","parameters":[{"name":"iso","in":"path","required":true,"schema":{"$ref":"#/components/schemas/ISOEnum","description":"ISO identifier used to resolve the backing block pricing dataset."},"description":"ISO identifier used to resolve the backing block pricing dataset."},{"name":"params","in":"query","required":true,"schema":{"$ref":"#/components/schemas/BlockPricingQueryParams"}},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (query)","title":"Api Key"},"description":"API key for authentication (query)"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (header)","title":"X-Api-Key"},"description":"API key for authentication (header)"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BlockPricingDateGroup"},"title":"Response Get Block Pricing V1 Block Pricing  Iso  Get"},"example":[{"date":"2024-01-01","is_nerc_holiday":true,"data":[{"market":"da","block":"7x24","value":31.42,"complete":true},{"market":"da","block":"on-peak","value":38.15,"complete":true},{"market":"da","block":"off-peak","value":24.69,"complete":true},{"market":"rt","block":"7x24","value":29.87,"complete":true}]},{"date":"2024-01-02","is_nerc_holiday":false,"data":[{"market":"da","block":"7x24","value":33.1,"pct_change":5.35,"complete":true},{"market":"rt","block":"7x24","value":30.55,"pct_change":2.28,"complete":false}]},{"date":"MTD","is_nerc_holiday":false,"data":[{"market":"da","block":"7x24","value":32.26,"complete":false},{"market":"da","block":"on-peak","value":39.04,"complete":false}]},{"date":"Jan-2024","is_nerc_holiday":false,"data":[{"market":"da","block":"7x24","value":32.26,"complete":false}]}]}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/datasets":{"get":{"tags":["Dataset Metadata"],"summary":"List Datasets","description":"List all published datasets a user has access to\n\nSee list of available datasets here: https://www.gridstatus.io/datasets","operationId":"list_datasets_v1_datasets_get","parameters":[{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (query)","title":"Api Key"},"description":"API key for authentication (query)"},{"name":"return_format","in":"query","required":false,"schema":{"$ref":"#/components/schemas/ReturnFormat","description":"The return format of the response","default":"json"},"description":"The return format of the response"},{"name":"download","in":"query","required":false,"schema":{"type":"boolean","description":"Whether to download the file or not","default":false,"title":"Download"},"description":"Whether to download the file or not"},{"name":"json_schema","in":"query","required":false,"schema":{"$ref":"#/components/schemas/JSONSchema","description":"The json schema of the response","default":"array-of-objects"},"description":"The json schema of the response"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (header)","title":"X-Api-Key"},"description":"API key for authentication (header)"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListDatasetsResponse"},"example":{"status_code":200,"data":[{"id":"caiso_as_prices","name":"CAISO AS Prices","description":"Ancillary Services Prices as reported by CAISO.\n\n**AS Mapping**\n\nThe *_EXP show only the intertie resources.\n \n-    AS_SP26_P: Resources in AS_SP26\n-    AS_NP26_P: Resources in AS_NP26\n-    AS_SP15_P: Resources in AS_SP15\n-    AS_NP15_P: Resources in AS_NP15\n-    AS_SP26_EXP_P: Resources in AS_SP26_EXP which are not in AS_SP26\n-    AS_NP26_EXP_P: Resources in AS_NP26_EXP which are not in AS_NP26\n-    AS_SP15_EXP_P: Resources in AS_SP15_EXP which are not in AS_SP15\n-    AS_NP15_EXP_P: Resources in AS_NP15_EXP which are not in AS_NP15\n-    AS_CAISO_NP26_P: Resources in AS_CAISO which are not in AS_SP26\n-    AS_CAISO_SP26_P: Resources in AS_CAISO which are not in AS_NP26\n-    AS_CAISO_NP15_P: Resources in AS_CAISO which are not in AS_SP15\n-    AS_CAISO_SP15_P: Resources in AS_CAISO which are not in AS_NP15","earliest_available_time_utc":"2010-01-01T08:00:00+00:00","latest_available_time_utc":"2025-05-20T06:00:00+00:00","source":"caiso","last_checked_time_utc":"2025-05-19T19:10:58+00:00","primary_key_columns":["interval_start_utc","region","market"],"time_index_column":"interval_start_utc","subseries_index_column":"region","all_columns":[{"name":"interval_start_utc","type":"TIMESTAMP","is_numeric":false,"is_date":false,"is_datetime":true},{"name":"interval_end_utc","type":"TIMESTAMP","is_numeric":false,"is_date":false,"is_datetime":true},{"name":"region","type":"VARCHAR","is_numeric":false,"is_date":false,"is_datetime":false},{"name":"market","type":"VARCHAR","is_numeric":false,"is_date":false,"is_datetime":false},{"name":"non_spinning_reserves","type":"DOUBLE PRECISION","is_numeric":true,"is_date":false,"is_datetime":false},{"name":"regulation_down","type":"DOUBLE PRECISION","is_numeric":true,"is_date":false,"is_datetime":false},{"name":"regulation_mileage_down","type":"DOUBLE PRECISION","is_numeric":true,"is_date":false,"is_datetime":false},{"name":"regulation_mileage_up","type":"DOUBLE PRECISION","is_numeric":true,"is_date":false,"is_datetime":false},{"name":"regulation_up","type":"DOUBLE PRECISION","is_numeric":true,"is_date":false,"is_datetime":false},{"name":"spinning_reserves","type":"DOUBLE PRECISION","is_numeric":true,"is_date":false,"is_datetime":false}],"number_of_rows_approximate":621445,"table_type":"table","is_in_snowflake":true,"data_frequency":"1_HOUR","source_url":"http://oasis.caiso.com/mrioasis/logon.do","is_published":true,"created_at_utc":"2023-04-20T07:00:37.935862Z","status":"active","popularity_rank":46},{"id":"spp_ver_curtailments","name":"SPP VER Curtailments","description":"VER curtailment data in 5 minute intervals for SPP.\nTotal VER curtailment (not per resource).","earliest_available_time_utc":"2014-03-01T06:00:00+00:00","latest_available_time_utc":"2025-05-19T04:55:00+00:00","source":"spp","last_checked_time_utc":"2025-05-19T19:12:06+00:00","primary_key_columns":["interval_start_utc"],"time_index_column":"interval_start_utc","all_columns":[{"name":"interval_start_utc","type":"TIMESTAMP","is_numeric":false,"is_date":false,"is_datetime":true},{"name":"interval_end_utc","type":"TIMESTAMP","is_numeric":false,"is_date":false,"is_datetime":true},{"name":"wind_redispatch_curtailments","type":"DOUBLE PRECISION","is_numeric":true,"is_date":false,"is_datetime":false},{"name":"wind_manual_curtailments","type":"DOUBLE PRECISION","is_numeric":true,"is_date":false,"is_datetime":false},{"name":"wind_curtailed_for_energy","type":"DOUBLE PRECISION","is_numeric":true,"is_date":false,"is_datetime":false},{"name":"solar_redispatch_curtailments","type":"DOUBLE PRECISION","is_numeric":true,"is_date":false,"is_datetime":false},{"name":"solar_manual_curtailments","type":"DOUBLE PRECISION","is_numeric":true,"is_date":false,"is_datetime":false},{"name":"solar_curtailed_for_energy","type":"DOUBLE PRECISION","is_numeric":true,"is_date":false,"is_datetime":false}],"number_of_rows_approximate":1141332,"table_type":"table","is_in_snowflake":true,"data_frequency":"5_MINUTES","source_url":"https://marketplace.spp.org/pages/ver-curtailments","is_published":true,"created_at_utc":"2023-05-17T17:21:02.118072Z","status":"active"}],"meta":{"page":1},"dataset_metadata":{"resample_conversion":{"1_MINUTE":60,"5_MINUTES":300,"15_MINUTES":900,"1_HOUR":3600,"1_DAY":86400,"1_DAY_MARKET":86400,"1_WEEK":604800,"1_MONTH":2592000,"1_YEAR":31536000,"IRREGULAR":-1}}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/datasets/{dataset_id}":{"get":{"tags":["Dataset Metadata"],"summary":"Get Dataset Metadata","description":"Get a dataset and its metadata","operationId":"get_dataset_metadata_v1_datasets__dataset_id__get","parameters":[{"name":"dataset_id","in":"path","required":true,"schema":{"type":"string","title":"Dataset Id"}},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (query)","title":"Api Key"},"description":"API key for authentication (query)"},{"name":"return_format","in":"query","required":false,"schema":{"$ref":"#/components/schemas/ReturnFormat","description":"The return format of the response","default":"json"},"description":"The return format of the response"},{"name":"download","in":"query","required":false,"schema":{"type":"boolean","description":"Whether to download the file or not","default":false,"title":"Download"},"description":"Whether to download the file or not"},{"name":"json_schema","in":"query","required":false,"schema":{"$ref":"#/components/schemas/JSONSchema","description":"The json schema of the response","default":"array-of-objects"},"description":"The json schema of the response"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (header)","title":"X-Api-Key"},"description":"API key for authentication (header)"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetResponse"},"example":{"id":"ercot_lmp_by_bus","name":"ERCOT LMP By Bus","description":"The Locational Marginal Price for each Electrical Bus in ERCOT,\nnormally produced by SCED every five minutes. \n\nThe location type present is:\n\n- *Electrical Bus*\n\nSee list of available locations\nby using the `ercot_electrical_buses` dataset.","earliest_available_time_utc":"2020-01-01T06:00:26Z","latest_available_time_utc":"2025-05-19T19:25:12Z","source":"ercot","last_checked_time_utc":"2025-05-19T19:25:59.143841Z","primary_key_columns":["sced_timestamp_utc","location"],"time_index_column":"sced_timestamp_utc","subseries_index_column":"location","all_columns":[{"name":"sced_timestamp_utc","type":"TIMESTAMP","is_numeric":false,"is_date":false,"is_datetime":true},{"name":"market","type":"VARCHAR","is_numeric":false,"is_date":false,"is_datetime":false},{"name":"location","type":"VARCHAR","is_numeric":false,"is_date":false,"is_datetime":false},{"name":"location_type","type":"VARCHAR","is_numeric":false,"is_date":false,"is_datetime":false},{"name":"lmp","type":"DOUBLE PRECISION","is_numeric":true,"is_date":false,"is_datetime":false}],"number_of_rows_approximate":8444429824,"table_type":"table","is_in_snowflake":true,"data_frequency":"ERCOT_SCED_RUN","source_url":"https://www.ercot.com/mp/data-products/data-product-details?id=NP6-787-CD","is_published":true,"created_at_utc":"2023-10-10T17:37:45.625368Z","status":"active","popularity_rank":46}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/datasets/{dataset_id}/audit":{"get":{"tags":["Dataset Audit"],"summary":"Get Dataset Audit","description":"Returns audit data by market date for a given dataset\n\n* market_date: The market date for which the audit data is being returned\n\n* number_of_datapoints: The total number of rows\n\n* number_of_unique_time_index_values: The total number of unique time index\n  values\n\n* number_of_unique_subseries_index_values: The total number of unique\n  subseries index values\n\n* number_of_unique_publish_times_on_publish_date: The total number of\n  unique publish time values where the publish time occurred on the given\n  market date","operationId":"get_dataset_audit_v1_datasets__dataset_id__audit_get","parameters":[{"name":"dataset_id","in":"path","required":true,"schema":{"type":"string","title":"Dataset Id"}},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (query)","title":"Api Key"},"description":"API key for authentication (query)"},{"name":"return_format","in":"query","required":false,"schema":{"$ref":"#/components/schemas/ReturnFormat","description":"The return format of the response","default":"json"},"description":"The return format of the response"},{"name":"download","in":"query","required":false,"schema":{"type":"boolean","description":"Whether to download the file or not","default":false,"title":"Download"},"description":"Whether to download the file or not"},{"name":"json_schema","in":"query","required":false,"schema":{"$ref":"#/components/schemas/JSONSchema","description":"The json schema of the response","default":"array-of-objects"},"description":"The json schema of the response"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (header)","title":"X-Api-Key"},"description":"API key for authentication (header)"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetAuditResponse"},"example":{"status_code":200,"data":[{"market_date":"2025-01-01","number_of_datapoints":100,"number_of_unique_time_index_values":100,"number_of_unique_subseries_index_values":100,"number_of_unique_publish_times_on_publish_date":100},{"market_date":"2025-01-02","number_of_datapoints":100,"number_of_unique_time_index_values":100,"number_of_unique_subseries_index_values":100,"number_of_unique_publish_times_on_publish_date":100}],"meta":{"page":1}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/datasets/{dataset_id}/query":{"get":{"tags":["Query Data"],"summary":"Query Dataset","description":"Query a dataset and return matching rows as JSON or CSV.\n\nPass the ``X-Stream: true`` request header to stream JSON rows directly from a\nPostgres server-side cursor instead of buffering the entire result set in\nmemory first (JSON only; ignored for CSV and external datasets). In streaming\nmode the result-dependent ``X-Has-Next-Page`` and ``X-rows-in-response``\nheaders are omitted -- read pagination from the JSON ``meta.hasNextPage`` and\n``meta.cursor`` fields, which are populated identically on both paths.","operationId":"query_dataset_v1_datasets__dataset_id__query_get","parameters":[{"name":"dataset_id","in":"path","required":true,"schema":{"type":"string","title":"Dataset ID","description":"ID of the dataset to query"},"description":"ID of the dataset to query"},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (query)","title":"Api Key"},"description":"API key for authentication (query)"},{"name":"order","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/OrderBy"},{"type":"null"}],"description":"The order to order results by","default":"asc","title":"Order"},"description":"The order to order results by"},{"name":"filter_column","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The column to filter results by","title":"Filter Column"},"description":"The column to filter results by"},{"name":"filter_value","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"number"},{"type":"string"},{"type":"null"}],"description":"The value to filter results by","title":"Filter Value"},"description":"The value to filter results by"},{"name":"filter_operator","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/FilterOperator"},{"type":"null"}],"default":"=","title":"Filter Operator"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"The maximum number of rows to return across all pages","title":"Limit"},"description":"The maximum number of rows to return across all pages"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","description":"The page number of results to return","default":1,"title":"Page"},"description":"The page number of results to return"},{"name":"page_size","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"The maximum number of rows to return in a single page","title":"Page Size"},"description":"The maximum number of rows to return in a single page"},{"name":"columns","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"string"},{"type":"null"}],"description":"Comma separated list of columns to return. Defaults to all columns.","title":"Columns"},"description":"Comma separated list of columns to return. Defaults to all columns."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"timezone","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The timezone to use when interpreting timezone naive timestamps, resampling to frequencies one day or more, and returning results. A value of `market`can be provided to return results in the timezone of the source ISO for the dataset. If `market` is specified and the dataset does not have a source ISO, the timezone will default to UTC for the query. When provided, columns in the `timezone` will be suffixed with `_local`.","default":"UTC","title":"Timezone"},"description":"The timezone to use when interpreting timezone naive timestamps, resampling to frequencies one day or more, and returning results. A value of `market`can be provided to return results in the timezone of the source ISO for the dataset. If `market` is specified and the dataset does not have a source ISO, the timezone will default to UTC for the query. When provided, columns in the `timezone` will be suffixed with `_local`."},{"name":"time","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"},{"type":"null"}],"description":"The time to filter results. Cannot be used with start_time or end_time.\n\nPossible values:\n\n- 'latest': Fetches the most recently reported data point.\n\n- A specific timestamp string (ISO 8601 format): Returns records that were published at the provided timestamp.\n\n","title":"Time"},"description":"The time to filter results. Cannot be used with start_time or end_time.\n\nPossible values:\n\n- 'latest': Fetches the most recently reported data point.\n\n- A specific timestamp string (ISO 8601 format): Returns records that were published at the provided timestamp.\n\n"},{"name":"time_comparison","in":"query","required":false,"schema":{"anyOf":[{"enum":["=",">",">=","<","<="],"type":"string"},{"type":"null"}],"description":"The comparison operator to use when filtering by time.\n\nPossible values:\n\n- '=': Fetches the data at the exact time.\n\n- '>': Fetches the earliest data after the provided time.\n\n- '>=': Fetches the earliest data on or after the provided time.\n\n- '<': Fetches the latest data before the provided time.\n\n- '<=': Fetches the latest data on or before the provided time.\n\n","default":"=","title":"Time Comparison"},"description":"The comparison operator to use when filtering by time.\n\nPossible values:\n\n- '=': Fetches the data at the exact time.\n\n- '>': Fetches the earliest data after the provided time.\n\n- '>=': Fetches the earliest data on or after the provided time.\n\n- '<': Fetches the latest data before the provided time.\n\n- '<=': Fetches the latest data on or before the provided time.\n\n"},{"name":"start_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"},{"type":"null"}],"description":"The start time to filter results using the dataset's time_index_column. Data on or after this time will be returned. Only applies to datasets with a time_index_column","title":"Start Time"},"description":"The start time to filter results using the dataset's time_index_column. Data on or after this time will be returned. Only applies to datasets with a time_index_column"},{"name":"end_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"},{"type":"null"}],"description":"The end time to filter results using the dataset's time_index_column. Data before this time will be returned. Only applies to datasets with a time_index_column","title":"End Time"},"description":"The end time to filter results using the dataset's time_index_column. Data before this time will be returned. Only applies to datasets with a time_index_column"},{"name":"publish_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"},{"type":"null"}],"description":"Controls the filtering based on the dataset's publish time.\n\nCannot be combined with publish_time_start or publish_time_end.Note: a dataset must have a time index column to use 'latest' or 'latest_before:' options.\n\nPossible values:\n\n- 'latest_report': Returns records only from the most recently published report.\n\n- 'latest': For any given timestamp, fetches the most recently reported data point associated with it.\n\n- A specific timestamp string (ISO 8601 format): Returns records that were published at the provided timestamp.\n\n- 'latest_before:<offset>': Return the most recent forecast for each operating time where publish_time <= operating_time + offset (e.g., 'latest_before:-6 hours').\n\n - 'latest_before': shorthand for 'latest_before:-0 hours'. Used to get the most recent forecast prior to each operating time. This is useful because some forecasts are published after the operating time they are forecasting for.\n\n- 'latest_before:<offset>@<HH:MM:SS>': Return the latest forecast published before the specified time on the offset day (e.g., 'latest_before:-1 day@10:00:00').\n\n - 'window':<offset>: Returns all forecasts for each operating time published between the specified offset from the operating time and the operating time. In other words, where operating_time + offset <= publish_time <= operating_time. (e.g., 'window:-6 hours').\n\n - 'window:<offset>@<HH:MM:SS>': Returns all forecasts for each operating time published between the specified time on the offset day from the operating time and the operating time (e.g., 'window:-1 day@10:00:00').\n\n- None: No filtering based on publish time.\n\n","title":"Publish Time"},"description":"Controls the filtering based on the dataset's publish time.\n\nCannot be combined with publish_time_start or publish_time_end.Note: a dataset must have a time index column to use 'latest' or 'latest_before:' options.\n\nPossible values:\n\n- 'latest_report': Returns records only from the most recently published report.\n\n- 'latest': For any given timestamp, fetches the most recently reported data point associated with it.\n\n- A specific timestamp string (ISO 8601 format): Returns records that were published at the provided timestamp.\n\n- 'latest_before:<offset>': Return the most recent forecast for each operating time where publish_time <= operating_time + offset (e.g., 'latest_before:-6 hours').\n\n - 'latest_before': shorthand for 'latest_before:-0 hours'. Used to get the most recent forecast prior to each operating time. This is useful because some forecasts are published after the operating time they are forecasting for.\n\n- 'latest_before:<offset>@<HH:MM:SS>': Return the latest forecast published before the specified time on the offset day (e.g., 'latest_before:-1 day@10:00:00').\n\n - 'window':<offset>: Returns all forecasts for each operating time published between the specified offset from the operating time and the operating time. In other words, where operating_time + offset <= publish_time <= operating_time. (e.g., 'window:-6 hours').\n\n - 'window:<offset>@<HH:MM:SS>': Returns all forecasts for each operating time published between the specified time on the offset day from the operating time and the operating time (e.g., 'window:-1 day@10:00:00').\n\n- None: No filtering based on publish time.\n\n"},{"name":"publish_time_start","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"},{"type":"null"}],"description":"The start time to filter results using the dataset's publish_time_column. Data on or after this time will be returned up to the publish_time_end if provided. Only applies to datasets with a publish_time_column. Cannot be used with publish_time.","title":"Publish Time Start"},"description":"The start time to filter results using the dataset's publish_time_column. Data on or after this time will be returned up to the publish_time_end if provided. Only applies to datasets with a publish_time_column. Cannot be used with publish_time."},{"name":"publish_time_end","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"},{"type":"null"}],"description":"The end time to filter results using the dataset's publish_index_column. Data before this time will be returned down the publish_time_start if provided. Only applies to datasets with a publish_time_column. Cannot be used with publish_time.","title":"Publish Time End"},"description":"The end time to filter results using the dataset's publish_index_column. Data before this time will be returned down the publish_time_start if provided. Only applies to datasets with a publish_time_column. Cannot be used with publish_time."},{"name":"resample_frequency","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The frequency to resample the data to. Must be one of:\n\n- \"1 minute\"\n- \"5 minutes\"\n- \"10 minutes\"\n- \"15 minutes\"\n- \"1 hour\"\n- \"1 day\"\n- \"1 week\"\n- \"1 month\"\n- \"1 year\"\n\nWhen resampling_frequency is specified, start_time and end_time values must also be provided. The only exception to this is when querying datasets that have a publish time and the publish time is specified as a specific timestamp or 'latest_report'.\n\nAdditionally, the number of days of data that can be queried is limited based on the resample frequency. The maximum number of days of data that can be queried for each resample frequency is listed below. There is no limit on days for resample frequencies not listed below.\n\n- 1 minute: 31 days\n- 5 minutes: 100 days\n- 10 minutes: 120 days\n- 15 minutes: 180 days\n- 1 hour: 365 days\n- 1 day: 1825 days","title":"Resample Frequency"},"description":"The frequency to resample the data to. Must be one of:\n\n- \"1 minute\"\n- \"5 minutes\"\n- \"10 minutes\"\n- \"15 minutes\"\n- \"1 hour\"\n- \"1 day\"\n- \"1 week\"\n- \"1 month\"\n- \"1 year\"\n\nWhen resampling_frequency is specified, start_time and end_time values must also be provided. The only exception to this is when querying datasets that have a publish time and the publish time is specified as a specific timestamp or 'latest_report'.\n\nAdditionally, the number of days of data that can be queried is limited based on the resample frequency. The maximum number of days of data that can be queried for each resample frequency is listed below. There is no limit on days for resample frequencies not listed below.\n\n- 1 minute: 31 days\n- 5 minutes: 100 days\n- 10 minutes: 120 days\n- 15 minutes: 180 days\n- 1 hour: 365 days\n- 1 day: 1825 days"},{"name":"resample_by","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"string"},{"type":"null"}],"description":"A comma separated list of columns to group by before resampling. \n\n- When resampling, the data is always grouped by the time index column of the dataset.\n\n- If a value is provided for resample_by, the data will be grouped by the provided columns in addition to the time index column.\n\n- If the dataset has a subseries index and no value is provided for resample_by, the data will also be grouped by the subseries index column.\n\n- If the dataset has a publish time column and the publish_time parameter is not 'latest', the data will also be grouped by the publish time column.","title":"Resample By"},"description":"A comma separated list of columns to group by before resampling. \n\n- When resampling, the data is always grouped by the time index column of the dataset.\n\n- If a value is provided for resample_by, the data will be grouped by the provided columns in addition to the time index column.\n\n- If the dataset has a subseries index and no value is provided for resample_by, the data will also be grouped by the subseries index column.\n\n- If the dataset has a publish time column and the publish_time parameter is not 'latest', the data will also be grouped by the publish time column."},{"name":"resample_function","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ResampleFunction"},{"type":"null"}],"description":"The function to use when resampling. Defaults to \"mean\". Possible values are \"mean\", \"sum\", \"min\", \"max\", \"stddev\", \"count\". If resample is None, this is ignored.","default":"mean","title":"Resample Function"},"description":"The function to use when resampling. Defaults to \"mean\". Possible values are \"mean\", \"sum\", \"min\", \"max\", \"stddev\", \"count\". If resample is None, this is ignored."},{"name":"return_format","in":"query","required":false,"schema":{"$ref":"#/components/schemas/ReturnFormat","description":"The return format of the response","default":"json"},"description":"The return format of the response"},{"name":"download","in":"query","required":false,"schema":{"type":"boolean","description":"Whether to download the file or not","default":false,"title":"Download"},"description":"Whether to download the file or not"},{"name":"json_schema","in":"query","required":false,"schema":{"$ref":"#/components/schemas/JSONSchema","description":"The json schema of the response","default":"array-of-objects"},"description":"The json schema of the response"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (header)","title":"X-Api-Key"},"description":"API key for authentication (header)"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/QueryDatasetResponse"},{"$ref":"#/components/schemas/CSVResponse"}],"title":"Response Query Dataset V1 Datasets  Dataset Id  Query Get"},"example":{"status_code":200,"data":[{"interval_start_local":"2018-04-10T00:00:00-07:00","interval_start_utc":"2018-04-10T07:00:00+00:00","interval_end_local":"2018-04-10T00:05:00-07:00","interval_end_utc":"2018-04-10T07:05:00+00:00","load":22459},{"interval_start_local":"2018-04-10T00:05:00-07:00","interval_start_utc":"2018-04-10T07:05:00+00:00","interval_end_local":"2018-04-10T00:10:00-07:00","interval_end_utc":"2018-04-10T07:10:00+00:00","load":22371},{"interval_start_local":"2018-04-10T00:10:00-07:00","interval_start_utc":"2018-04-10T07:10:00+00:00","interval_end_local":"2018-04-10T00:15:00-07:00","interval_end_utc":"2018-04-10T07:15:00+00:00","load":22330}],"meta":{"page":1,"limit":1000,"page_size":100000,"hasNextPage":false},"dataset_metadata":{"id":"caiso_load","name":"CAISO Load","time_index_column":"interval_start_utc","all_columns":[{"name":"interval_start_local","type":"TIMESTAMP","is_date":false,"is_datetime":true,"is_numeric":false},{"name":"interval_start_utc","type":"TIMESTAMP","is_date":false,"is_datetime":true,"is_numeric":false},{"name":"interval_end_local","type":"TIMESTAMP","is_date":false,"is_datetime":true,"is_numeric":false},{"name":"interval_end_utc","type":"TIMESTAMP","is_date":false,"is_datetime":true,"is_numeric":false},{"name":"load","type":"INTEGER","is_date":false,"is_datetime":false,"is_numeric":true}]}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/datasets/{dataset_id}/query/{filter_column_id}/{filter_value_path}":{"get":{"tags":["Query Data"],"summary":"Query Dataset by column value","description":"Query a dataset by a column value\n\nThis is a shortcut for `/datasets/{dataset_id}/query?filter_column={filter_column}&filter_value={filter_value}`","operationId":"query_dataset_column_value_v1_datasets__dataset_id__query__filter_column_id___filter_value_path__get","parameters":[{"name":"dataset_id","in":"path","required":true,"schema":{"type":"string","title":"Dataset Id"}},{"name":"filter_column_id","in":"path","required":true,"schema":{"type":"string","title":"Filter Column ID","description":"ID of the column to filter by"},"description":"ID of the column to filter by"},{"name":"filter_value_path","in":"path","required":true,"schema":{"type":"string","title":"Filter Value","description":"Value to filter by"},"description":"Value to filter by"},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (query)","title":"Api Key"},"description":"API key for authentication (query)"},{"name":"return_format","in":"query","required":false,"schema":{"$ref":"#/components/schemas/ReturnFormat","description":"The return format of the response","default":"json"},"description":"The return format of the response"},{"name":"download","in":"query","required":false,"schema":{"type":"boolean","description":"Whether to download the file or not","default":false,"title":"Download"},"description":"Whether to download the file or not"},{"name":"json_schema","in":"query","required":false,"schema":{"$ref":"#/components/schemas/JSONSchema","description":"The json schema of the response","default":"array-of-objects"},"description":"The json schema of the response"},{"name":"order","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/OrderBy"},{"type":"null"}],"description":"The order to order results by","default":"asc","title":"Order"},"description":"The order to order results by"},{"name":"filter_column","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The column to filter results by","title":"Filter Column"},"description":"The column to filter results by"},{"name":"filter_value","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"number"},{"type":"string"},{"type":"null"}],"description":"The value to filter results by","title":"Filter Value"},"description":"The value to filter results by"},{"name":"filter_operator","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/FilterOperator"},{"type":"null"}],"default":"=","title":"Filter Operator"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"The maximum number of rows to return across all pages","title":"Limit"},"description":"The maximum number of rows to return across all pages"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","description":"The page number of results to return","default":1,"title":"Page"},"description":"The page number of results to return"},{"name":"page_size","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"The maximum number of rows to return in a single page","title":"Page Size"},"description":"The maximum number of rows to return in a single page"},{"name":"columns","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"string"},{"type":"null"}],"description":"Comma separated list of columns to return. Defaults to all columns.","title":"Columns"},"description":"Comma separated list of columns to return. Defaults to all columns."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"timezone","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The timezone to use when interpreting timezone naive timestamps, resampling to frequencies one day or more, and returning results. A value of `market`can be provided to return results in the timezone of the source ISO for the dataset. If `market` is specified and the dataset does not have a source ISO, the timezone will default to UTC for the query. When provided, columns in the `timezone` will be suffixed with `_local`.","default":"UTC","title":"Timezone"},"description":"The timezone to use when interpreting timezone naive timestamps, resampling to frequencies one day or more, and returning results. A value of `market`can be provided to return results in the timezone of the source ISO for the dataset. If `market` is specified and the dataset does not have a source ISO, the timezone will default to UTC for the query. When provided, columns in the `timezone` will be suffixed with `_local`."},{"name":"time","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"},{"type":"null"}],"description":"The time to filter results. Cannot be used with start_time or end_time.\n\nPossible values:\n\n- 'latest': Fetches the most recently reported data point.\n\n- A specific timestamp string (ISO 8601 format): Returns records that were published at the provided timestamp.\n\n","title":"Time"},"description":"The time to filter results. Cannot be used with start_time or end_time.\n\nPossible values:\n\n- 'latest': Fetches the most recently reported data point.\n\n- A specific timestamp string (ISO 8601 format): Returns records that were published at the provided timestamp.\n\n"},{"name":"time_comparison","in":"query","required":false,"schema":{"anyOf":[{"enum":["=",">",">=","<","<="],"type":"string"},{"type":"null"}],"description":"The comparison operator to use when filtering by time.\n\nPossible values:\n\n- '=': Fetches the data at the exact time.\n\n- '>': Fetches the earliest data after the provided time.\n\n- '>=': Fetches the earliest data on or after the provided time.\n\n- '<': Fetches the latest data before the provided time.\n\n- '<=': Fetches the latest data on or before the provided time.\n\n","default":"=","title":"Time Comparison"},"description":"The comparison operator to use when filtering by time.\n\nPossible values:\n\n- '=': Fetches the data at the exact time.\n\n- '>': Fetches the earliest data after the provided time.\n\n- '>=': Fetches the earliest data on or after the provided time.\n\n- '<': Fetches the latest data before the provided time.\n\n- '<=': Fetches the latest data on or before the provided time.\n\n"},{"name":"start_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"},{"type":"null"}],"description":"The start time to filter results using the dataset's time_index_column. Data on or after this time will be returned. Only applies to datasets with a time_index_column","title":"Start Time"},"description":"The start time to filter results using the dataset's time_index_column. Data on or after this time will be returned. Only applies to datasets with a time_index_column"},{"name":"end_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"},{"type":"null"}],"description":"The end time to filter results using the dataset's time_index_column. Data before this time will be returned. Only applies to datasets with a time_index_column","title":"End Time"},"description":"The end time to filter results using the dataset's time_index_column. Data before this time will be returned. Only applies to datasets with a time_index_column"},{"name":"publish_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"},{"type":"null"}],"description":"Controls the filtering based on the dataset's publish time.\n\nCannot be combined with publish_time_start or publish_time_end.Note: a dataset must have a time index column to use 'latest' or 'latest_before:' options.\n\nPossible values:\n\n- 'latest_report': Returns records only from the most recently published report.\n\n- 'latest': For any given timestamp, fetches the most recently reported data point associated with it.\n\n- A specific timestamp string (ISO 8601 format): Returns records that were published at the provided timestamp.\n\n- 'latest_before:<offset>': Return the most recent forecast for each operating time where publish_time <= operating_time + offset (e.g., 'latest_before:-6 hours').\n\n - 'latest_before': shorthand for 'latest_before:-0 hours'. Used to get the most recent forecast prior to each operating time. This is useful because some forecasts are published after the operating time they are forecasting for.\n\n- 'latest_before:<offset>@<HH:MM:SS>': Return the latest forecast published before the specified time on the offset day (e.g., 'latest_before:-1 day@10:00:00').\n\n - 'window':<offset>: Returns all forecasts for each operating time published between the specified offset from the operating time and the operating time. In other words, where operating_time + offset <= publish_time <= operating_time. (e.g., 'window:-6 hours').\n\n - 'window:<offset>@<HH:MM:SS>': Returns all forecasts for each operating time published between the specified time on the offset day from the operating time and the operating time (e.g., 'window:-1 day@10:00:00').\n\n- None: No filtering based on publish time.\n\n","title":"Publish Time"},"description":"Controls the filtering based on the dataset's publish time.\n\nCannot be combined with publish_time_start or publish_time_end.Note: a dataset must have a time index column to use 'latest' or 'latest_before:' options.\n\nPossible values:\n\n- 'latest_report': Returns records only from the most recently published report.\n\n- 'latest': For any given timestamp, fetches the most recently reported data point associated with it.\n\n- A specific timestamp string (ISO 8601 format): Returns records that were published at the provided timestamp.\n\n- 'latest_before:<offset>': Return the most recent forecast for each operating time where publish_time <= operating_time + offset (e.g., 'latest_before:-6 hours').\n\n - 'latest_before': shorthand for 'latest_before:-0 hours'. Used to get the most recent forecast prior to each operating time. This is useful because some forecasts are published after the operating time they are forecasting for.\n\n- 'latest_before:<offset>@<HH:MM:SS>': Return the latest forecast published before the specified time on the offset day (e.g., 'latest_before:-1 day@10:00:00').\n\n - 'window':<offset>: Returns all forecasts for each operating time published between the specified offset from the operating time and the operating time. In other words, where operating_time + offset <= publish_time <= operating_time. (e.g., 'window:-6 hours').\n\n - 'window:<offset>@<HH:MM:SS>': Returns all forecasts for each operating time published between the specified time on the offset day from the operating time and the operating time (e.g., 'window:-1 day@10:00:00').\n\n- None: No filtering based on publish time.\n\n"},{"name":"publish_time_start","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"},{"type":"null"}],"description":"The start time to filter results using the dataset's publish_time_column. Data on or after this time will be returned up to the publish_time_end if provided. Only applies to datasets with a publish_time_column. Cannot be used with publish_time.","title":"Publish Time Start"},"description":"The start time to filter results using the dataset's publish_time_column. Data on or after this time will be returned up to the publish_time_end if provided. Only applies to datasets with a publish_time_column. Cannot be used with publish_time."},{"name":"publish_time_end","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"},{"type":"null"}],"description":"The end time to filter results using the dataset's publish_index_column. Data before this time will be returned down the publish_time_start if provided. Only applies to datasets with a publish_time_column. Cannot be used with publish_time.","title":"Publish Time End"},"description":"The end time to filter results using the dataset's publish_index_column. Data before this time will be returned down the publish_time_start if provided. Only applies to datasets with a publish_time_column. Cannot be used with publish_time."},{"name":"resample_frequency","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The frequency to resample the data to. Must be one of:\n\n- \"1 minute\"\n- \"5 minutes\"\n- \"10 minutes\"\n- \"15 minutes\"\n- \"1 hour\"\n- \"1 day\"\n- \"1 week\"\n- \"1 month\"\n- \"1 year\"\n\nWhen resampling_frequency is specified, start_time and end_time values must also be provided. The only exception to this is when querying datasets that have a publish time and the publish time is specified as a specific timestamp or 'latest_report'.\n\nAdditionally, the number of days of data that can be queried is limited based on the resample frequency. The maximum number of days of data that can be queried for each resample frequency is listed below. There is no limit on days for resample frequencies not listed below.\n\n- 1 minute: 31 days\n- 5 minutes: 100 days\n- 10 minutes: 120 days\n- 15 minutes: 180 days\n- 1 hour: 365 days\n- 1 day: 1825 days","title":"Resample Frequency"},"description":"The frequency to resample the data to. Must be one of:\n\n- \"1 minute\"\n- \"5 minutes\"\n- \"10 minutes\"\n- \"15 minutes\"\n- \"1 hour\"\n- \"1 day\"\n- \"1 week\"\n- \"1 month\"\n- \"1 year\"\n\nWhen resampling_frequency is specified, start_time and end_time values must also be provided. The only exception to this is when querying datasets that have a publish time and the publish time is specified as a specific timestamp or 'latest_report'.\n\nAdditionally, the number of days of data that can be queried is limited based on the resample frequency. The maximum number of days of data that can be queried for each resample frequency is listed below. There is no limit on days for resample frequencies not listed below.\n\n- 1 minute: 31 days\n- 5 minutes: 100 days\n- 10 minutes: 120 days\n- 15 minutes: 180 days\n- 1 hour: 365 days\n- 1 day: 1825 days"},{"name":"resample_by","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"string"},{"type":"null"}],"description":"A comma separated list of columns to group by before resampling. \n\n- When resampling, the data is always grouped by the time index column of the dataset.\n\n- If a value is provided for resample_by, the data will be grouped by the provided columns in addition to the time index column.\n\n- If the dataset has a subseries index and no value is provided for resample_by, the data will also be grouped by the subseries index column.\n\n- If the dataset has a publish time column and the publish_time parameter is not 'latest', the data will also be grouped by the publish time column.","title":"Resample By"},"description":"A comma separated list of columns to group by before resampling. \n\n- When resampling, the data is always grouped by the time index column of the dataset.\n\n- If a value is provided for resample_by, the data will be grouped by the provided columns in addition to the time index column.\n\n- If the dataset has a subseries index and no value is provided for resample_by, the data will also be grouped by the subseries index column.\n\n- If the dataset has a publish time column and the publish_time parameter is not 'latest', the data will also be grouped by the publish time column."},{"name":"resample_function","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ResampleFunction"},{"type":"null"}],"description":"The function to use when resampling. Defaults to \"mean\". Possible values are \"mean\", \"sum\", \"min\", \"max\", \"stddev\", \"count\". If resample is None, this is ignored.","default":"mean","title":"Resample Function"},"description":"The function to use when resampling. Defaults to \"mean\". Possible values are \"mean\", \"sum\", \"min\", \"max\", \"stddev\", \"count\". If resample is None, this is ignored."},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (header)","title":"X-Api-Key"},"description":"API key for authentication (header)"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/QueryDatasetResponse"},{"$ref":"#/components/schemas/CSVResponse"}],"title":"Response Query Dataset Column Value V1 Datasets  Dataset Id  Query  Filter Column Id   Filter Value Path  Get"},"example":{"status_code":200,"data":[{"interval_start_local":"2018-04-10T00:00:00-07:00","interval_start_utc":"2018-04-10T07:00:00+00:00","interval_end_local":"2018-04-10T00:05:00-07:00","interval_end_utc":"2018-04-10T07:05:00+00:00","load":22459},{"interval_start_local":"2018-04-10T00:05:00-07:00","interval_start_utc":"2018-04-10T07:05:00+00:00","interval_end_local":"2018-04-10T00:10:00-07:00","interval_end_utc":"2018-04-10T07:10:00+00:00","load":22371},{"interval_start_local":"2018-04-10T00:10:00-07:00","interval_start_utc":"2018-04-10T07:10:00+00:00","interval_end_local":"2018-04-10T00:15:00-07:00","interval_end_utc":"2018-04-10T07:15:00+00:00","load":22330}],"meta":{"page":1,"limit":1000,"page_size":100000,"hasNextPage":false},"dataset_metadata":{"id":"caiso_load","name":"CAISO Load","time_index_column":"interval_start_utc","all_columns":[{"name":"interval_start_local","type":"TIMESTAMP","is_date":false,"is_datetime":true,"is_numeric":false},{"name":"interval_start_utc","type":"TIMESTAMP","is_date":false,"is_datetime":true,"is_numeric":false},{"name":"interval_end_local","type":"TIMESTAMP","is_date":false,"is_datetime":true,"is_numeric":false},{"name":"interval_end_utc","type":"TIMESTAMP","is_date":false,"is_datetime":true,"is_numeric":false},{"name":"load","type":"INTEGER","is_date":false,"is_datetime":false,"is_numeric":true}]}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/dataset-updates/{dataset_id}":{"get":{"tags":["Dataset Updates"],"summary":"Dataset Updates","description":"List all updates that have occurred in chronological order\nfor a specific dataset","operationId":"dataset_updates_v1_dataset_updates__dataset_id__get","parameters":[{"name":"dataset_id","in":"path","required":true,"schema":{"type":"string","title":"Dataset Id"}},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (query)","title":"Api Key"},"description":"API key for authentication (query)"},{"name":"return_format","in":"query","required":false,"schema":{"$ref":"#/components/schemas/ReturnFormat","description":"The return format of the response","default":"json"},"description":"The return format of the response"},{"name":"download","in":"query","required":false,"schema":{"type":"boolean","description":"Whether to download the file or not","default":false,"title":"Download"},"description":"Whether to download the file or not"},{"name":"json_schema","in":"query","required":false,"schema":{"$ref":"#/components/schemas/JSONSchema","description":"The json schema of the response","default":"array-of-objects"},"description":"The json schema of the response"},{"name":"order","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/OrderBy"},{"type":"null"}],"description":"The order to order results by","default":"desc","title":"Order"},"description":"The order to order results by"},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"The maximum number of rows to return across all pages","title":"Limit"},"description":"The maximum number of rows to return across all pages"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (header)","title":"X-Api-Key"},"description":"API key for authentication (header)"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetUpdatesResponse"},"example":{"status_code":200,"data":[{"id":18759731,"dataset":"ieso_lmp_real_time_5_min","time_utc":"2025-04-25T00:46:52+00:00","num_rows_updated":0,"num_rows_inserted":288166,"is_backfill":false},{"id":18759928,"dataset":"ieso_lmp_real_time_5_min","time_utc":"2025-04-25T00:55:41+00:00","num_rows_updated":0,"num_rows_inserted":1934,"is_backfill":false},{"id":18760076,"dataset":"ieso_lmp_real_time_5_min","time_utc":"2025-04-25T01:01:09+00:00","num_rows_updated":0,"num_rows_inserted":967,"is_backfill":false},{"id":18760163,"dataset":"ieso_lmp_real_time_5_min","time_utc":"2025-04-25T01:04:48+00:00","num_rows_updated":0,"num_rows_inserted":967,"is_backfill":false},{"id":18760315,"dataset":"ieso_lmp_real_time_5_min","time_utc":"2025-04-25T01:10:41+00:00","num_rows_updated":0,"num_rows_inserted":967,"is_backfill":false},{"id":18760500,"dataset":"ieso_lmp_real_time_5_min","time_utc":"2025-04-25T01:17:30+00:00","num_rows_updated":0,"num_rows_inserted":967,"is_backfill":false},{"id":18760582,"dataset":"ieso_lmp_real_time_5_min","time_utc":"2025-04-25T01:20:51+00:00","num_rows_updated":0,"num_rows_inserted":967,"is_backfill":false},{"id":18760714,"dataset":"ieso_lmp_real_time_5_min","time_utc":"2025-04-25T01:25:48+00:00","num_rows_updated":0,"num_rows_inserted":967,"is_backfill":false},{"id":18760781,"dataset":"ieso_lmp_real_time_5_min","time_utc":"2025-04-25T01:29:58+00:00","num_rows_updated":0,"num_rows_inserted":967,"is_backfill":false},{"id":18760950,"dataset":"ieso_lmp_real_time_5_min","time_utc":"2025-04-25T01:35:41+00:00","num_rows_updated":0,"num_rows_inserted":967,"is_backfill":false}],"meta":{"page":1}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/reports/daily_peak/{iso}":{"get":{"tags":["Reports"],"summary":"Get Daily Peak Report","description":"Get a daily peak report for the specified ISO on the specified date. If multiple peaks in LMP values are found in the Day Ahead Market data for a given zone, only data for the first peak will be returned.\n\nNOTE: You must be on a paid Grid Status plan to access this endpoint.","operationId":"get_daily_peak_report_v1_reports_daily_peak__iso__get","parameters":[{"name":"iso","in":"path","required":true,"schema":{"$ref":"#/components/schemas/ISOEnum","title":"ISO Name","description":"Name of the iso for which the report should be created"},"description":"Name of the iso for which the report should be created"},{"name":"date","in":"query","required":true,"schema":{"type":"string","format":"date","title":"date","description":"The date for which the report should be generated."},"description":"The date for which the report should be generated."},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (query)","title":"Api Key"},"description":"API key for authentication (query)"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (header)","title":"X-Api-Key"},"description":"API key for authentication (header)"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PeakLoadReportResponse"},"example":{"ISO":"PJM","market_date":"2025-05-16","timezone":"US/Eastern","peak_dam_lmp":[{"interval_start_market":"2025-05-16T17:00:00","interval_end_market":"2025-05-16T18:00:00","location":"AECO","location_type":"ZONE","lmp":97.118751,"energy":155.76,"congestion":-65.318232,"loss":6.676983},{"interval_start_market":"2025-05-16T17:00:00","interval_end_market":"2025-05-16T18:00:00","location":"AEP","location_type":"ZONE","lmp":97.395159,"energy":155.76,"congestion":-54.431105,"loss":-3.933736},{"interval_start_market":"2025-05-16T17:00:00","interval_end_market":"2025-05-16T18:00:00","location":"AEP-DAYTON HUB","location_type":"HUB","lmp":91.80928,"energy":155.76,"congestion":-58.663862,"loss":-5.286858},{"interval_start_market":"2025-05-16T17:00:00","interval_end_market":"2025-05-16T18:00:00","location":"AEP GEN HUB","location_type":"HUB","lmp":83.493421,"energy":155.76,"congestion":-65.138947,"loss":-7.127632},{"interval_start_market":"2025-05-16T16:00:00","interval_end_market":"2025-05-16T17:00:00","location":"APS","location_type":"ZONE","lmp":89.160852,"energy":144.19,"congestion":-58.616387,"loss":3.587239},{"interval_start_market":"2025-05-16T17:00:00","interval_end_market":"2025-05-16T18:00:00","location":"ATSI","location_type":"ZONE","lmp":92.365946,"energy":155.76,"congestion":-63.106612,"loss":-0.287442},{"interval_start_market":"2025-05-16T17:00:00","interval_end_market":"2025-05-16T18:00:00","location":"ATSI GEN HUB","location_type":"HUB","lmp":86.943864,"energy":155.76,"congestion":-65.453409,"loss":-3.362727},{"interval_start_market":"2025-05-16T17:00:00","interval_end_market":"2025-05-16T18:00:00","location":"BGE","location_type":"ZONE","lmp":195.448405,"energy":155.76,"congestion":28.636572,"loss":11.051833},{"interval_start_market":"2025-05-16T17:00:00","interval_end_market":"2025-05-16T18:00:00","location":"CHICAGO GEN HUB","location_type":"HUB","lmp":61.777,"energy":155.76,"congestion":-80.126231,"loss":-13.856769},{"interval_start_market":"2025-05-16T17:00:00","interval_end_market":"2025-05-16T18:00:00","location":"CHICAGO HUB","location_type":"HUB","lmp":65.470279,"energy":155.76,"congestion":-79.369223,"loss":-10.920498},{"interval_start_market":"2025-05-16T17:00:00","interval_end_market":"2025-05-16T18:00:00","location":"COMED","location_type":"ZONE","lmp":65.207782,"energy":155.76,"congestion":-79.068823,"loss":-11.483395},{"interval_start_market":"2025-05-16T17:00:00","interval_end_market":"2025-05-16T18:00:00","location":"DAY","location_type":"ZONE","lmp":103.381408,"energy":155.76,"congestion":-50.764866,"loss":-1.613726},{"interval_start_market":"2025-05-16T19:00:00","interval_end_market":"2025-05-16T20:00:00","location":"DEOK","location_type":"ZONE","lmp":89.94213,"energy":108.56,"congestion":-15.420282,"loss":-3.197588},{"interval_start_market":"2025-05-16T15:00:00","interval_end_market":"2025-05-16T16:00:00","location":"DOM","location_type":"ZONE","lmp":486.712458,"energy":137.01,"congestion":341.984566,"loss":7.717892},{"interval_start_market":"2025-05-16T19:00:00","interval_end_market":"2025-05-16T20:00:00","location":"DOMINION HUB","location_type":"HUB","lmp":191.920648,"energy":108.56,"congestion":80.191854,"loss":3.168794},{"interval_start_market":"2025-05-16T17:00:00","interval_end_market":"2025-05-16T18:00:00","location":"DPL","location_type":"ZONE","lmp":112.420637,"energy":155.76,"congestion":-52.112548,"loss":8.773185},{"interval_start_market":"2025-05-16T17:00:00","interval_end_market":"2025-05-16T18:00:00","location":"DUQ","location_type":"ZONE","lmp":83.736817,"energy":155.76,"congestion":-70.621802,"loss":-1.401381},{"interval_start_market":"2025-05-16T17:00:00","interval_end_market":"2025-05-16T18:00:00","location":"EASTERN HUB","location_type":"HUB","lmp":114.075813,"energy":155.76,"congestion":-50.283271,"loss":8.599084},{"interval_start_market":"2025-05-16T19:00:00","interval_end_market":"2025-05-16T20:00:00","location":"EKPC","location_type":"ZONE","lmp":88.626441,"energy":108.56,"congestion":-14.0673,"loss":-5.866259},{"interval_start_market":"2025-05-16T17:00:00","interval_end_market":"2025-05-16T18:00:00","location":"JCPL","location_type":"ZONE","lmp":88.978929,"energy":155.76,"congestion":-69.921157,"loss":3.140086},{"interval_start_market":"2025-05-16T17:00:00","interval_end_market":"2025-05-16T18:00:00","location":"METED","location_type":"ZONE","lmp":115.99368,"energy":155.76,"congestion":-43.41339,"loss":3.64707},{"interval_start_market":"2025-05-16T17:00:00","interval_end_market":"2025-05-16T18:00:00","location":"MID-ATL/APS","location_type":"ZONE","lmp":209.16278,"energy":155.76,"congestion":42.553516,"loss":10.849265},{"interval_start_market":"2025-05-16T17:00:00","interval_end_market":"2025-05-16T18:00:00","location":"NEW JERSEY HUB","location_type":"HUB","lmp":89.631444,"energy":155.76,"congestion":-69.848054,"loss":3.719498},{"interval_start_market":"2025-05-16T17:00:00","interval_end_market":"2025-05-16T18:00:00","location":"N ILLINOIS HUB","location_type":"HUB","lmp":64.797684,"energy":155.76,"congestion":-78.77356,"loss":-12.188756},{"interval_start_market":"2025-05-16T17:00:00","interval_end_market":"2025-05-16T18:00:00","location":"OHIO HUB","location_type":"HUB","lmp":92.687787,"energy":155.76,"congestion":-57.230401,"loss":-5.841812},{"interval_start_market":"2025-05-16T19:00:00","interval_end_market":"2025-05-16T20:00:00","location":"OVEC","location_type":"ZONE","lmp":88.5,"energy":108.56,"congestion":-15.33,"loss":-4.73},{"interval_start_market":"2025-05-16T17:00:00","interval_end_market":"2025-05-16T18:00:00","location":"PECO","location_type":"ZONE","lmp":95.395634,"energy":155.76,"congestion":-64.371292,"loss":4.006926},{"interval_start_market":"2025-05-16T17:00:00","interval_end_market":"2025-05-16T18:00:00","location":"PENELEC","location_type":"ZONE","lmp":80.674772,"energy":155.76,"congestion":-78.416136,"loss":3.330908},{"interval_start_market":"2025-05-16T17:00:00","interval_end_market":"2025-05-16T18:00:00","location":"PEPCO","location_type":"ZONE","lmp":262.645429,"energy":155.76,"congestion":95.992709,"loss":10.89272},{"interval_start_market":"2025-05-16T17:00:00","interval_end_market":"2025-05-16T18:00:00","location":"PJM-RTO","location_type":"ZONE","lmp":144.182684,"energy":155.76,"congestion":-14.599713,"loss":3.022396},{"interval_start_market":"2025-05-16T17:00:00","interval_end_market":"2025-05-16T18:00:00","location":"PPL","location_type":"ZONE","lmp":86.842633,"energy":155.76,"congestion":-69.501223,"loss":0.583856},{"interval_start_market":"2025-05-16T17:00:00","interval_end_market":"2025-05-16T18:00:00","location":"PSEG","location_type":"ZONE","lmp":87.408946,"energy":155.76,"congestion":-71.727043,"loss":3.375989},{"interval_start_market":"2025-05-16T17:00:00","interval_end_market":"2025-05-16T18:00:00","location":"RECO","location_type":"ZONE","lmp":84.78116,"energy":155.76,"congestion":-74.6739,"loss":3.69506},{"interval_start_market":"2025-05-16T17:00:00","interval_end_market":"2025-05-16T18:00:00","location":"WESTERN HUB","location_type":"HUB","lmp":144.9218,"energy":155.76,"congestion":-15.622671,"loss":4.784471},{"interval_start_market":"2025-05-16T17:00:00","interval_end_market":"2025-05-16T18:00:00","location":"WEST INT HUB","location_type":"HUB","lmp":147.074394,"energy":155.76,"congestion":-7.775049,"loss":-0.910557}],"peak_load":{"interval_start_market":"2025-05-16T16:00:00","interval_end_market":"2025-05-16T17:00:00","load":110462.82758333335,"net_load":96116.07758333335,"fuel_mix.coal":14757.583333333334,"fuel_mix.gas":43558.25,"fuel_mix.hydro":4504.916666666667,"fuel_mix.multiple_fuels":1342.6666666666667,"fuel_mix.nuclear":29601.5,"fuel_mix.oil":1393.0833333333333,"fuel_mix.solar":6843.5,"fuel_mix.storage":2.75,"fuel_mix.wind":7503.25,"fuel_mix.other_renewables":526.6666666666666},"peak_net_load":{"interval_start_market":"2025-05-16T17:00:00","interval_end_market":"2025-05-16T18:00:00","load":110453.081,"net_load":98153.49766666668,"fuel_mix.coal":15300.75,"fuel_mix.gas":45012.916666666664,"fuel_mix.hydro":4407.25,"fuel_mix.multiple_fuels":1417.25,"fuel_mix.nuclear":29569,"fuel_mix.oil":1466.5,"fuel_mix.solar":4975.25,"fuel_mix.storage":6.666666666666667,"fuel_mix.wind":7324.333333333333,"fuel_mix.other_renewables":536.1666666666666}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api_usage":{"get":{"tags":["API Usage"],"summary":"Get Api Usage Endpoint","description":"Get API usage statistics and limits for the current user/organization.","operationId":"get_api_usage_endpoint_v1_api_usage_get","parameters":[{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (query)","title":"Api Key"},"description":"API key for authentication (query)"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (header)","title":"X-Api-Key"},"description":"API key for authentication (header)"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIUsageResponse"},"example":{"plan_name":"Example Plan","limits":{"api_rows_returned_limit":25000000,"api_requests_limit":100000,"api_rows_per_response_limit":90000,"per_second_api_rate_limit":3,"per_minute_api_rate_limit":20,"per_hour_api_rate_limit":900},"current_usage_period_start":"2025-10-01T00:00:00Z","current_usage_period_end":"2025-11-01T00:00:00Z","current_period_usage":{"total_requests":30000,"total_api_rows_returned":1500000}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/csv-exports/{dataset_id}/{export_date}":{"get":{"tags":["CSV Exports"],"summary":"Generate a presigned S3 URL for a bulk export file","description":"Return a time-limited presigned URL for a bulk export object on S3.\n\nCaller supplies dataset id, date, and (optionally) file type; the server\nconstructs the S3 key per the layout documented in\n`gitbook/bulk-csv-download/folder-structure.md`.","operationId":"get_export_presigned_url_v1_csv_exports__dataset_id___export_date__get","parameters":[{"name":"dataset_id","in":"path","required":true,"schema":{"type":"string","title":"Dataset Id"}},{"name":"export_date","in":"path","required":true,"schema":{"type":"string","format":"date","description":"ISO 8601 date of the partition, e.g. `2025-03-14`.","title":"Export Date"},"description":"ISO 8601 date of the partition, e.g. `2025-03-14`."},{"name":"file_type","in":"query","required":false,"schema":{"const":"csv","type":"string","description":"File format. Currently only `csv` (gzipped) is available.","default":"csv","title":"File Type"},"description":"File format. Currently only `csv` (gzipped) is available."},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (query)","title":"Api Key"},"description":"API key for authentication (query)"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (header)","title":"X-Api-Key"},"description":"API key for authentication (header)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PresignedUrlResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/csv-exports/{dataset_id}":{"get":{"tags":["CSV Exports"],"summary":"List available bulk export files for a dataset","description":"List the per-day export files available on S3 for a dataset.\n\nEach entry includes the partition date, object size, and last-modified\ntimestamp; combine with `GET /{dataset_id}/{date}` to fetch a presigned\nURL for any specific file.","operationId":"list_dataset_exports_v1_csv_exports__dataset_id__get","parameters":[{"name":"dataset_id","in":"path","required":true,"schema":{"type":"string","title":"Dataset Id"}},{"name":"year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":9999,"minimum":1900},{"type":"null"}],"description":"Optional. Restrict the listing to a single year.","title":"Year"},"description":"Optional. Restrict the listing to a single year."},{"name":"month","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":12,"minimum":1},{"type":"null"}],"description":"Optional. Restrict the listing to a single month. Requires `year`.","title":"Month"},"description":"Optional. Restrict the listing to a single month. Requires `year`."},{"name":"file_type","in":"query","required":false,"schema":{"const":"csv","type":"string","description":"File format to list. Currently only `csv` (gzipped).","default":"csv","title":"File Type"},"description":"File format to list. Currently only `csv` (gzipped)."},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (query)","title":"Api Key"},"description":"API key for authentication (query)"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (header)","title":"X-Api-Key"},"description":"API key for authentication (header)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetExportsListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/constraints":{"get":{"tags":["Constraints"],"summary":"List Constraints","description":"Get a list of constraints with optional filtering by ISOs and a search term.\n\nReturns constraints where market_id matches an item in the comma-separated\nisos list and constraint_name contains the search term. When sort_order is\nnot specified and there is a search term, results are sorted by relevance\n(shorter constraint_names first). When sort_order is not specified, there is no\nsearch term, and include_costs is false, results are sorted by latest_seen_utc\ndescending (most recently seen first), then market_id ascending, then\nconstraint_name ascending. When include_costs is true and there is no search\nterm, results are sorted by rt_cost descending with nulls last.\n\nUse include_costs, include_timestamps, and include_dataset_metadata to opt\ninto rt_cost/da_cost, GS timestamps, and pricing dataset metadata.","operationId":"list_constraints_v1_constraints_get","parameters":[{"name":"include_costs","in":"query","required":false,"schema":{"type":"boolean","description":"When true, include rt_cost and da_cost on each constraint. Uses cost_start_time and cost_end_time when provided.","default":false,"title":"Include Costs"},"description":"When true, include rt_cost and da_cost on each constraint. Uses cost_start_time and cost_end_time when provided."},{"name":"include_timestamps","in":"query","required":false,"schema":{"type":"boolean","description":"When true, include gs_created_at_utc and gs_updated_at_utc.","default":false,"title":"Include Timestamps"},"description":"When true, include gs_created_at_utc and gs_updated_at_utc."},{"name":"include_dataset_metadata","in":"query","required":false,"schema":{"type":"boolean","description":"When true, include dataset_metadata with pricing dataset specs.","default":false,"title":"Include Dataset Metadata"},"description":"When true, include dataset_metadata with pricing dataset specs."},{"name":"cost_start_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Optional lower bound for the cost window. When set, include rows where time index >= cost_start_time. Only used when include_costs is true.","title":"Cost Start Time"},"description":"Optional lower bound for the cost window. When set, include rows where time index >= cost_start_time. Only used when include_costs is true."},{"name":"cost_end_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Optional upper bound for the cost window. When set, include rows where time index < cost_end_time. Only used when include_costs is true.","title":"Cost End Time"},"description":"Optional upper bound for the cost window. When set, include rows where time index < cost_end_time. Only used when include_costs is true."},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (query)","title":"Api Key"},"description":"API key for authentication (query)"},{"name":"isos","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated list of market IDs to filter by","title":"Isos"},"description":"Comma-separated list of market IDs to filter by"},{"name":"active_after","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Filter latest_seen_utc to be on or after this timestamp","title":"Active After"},"description":"Filter latest_seen_utc to be on or after this timestamp"},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":100000,"minimum":0},{"type":"null"}],"description":"Maximum number of results to return (default: 10000)","default":10000,"title":"Limit"},"description":"Maximum number of results to return (default: 10000)"},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/OrderBy"},{"type":"null"}],"description":"Sort order: asc or desc. Defaults to desc when omitted.","title":"Sort Order"},"description":"Sort order: asc or desc. Defaults to desc when omitted."},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional search term to filter by constraint_name","title":"Search"},"description":"Optional search term to filter by constraint_name"},{"name":"sort_column","in":"query","required":false,"schema":{"anyOf":[{"enum":["constraint_name","market_id","earliest_seen_utc","latest_seen_utc"],"type":"string"},{"type":"null"}],"description":"Column to sort by. Must be one of: constraint_name, market_id, earliest_seen_utc, latest_seen_utc","title":"Sort Column"},"description":"Column to sort by. Must be one of: constraint_name, market_id, earliest_seen_utc, latest_seen_utc"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (header)","title":"X-Api-Key"},"description":"API key for authentication (header)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstraintsListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/constraints/contingencies":{"get":{"tags":["Constraints"],"summary":"List Contingencies","description":"Get a list of contingencies with optional filtering by ISOs and a search term.\n\nReturns all rows and columns from the contingencies table where market_id\nmatches an item in the comma-separated isos list and contingency_name\ncontains the search term. When sort_order is not specified and there is a\nsearch term, results are sorted by relevance (shorter contingency_names\nfirst). When sort_order is not specified and there is no search term,\nresults are sorted by latest_seen_utc descending (most recently seen first),\nthen market_id ascending, then contingency_name ascending for consistent\nordering.\n\nArgs:\n    params: Query parameters (isos, search, active_after, limit,\n        sort_column, sort_order)","operationId":"list_contingencies_v1_constraints_contingencies_get","parameters":[{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (query)","title":"Api Key"},"description":"API key for authentication (query)"},{"name":"isos","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated list of market IDs to filter by","title":"Isos"},"description":"Comma-separated list of market IDs to filter by"},{"name":"active_after","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Filter latest_seen_utc to be on or after this timestamp","title":"Active After"},"description":"Filter latest_seen_utc to be on or after this timestamp"},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":100000,"minimum":0},{"type":"null"}],"description":"Maximum number of results to return (default: 10000)","default":10000,"title":"Limit"},"description":"Maximum number of results to return (default: 10000)"},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/OrderBy"},{"type":"null"}],"description":"Sort order: asc or desc. Defaults to desc when omitted.","title":"Sort Order"},"description":"Sort order: asc or desc. Defaults to desc when omitted."},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional search term to filter by contingency_name","title":"Search"},"description":"Optional search term to filter by contingency_name"},{"name":"sort_column","in":"query","required":false,"schema":{"anyOf":[{"enum":["contingency_name","market_id","earliest_seen_utc","latest_seen_utc"],"type":"string"},{"type":"null"}],"description":"Column to sort by. Must be one of: contingency_name, market_id, earliest_seen_utc, latest_seen_utc","title":"Sort Column"},"description":"Column to sort by. Must be one of: contingency_name, market_id, earliest_seen_utc, latest_seen_utc"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (header)","title":"X-Api-Key"},"description":"API key for authentication (header)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ContingencyListResponse"},"title":"Response List Contingencies V1 Constraints Contingencies Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/constraints/locations/{location_gs_entity_id}/shift-factors":{"get":{"tags":["Constraints"],"summary":"List Shift Factors For Location","description":"Retrieve estimated shift factors for a pricing location.\n\nQueries ClickHouse ``linear_estimated_shift_factors`` for the given\nlocation, returning one row per ``constraint_gs_entity_id``. When multiple\nsource rows share the same constraint, ``estimated_shift_factor`` is\naggregated per ``aggregation_function`` (mean, max, min, or median).\nOptional ``contingency_id`` restricts rows to a single contingency.\nOptional ``dataset_id`` filters on ``source_dataset``.\nWhen ``exclude_zeros`` is true, source rows with ``estimated_shift_factor``\nequal to zero are dropped before aggregating per constraint.","operationId":"list_shift_factors_for_location_v1_constraints_locations__location_gs_entity_id__shift_factors_get","parameters":[{"name":"location_gs_entity_id","in":"path","required":true,"schema":{"type":"string","title":"Location Gs Entity Id"}},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (query)","title":"Api Key"},"description":"API key for authentication (query)"},{"name":"contingency_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contingency ID","description":"When set, only include rows with this contingency_gs_entity_id"},"description":"When set, only include rows with this contingency_gs_entity_id"},{"name":"dataset_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dataset ID","description":"When set, only include rows with this source_dataset"},"description":"When set, only include rows with this source_dataset"},{"name":"exclude_zeros","in":"query","required":false,"schema":{"type":"boolean","title":"Exclude zeros","description":"When true, exclude rows where estimated_shift_factor is zero before aggregating each group","default":false},"description":"When true, exclude rows where estimated_shift_factor is zero before aggregating each group"},{"name":"aggregation_function","in":"query","required":false,"schema":{"enum":["mean","max","min","median"],"type":"string","title":"Aggregation function","description":"Function used to combine source rows in each group: mean, max, min, or median","default":"mean"},"description":"Function used to combine source rows in each group: mean, max, min, or median"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (header)","title":"X-Api-Key"},"description":"API key for authentication (header)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ShiftFactorConstraintResponse"},"title":"Response List Shift Factors For Location V1 Constraints Locations  Location Gs Entity Id  Shift Factors Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/constraints/locations/{location_gs_entity_id}/constraint-costs":{"get":{"tags":["Constraints"],"summary":"List Constraint Costs For Location","description":"Get location-adjusted constraint costs over a time range.\n\nThe endpoint computes total cost per constraint/contingency pair from the\nspecified constraint dataset in ClickHouse, then multiplies each by the\nlocation's aggregated shift factor (mean) from\n``linear_estimated_shift_factors`` for the same dataset.\nFor datasets without ``contingency_gs_entity_id``, costs are computed per\nconstraint and reused across that constraint's shift-factor contingency rows.","operationId":"list_constraint_costs_for_location_v1_constraints_locations__location_gs_entity_id__constraint_costs_get","parameters":[{"name":"location_gs_entity_id","in":"path","required":true,"schema":{"type":"string","title":"Location Gs Entity Id"}},{"name":"dataset_id","in":"query","required":true,"schema":{"type":"string","title":"Dataset Id"}},{"name":"start_time","in":"query","required":true,"schema":{"type":"string","format":"date-time","description":"Filter to rows where time index >= start_time (ISO 8601)","title":"Start Time"},"description":"Filter to rows where time index >= start_time (ISO 8601)"},{"name":"end_time","in":"query","required":true,"schema":{"type":"string","format":"date-time","description":"Filter to rows where time index < end_time (ISO 8601)","title":"End Time"},"description":"Filter to rows where time index < end_time (ISO 8601)"},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (query)","title":"Api Key"},"description":"API key for authentication (query)"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (header)","title":"X-Api-Key"},"description":"API key for authentication (header)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LocationConstraintCostResponse"},"title":"Response List Constraint Costs For Location V1 Constraints Locations  Location Gs Entity Id  Constraint Costs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/constraints/locations/{location_gs_entity_id}/constraint-impact":{"get":{"tags":["Constraints"],"summary":"List Constraint Impact For Location","description":"Get per-constraint impact from abs(median shadow price) and shift factors.","operationId":"list_constraint_impact_for_location_v1_constraints_locations__location_gs_entity_id__constraint_impact_get","parameters":[{"name":"location_gs_entity_id","in":"path","required":true,"schema":{"type":"string","title":"Location Gs Entity Id"}},{"name":"dataset_id","in":"query","required":true,"schema":{"type":"string","title":"Dataset Id"}},{"name":"start_time","in":"query","required":true,"schema":{"type":"string","format":"date-time","description":"Filter to rows where time index >= start_time (ISO 8601)","title":"Start Time"},"description":"Filter to rows where time index >= start_time (ISO 8601)"},{"name":"end_time","in":"query","required":true,"schema":{"type":"string","format":"date-time","description":"Filter to rows where time index < end_time (ISO 8601)","title":"End Time"},"description":"Filter to rows where time index < end_time (ISO 8601)"},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (query)","title":"Api Key"},"description":"API key for authentication (query)"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (header)","title":"X-Api-Key"},"description":"API key for authentication (header)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LocationConstraintImpactResponse"},"title":"Response List Constraint Impact For Location V1 Constraints Locations  Location Gs Entity Id  Constraint Impact Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/constraints/{constraint_id}/shift-factors":{"get":{"tags":["Constraints"],"summary":"List Shift Factors","description":"Retrieve estimated shift factors for a constraint.\n\nQueries ClickHouse ``linear_estimated_shift_factors`` for the given\nconstraint, returning one row per ``location_gs_entity_id``. When multiple\nsource rows share the same location, ``estimated_shift_factor`` is\naggregated per ``aggregation_function`` (mean, max, min, or median).\nOptional ``contingency_id`` restricts rows to a single contingency.\nOptional ``dataset_id`` filters on ``source_dataset``.\nWhen ``exclude_zeros`` is true, source rows with ``estimated_shift_factor``\nequal to zero are dropped before aggregating per location.","operationId":"list_shift_factors_v1_constraints__constraint_id__shift_factors_get","parameters":[{"name":"constraint_id","in":"path","required":true,"schema":{"type":"string","title":"Constraint ID","description":"GS entity ID of the constraint to get shift factors for"},"description":"GS entity ID of the constraint to get shift factors for"},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (query)","title":"Api Key"},"description":"API key for authentication (query)"},{"name":"contingency_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contingency ID","description":"When set, only include rows with this contingency_gs_entity_id"},"description":"When set, only include rows with this contingency_gs_entity_id"},{"name":"dataset_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dataset ID","description":"When set, only include rows with this source_dataset"},"description":"When set, only include rows with this source_dataset"},{"name":"exclude_zeros","in":"query","required":false,"schema":{"type":"boolean","title":"Exclude zeros","description":"When true, exclude rows where estimated_shift_factor is zero before aggregating each group","default":false},"description":"When true, exclude rows where estimated_shift_factor is zero before aggregating each group"},{"name":"aggregation_function","in":"query","required":false,"schema":{"enum":["mean","max","min","median"],"type":"string","title":"Aggregation function","description":"Function used to combine source rows in each group: mean, max, min, or median","default":"mean"},"description":"Function used to combine source rows in each group: mean, max, min, or median"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (header)","title":"X-Api-Key"},"description":"API key for authentication (header)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ShiftFactorLocationResponse"},"title":"Response List Shift Factors V1 Constraints  Constraint Id  Shift Factors Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/constraints/binding":{"get":{"tags":["Constraints"],"summary":"List Constraint Binding Rows","description":"Get binding rows for a dataset with constraint display names.","operationId":"list_constraint_binding_rows_v1_constraints_binding_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100000,"minimum":1,"description":"Maximum number of rows to return.","default":50000,"title":"Limit"},"description":"Maximum number of rows to return."},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (query)","title":"Api Key"},"description":"API key for authentication (query)"},{"name":"dataset_id","in":"query","required":true,"schema":{"type":"string","title":"Dataset Id"}},{"name":"start_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Filter to rows where time index >= start_time (ISO 8601)","title":"Start Time"},"description":"Filter to rows where time index >= start_time (ISO 8601)"},{"name":"end_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Filter to rows where time index < end_time (ISO 8601 timestamp)","title":"End Time"},"description":"Filter to rows where time index < end_time (ISO 8601 timestamp)"},{"name":"price_threshold","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Optional threshold. When set, only include rows where ABS(configured shadow price column) > price_threshold.","title":"Price Threshold"},"description":"Optional threshold. When set, only include rows where ABS(configured shadow price column) > price_threshold."},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (header)","title":"X-Api-Key"},"description":"API key for authentication (header)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response List Constraint Binding Rows V1 Constraints Binding Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/constraints/{constraint_id}/binding_intervals_by_hour":{"get":{"tags":["Constraints"],"summary":"List Constraint Binding Intervals By Hour","description":"Get filtered binding interval counts grouped by hour-of-day.","operationId":"list_constraint_binding_intervals_by_hour_v1_constraints__constraint_id__binding_intervals_by_hour_get","parameters":[{"name":"constraint_id","in":"path","required":true,"schema":{"type":"string","title":"Constraint ID","description":"GS entity ID of the constraint to query"},"description":"GS entity ID of the constraint to query"},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (query)","title":"Api Key"},"description":"API key for authentication (query)"},{"name":"dataset_id","in":"query","required":true,"schema":{"type":"string","title":"Dataset Id"}},{"name":"timezone","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional IANA timezone (e.g. America/New_York). When provided, buckets are computed in this timezone.","title":"Timezone"},"description":"Optional IANA timezone (e.g. America/New_York). When provided, buckets are computed in this timezone."},{"name":"start_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Filter to rows where time index >= start_time (ISO 8601)","title":"Start Time"},"description":"Filter to rows where time index >= start_time (ISO 8601)"},{"name":"end_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Filter to rows where time index < end_time (ISO 8601)","title":"End Time"},"description":"Filter to rows where time index < end_time (ISO 8601)"},{"name":"price_threshold","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Optional threshold. When set, only include rows where ABS(configured shadow price column) > price_threshold.","title":"Price Threshold"},"description":"Optional threshold. When set, only include rows where ABS(configured shadow price column) > price_threshold."},{"name":"contingency_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional contingency GS entity ID filter.","title":"Contingency Id"},"description":"Optional contingency GS entity ID filter."},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (header)","title":"X-Api-Key"},"description":"API key for authentication (header)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ConstraintBindingHourCountResponse"},"title":"Response List Constraint Binding Intervals By Hour V1 Constraints  Constraint Id  Binding Intervals By Hour Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/constraints/{constraint_id}/stats":{"get":{"tags":["Constraints"],"summary":"List Constraint Stats By Interval","description":"Get per-interval count, shadow-price summary stats, and total cost.","operationId":"list_constraint_stats_by_interval_v1_constraints__constraint_id__stats_get","parameters":[{"name":"constraint_id","in":"path","required":true,"schema":{"type":"string","title":"Constraint ID","description":"GS entity ID of the constraint to query"},"description":"GS entity ID of the constraint to query"},{"name":"aggregation_period","in":"query","required":true,"schema":{"enum":["hour","day","month","year"],"type":"string","description":"Aggregation bucket size. One of \"hour\", \"day\", \"month\", \"year\".","title":"Aggregation Period"},"description":"Aggregation bucket size. One of \"hour\", \"day\", \"month\", \"year\"."},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (query)","title":"Api Key"},"description":"API key for authentication (query)"},{"name":"dataset_id","in":"query","required":true,"schema":{"type":"string","title":"Dataset Id"}},{"name":"timezone","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional IANA timezone (e.g. America/New_York). When provided, buckets are computed in this timezone.","title":"Timezone"},"description":"Optional IANA timezone (e.g. America/New_York). When provided, buckets are computed in this timezone."},{"name":"start_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Filter to rows where time index >= start_time (ISO 8601)","title":"Start Time"},"description":"Filter to rows where time index >= start_time (ISO 8601)"},{"name":"end_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Filter to rows where time index < end_time (ISO 8601)","title":"End Time"},"description":"Filter to rows where time index < end_time (ISO 8601)"},{"name":"price_threshold","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Optional threshold. When set, only include rows where ABS(configured shadow price column) > price_threshold.","title":"Price Threshold"},"description":"Optional threshold. When set, only include rows where ABS(configured shadow price column) > price_threshold."},{"name":"contingency_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional contingency GS entity ID filter.","title":"Contingency Id"},"description":"Optional contingency GS entity ID filter."},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (header)","title":"X-Api-Key"},"description":"API key for authentication (header)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ConstraintStatsIntervalResponse"},"title":"Response List Constraint Stats By Interval V1 Constraints  Constraint Id  Stats Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/constraints/binding/counts":{"get":{"tags":["Constraints"],"summary":"List Constraint Binding Counts By Period","description":"Summarize unique binding constraints per UTC period for a dataset.","operationId":"list_constraint_binding_counts_by_period_v1_constraints_binding_counts_get","parameters":[{"name":"aggregation_period","in":"query","required":false,"schema":{"enum":["hour","day","month","year"],"type":"string","description":"UTC aggregation period for grouping counts. Supported values: hour, day, month, year.","default":"hour","title":"Aggregation Period"},"description":"UTC aggregation period for grouping counts. Supported values: hour, day, month, year."},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (query)","title":"Api Key"},"description":"API key for authentication (query)"},{"name":"dataset_id","in":"query","required":true,"schema":{"type":"string","title":"Dataset Id"}},{"name":"start_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Filter to rows where time index >= start_time (ISO 8601)","title":"Start Time"},"description":"Filter to rows where time index >= start_time (ISO 8601)"},{"name":"end_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Filter to rows where time index < end_time (ISO 8601 timestamp)","title":"End Time"},"description":"Filter to rows where time index < end_time (ISO 8601 timestamp)"},{"name":"price_threshold","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Optional threshold. When set, only include rows where ABS(configured shadow price column) > price_threshold.","title":"Price Threshold"},"description":"Optional threshold. When set, only include rows where ABS(configured shadow price column) > price_threshold."},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (header)","title":"X-Api-Key"},"description":"API key for authentication (header)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BindingConstraintCountResponse"},"title":"Response List Constraint Binding Counts By Period V1 Constraints Binding Counts Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/constraints/binding/costs":{"get":{"tags":["Constraints"],"summary":"List Constraint Binding Costs By Period","description":"Summarize total binding cost per UTC period for a dataset.","operationId":"list_constraint_binding_costs_by_period_v1_constraints_binding_costs_get","parameters":[{"name":"aggregation_period","in":"query","required":false,"schema":{"enum":["hour","day","month","year"],"type":"string","description":"UTC aggregation period for grouping costs. Supported values: hour, day, month, year.","default":"hour","title":"Aggregation Period"},"description":"UTC aggregation period for grouping costs. Supported values: hour, day, month, year."},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (query)","title":"Api Key"},"description":"API key for authentication (query)"},{"name":"dataset_id","in":"query","required":true,"schema":{"type":"string","title":"Dataset Id"}},{"name":"start_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Filter to rows where time index >= start_time (ISO 8601)","title":"Start Time"},"description":"Filter to rows where time index >= start_time (ISO 8601)"},{"name":"end_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Filter to rows where time index < end_time (ISO 8601 timestamp)","title":"End Time"},"description":"Filter to rows where time index < end_time (ISO 8601 timestamp)"},{"name":"price_threshold","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Optional threshold. When set, only include rows where ABS(configured shadow price column) > price_threshold.","title":"Price Threshold"},"description":"Optional threshold. When set, only include rows where ABS(configured shadow price column) > price_threshold."},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (header)","title":"X-Api-Key"},"description":"API key for authentication (header)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BindingConstraintCostResponse"},"title":"Response List Constraint Binding Costs By Period V1 Constraints Binding Costs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/constraints/binding/heat_map":{"get":{"tags":["Constraints"],"summary":"Get Constraint Binding Heat Map","description":"Return binding costs aggregated by time bucket and constraint id.","operationId":"get_constraint_binding_heat_map_v1_constraints_binding_heat_map_get","parameters":[{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (query)","title":"Api Key"},"description":"API key for authentication (query)"},{"name":"dataset_id","in":"query","required":true,"schema":{"type":"string","title":"Dataset Id"}},{"name":"start_time","in":"query","required":true,"schema":{"type":"string","format":"date-time","description":"Filter to rows where time index >= start_time (ISO 8601)","title":"Start Time"},"description":"Filter to rows where time index >= start_time (ISO 8601)"},{"name":"end_time","in":"query","required":true,"schema":{"type":"string","format":"date-time","description":"Filter to rows where time index < end_time (ISO 8601 timestamp)","title":"End Time"},"description":"Filter to rows where time index < end_time (ISO 8601 timestamp)"},{"name":"price_threshold","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Optional threshold. When set, only include rows where ABS(configured shadow price column) > price_threshold.","title":"Price Threshold"},"description":"Optional threshold. When set, only include rows where ABS(configured shadow price column) > price_threshold."},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (header)","title":"X-Api-Key"},"description":"API key for authentication (header)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstraintBindingHeatMapResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/constraints/{gs_entity_id}":{"get":{"tags":["Constraints"],"summary":"Get Constraint","description":"Get data for a specific constraint by its GS entity ID.","operationId":"get_constraint_v1_constraints__gs_entity_id__get","parameters":[{"name":"gs_entity_id","in":"path","required":true,"schema":{"type":"string","title":"GS Entity ID","description":"GS entity ID of the constraint to query"},"description":"GS entity ID of the constraint to query"},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (query)","title":"Api Key"},"description":"API key for authentication (query)"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (header)","title":"X-Api-Key"},"description":"API key for authentication (header)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstraintResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/constraints/{constraint_id}/intervals":{"get":{"tags":["Constraints"],"summary":"Get Constraint Intervals","description":"Year/month/day-level statistics on binding intervals in ISO local time.","operationId":"get_constraint_intervals_v1_constraints__constraint_id__intervals_get","parameters":[{"name":"constraint_id","in":"path","required":true,"schema":{"type":"string","title":"Constraint ID","description":"GS entity ID of the constraint to query"},"description":"GS entity ID of the constraint to query"},{"name":"dataset_id","in":"query","required":true,"schema":{"type":"string","title":"Dataset Id"}},{"name":"contingency_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contingency ID","description":"Optional contingency GS entity ID filter. Applied only when the dataset contains contingency_gs_entity_id."},"description":"Optional contingency GS entity ID filter. Applied only when the dataset contains contingency_gs_entity_id."},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (query)","title":"Api Key"},"description":"API key for authentication (query)"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (header)","title":"X-Api-Key"},"description":"API key for authentication (header)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ConstraintIntervalResponse"},"title":"Response Get Constraint Intervals V1 Constraints  Constraint Id  Intervals Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/constraints/{constraint_id}/contingencies":{"get":{"tags":["Constraints"],"summary":"List Contingencies For Constraint","description":"Contingencies binding for a constraint in a dataset/time window.","operationId":"list_contingencies_for_constraint_v1_constraints__constraint_id__contingencies_get","parameters":[{"name":"constraint_id","in":"path","required":true,"schema":{"type":"string","title":"Constraint ID","description":"Constraint GS entity ID to filter by (constraint_gs_entity_id)"},"description":"Constraint GS entity ID to filter by (constraint_gs_entity_id)"},{"name":"dataset_id","in":"query","required":true,"schema":{"type":"string","title":"Dataset Id"}},{"name":"include_binding_stats","in":"query","required":false,"schema":{"type":"boolean","description":"When true, include binding_intervals and total_cost and apply start_time/end_time/time filters. Default returns id and name only.","default":false,"title":"Include Binding Stats"},"description":"When true, include binding_intervals and total_cost and apply start_time/end_time/time filters. Default returns id and name only."},{"name":"start_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Start time (ISO timestamp) for filtering (inclusive). Requires time index column. Only used when include_binding_stats is true.","title":"Start Time"},"description":"Start time (ISO timestamp) for filtering (inclusive). Requires time index column. Only used when include_binding_stats is true."},{"name":"end_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"End time (ISO timestamp) for filtering (exclusive). Requires time index column. Only used when include_binding_stats is true.","title":"End Time"},"description":"End time (ISO timestamp) for filtering (exclusive). Requires time index column. Only used when include_binding_stats is true."},{"name":"time","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional specific timestamp to filter results. Cannot be used with start_time or end_time. Only used when include_binding_stats is true.","title":"Time"},"description":"Optional specific timestamp to filter results. Cannot be used with start_time or end_time. Only used when include_binding_stats is true."},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (query)","title":"Api Key"},"description":"API key for authentication (query)"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (header)","title":"X-Api-Key"},"description":"API key for authentication (header)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ContingencyResponse"},"title":"Response List Contingencies For Constraint V1 Constraints  Constraint Id  Contingencies Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/pricing_locations":{"get":{"tags":["Pricing Locations"],"summary":"List Pricing Locations","description":"Get a list of pricing locations with optional filtering by ISOs, zones,\nzone types and a search term.\n\nArgs:\n    params: Query parameters for filtering pricing locations\n    sort_column: Column to sort by.\n    sort_order: Sort order - 'asc' or 'desc'.","operationId":"list_pricing_locations_v1_pricing_locations_get","parameters":[{"name":"sort_column","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sort Column"}},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/OrderBy"},{"type":"null"}],"title":"Sort Order"}},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (query)","title":"Api Key"},"description":"API key for authentication (query)"},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional search term to filter locations by name","title":"Search"},"description":"Optional search term to filter locations by name"},{"name":"isos","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated list of market IDs to filter by","title":"Isos"},"description":"Comma-separated list of market IDs to filter by"},{"name":"zones","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated list of zones to filter by","title":"Zones"},"description":"Comma-separated list of zones to filter by"},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated list of statuses to filter by","title":"Status"},"description":"Comma-separated list of statuses to filter by"},{"name":"location_types","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated list of location types to filter by","title":"Location Types"},"description":"Comma-separated list of location types to filter by"},{"name":"has_geo_data","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Filter by whether locations have geographic data","title":"Has Geo Data"},"description":"Filter by whether locations have geographic data"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (header)","title":"X-Api-Key"},"description":"API key for authentication (header)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FacetedSearchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/pricing_locations/nearby":{"get":{"tags":["Pricing Locations"],"summary":"List Nearby Pricing Locations","description":"Get a list of pricing locations near the provided latitude/longitude\nor gs_entity_id. User must provide either latitude and longitude or a\ngs_entity_id, but not both.","operationId":"list_nearby_pricing_locations_v1_pricing_locations_nearby_get","parameters":[{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (query)","title":"Api Key"},"description":"API key for authentication (query)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"latitude","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":90,"minimum":-90},{"type":"null"}],"description":"The latitude of the location to search","title":"Latitude"},"description":"The latitude of the location to search"},{"name":"longitude","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":180,"minimum":-180},{"type":"null"}],"description":"The longitude of the location to search","title":"Longitude"},"description":"The longitude of the location to search"},{"name":"gs_entity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The GS entity ID of the location to search","title":"Gs Entity Id"},"description":"The GS entity ID of the location to search"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (header)","title":"X-Api-Key"},"description":"API key for authentication (header)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/NearbyPricingLocationItem"},"title":"Response List Nearby Pricing Locations V1 Pricing Locations Nearby Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/pricing_locations/{gs_entity_id}":{"get":{"tags":["Pricing Locations"],"summary":"Get Pricing Location","description":"Get data for a specific pricing location by its ID.","operationId":"get_pricing_location_v1_pricing_locations__gs_entity_id__get","parameters":[{"name":"gs_entity_id","in":"path","required":true,"schema":{"type":"string","title":"Pricing Location","description":"Name of the pricing location to query"},"description":"Name of the pricing location to query"},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (query)","title":"Api Key"},"description":"API key for authentication (query)"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for authentication (header)","title":"X-Api-Key"},"description":"API key for authentication (header)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PricingLocationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"APIInfoResponse":{"properties":{"name":{"type":"string","title":"Name"},"version":{"type":"string","title":"Version"}},"type":"object","required":["name","version"],"title":"APIInfoResponse","example":{"name":"Grid Status API","version":"1.3.0"}},"APIUsageLimits":{"properties":{"api_rows_returned_limit":{"type":"integer","title":"Api Rows Returned Limit"},"api_requests_limit":{"type":"integer","title":"Api Requests Limit"},"api_rows_per_response_limit":{"type":"integer","title":"Api Rows Per Response Limit"},"per_second_api_rate_limit":{"type":"integer","title":"Per Second Api Rate Limit"},"per_minute_api_rate_limit":{"type":"integer","title":"Per Minute Api Rate Limit"},"per_hour_api_rate_limit":{"type":"integer","title":"Per Hour Api Rate Limit"}},"type":"object","required":["api_rows_returned_limit","api_requests_limit","api_rows_per_response_limit","per_second_api_rate_limit","per_minute_api_rate_limit","per_hour_api_rate_limit"],"title":"APIUsageLimits"},"APIUsageResponse":{"properties":{"plan_name":{"type":"string","title":"Plan Name"},"limits":{"$ref":"#/components/schemas/APIUsageLimits"},"current_usage_period_start":{"type":"string","format":"date-time","title":"Current Usage Period Start"},"current_usage_period_end":{"type":"string","format":"date-time","title":"Current Usage Period End"},"current_period_usage":{"$ref":"#/components/schemas/CurrentPeriodUsage"}},"type":"object","required":["plan_name","limits","current_usage_period_start","current_usage_period_end","current_period_usage"],"title":"APIUsageResponse"},"BindingConstraintCostResponse":{"properties":{"period_start_utc":{"type":"string","format":"date-time","title":"Period Start Utc"},"total_cost":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Cost"}},"type":"object","required":["period_start_utc","total_cost"],"title":"BindingConstraintCostResponse","description":"Total binding cost for a single UTC aggregation period."},"BindingConstraintCountResponse":{"properties":{"period_start_utc":{"type":"string","format":"date-time","title":"Period Start Utc"},"binding_constraint_count":{"type":"integer","title":"Binding Constraint Count"},"binding_constraint_ids":{"items":{"type":"string"},"type":"array","title":"Binding Constraint Ids"}},"type":"object","required":["period_start_utc","binding_constraint_count","binding_constraint_ids"],"title":"BindingConstraintCountResponse","description":"Count of unique binding constraints for a single UTC aggregation period."},"BlockPricingDateGroup":{"properties":{"date":{"type":"string","title":"Date","description":"Column identifier: an ISO date (YYYY-MM-DD) for a daily column, \"MTD\" for month-to-date, or a \"Month-Year\" label for a full-month summary."},"is_nerc_holiday":{"type":"boolean","title":"Is Nerc Holiday","description":"Whether the daily column is a NERC holiday. False for summary columns.","default":false},"data":{"items":{"$ref":"#/components/schemas/BlockPricingDatum"},"type":"array","title":"Data","description":"Block values for this column, one entry per market/block."}},"type":"object","required":["date","data"],"title":"BlockPricingDateGroup","description":"All block values for a single response column."},"BlockPricingDatum":{"properties":{"market":{"type":"string","title":"Market","description":"Market the value is for (\"da\" or \"rt\")."},"block":{"type":"string","title":"Block","description":"Block the value is for (e.g. 7x24, on-peak, off-peak)."},"value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Value","description":"Volume-weighted average price for the block over the column's window, or null when no data is available."},"pct_change":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pct Change","description":"Percent change of `value` relative to the previous period for the same market and block (e.g. the prior market day for daily columns, or the prior calendar month for summary columns). Null when the previous period has no value or when the prior value is zero."},"complete":{"type":"boolean","title":"Complete","description":"Whether every interval in the column's window has reported data. False for in-progress windows (e.g. the current day or month-to-date)."}},"type":"object","required":["market","block","value","pct_change","complete"],"title":"BlockPricingDatum","description":"A single block's value for one column (a day or a summary period)."},"BlockPricingQueryParams":{"properties":{"start_date":{"type":"string","format":"date","title":"Start Date","description":"Start of date range (inclusive), interpreted in the ISO market timezone."},"end_date":{"type":"string","format":"date","title":"End Date","description":"End of date range (exclusive), interpreted in the ISO market timezone."},"location":{"type":"string","title":"Location","description":"Location filter."},"market":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Market","description":"Optional market filter. Allowed values: \"da\" or \"rt\"."},"blocks":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Blocks","description":"Optional comma-separated list of block values. Allowed values: 7x24, 7x8, 2x16h, on-peak, off-peak."}},"type":"object","required":["start_date","end_date","location"],"title":"BlockPricingQueryParams"},"CSVResponse":{"properties":{"file":{"anyOf":[{"$ref":"#/components/schemas/FileResponseData"},{"type":"null"}],"description":"The CSV data as a bytes object, a string, or a StreamingResponse object."},"content_type":{"type":"string","title":"Content Type","description":"The content type of the response.","default":"text/csv"}},"type":"object","title":"CSVResponse"},"ColumnResponse":{"properties":{"name":{"type":"string","title":"Name"},"type":{"type":"string","title":"Type"},"is_numeric":{"type":"boolean","title":"Is Numeric"},"is_date":{"type":"boolean","title":"Is Date","default":false},"is_datetime":{"type":"boolean","title":"Is Datetime"}},"type":"object","required":["name","type","is_numeric","is_datetime"],"title":"ColumnResponse"},"ConstraintBindingHeatMapCellResponse":{"properties":{"bucket_start_utc":{"type":"string","format":"date-time","title":"Bucket Start Utc"},"interval_start_utc":{"type":"string","format":"date-time","title":"Interval Start Utc","description":"UTC timestamp of the binding row with the largest absolute shadow price in this bucket; may be an irregular dataset time index (not necessarily aligned to bucket_start_utc)."},"constraint_gs_entity_id":{"type":"string","title":"Constraint Gs Entity Id"},"cost":{"type":"number","title":"Cost"}},"type":"object","required":["bucket_start_utc","interval_start_utc","constraint_gs_entity_id","cost"],"title":"ConstraintBindingHeatMapCellResponse"},"ConstraintBindingHeatMapResponse":{"properties":{"interval_minutes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Interval Minutes"},"cells":{"items":{"$ref":"#/components/schemas/ConstraintBindingHeatMapCellResponse"},"type":"array","title":"Cells"},"unsupported_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Unsupported Reason"}},"type":"object","title":"ConstraintBindingHeatMapResponse","description":"Binding heat map data for the constraint-by-time card."},"ConstraintBindingHourCountResponse":{"properties":{"hour":{"type":"integer","title":"Hour"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["hour","count"],"title":"ConstraintBindingHourCountResponse","description":"Count of filtered binding rows by local hour (requested timezone or UTC)."},"ConstraintIntervalDayResponse":{"properties":{"day":{"type":"integer","title":"Day"},"count":{"type":"integer","title":"Count"},"times":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Times"}},"type":"object","required":["day","count"],"title":"ConstraintIntervalDayResponse","description":"Day-level count of unique timestamps within a month."},"ConstraintIntervalMonthResponse":{"properties":{"month":{"type":"integer","title":"Month"},"count":{"type":"integer","title":"Count"},"days":{"anyOf":[{"items":{"$ref":"#/components/schemas/ConstraintIntervalDayResponse"},"type":"array"},{"type":"null"}],"title":"Days"}},"type":"object","required":["month","count"],"title":"ConstraintIntervalMonthResponse","description":"Month-level count of unique timestamps within a year."},"ConstraintIntervalResponse":{"properties":{"year":{"type":"integer","title":"Year"},"count":{"type":"integer","title":"Count"},"months":{"anyOf":[{"items":{"$ref":"#/components/schemas/ConstraintIntervalMonthResponse"},"type":"array"},{"type":"null"}],"title":"Months"}},"type":"object","required":["year","count"],"title":"ConstraintIntervalResponse","description":"Year/month/day-level statistics for constraint binding intervals.\n\nYear: months with data and count in each.\nMonth: days with data and count in each.\nDay: times (HH:MM:SS strings) for unique timestamps on that day."},"ConstraintPricingDatasetSpecResponse":{"properties":{"dataset_id":{"type":"string","title":"Dataset Id"},"shadow_price_column":{"type":"string","title":"Shadow Price Column"}},"type":"object","required":["dataset_id","shadow_price_column"],"title":"ConstraintPricingDatasetSpecResponse"},"ConstraintResponse":{"properties":{"gs_entity_id":{"type":"string","title":"Gs Entity Id"},"constraint_name":{"type":"string","title":"Constraint Name"},"market_id":{"type":"string","title":"Market Id"},"earliest_seen_utc":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Earliest Seen Utc"},"latest_seen_utc":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Latest Seen Utc"},"available_datasets":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Available Datasets"},"rt_cost":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Rt Cost"},"da_cost":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Da Cost"},"gs_created_at_utc":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Gs Created At Utc"},"gs_updated_at_utc":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Gs Updated At Utc"}},"type":"object","required":["gs_entity_id","constraint_name","market_id","earliest_seen_utc","latest_seen_utc","available_datasets"],"title":"ConstraintResponse"},"ConstraintStatsIntervalResponse":{"properties":{"interval_start_utc":{"type":"string","format":"date-time","title":"Interval Start Utc"},"binding_intervals":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Binding Intervals"},"shadow_price_min":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Shadow Price Min"},"shadow_price_mean":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Shadow Price Mean"},"shadow_price_median":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Shadow Price Median"},"shadow_price_max":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Shadow Price Max"},"total_cost":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Cost"}},"type":"object","required":["interval_start_utc","binding_intervals","shadow_price_min","shadow_price_mean","shadow_price_median","shadow_price_max","total_cost"],"title":"ConstraintStatsIntervalResponse","description":"Per-interval aggregate stats for filtered constraint rows."},"ConstraintsListResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/ConstraintResponse"},"type":"array","title":"Data"},"dataset_metadata":{"anyOf":[{"additionalProperties":{"additionalProperties":{"items":{"$ref":"#/components/schemas/ConstraintPricingDatasetSpecResponse"},"type":"array"},"type":"object"},"type":"object"},{"type":"null"}],"title":"Dataset Metadata"}},"type":"object","required":["data"],"title":"ConstraintsListResponse"},"ContingencyListResponse":{"properties":{"gs_entity_id":{"type":"string","title":"Gs Entity Id"},"contingency_name":{"type":"string","title":"Contingency Name"},"market_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Market Id"},"earliest_seen_utc":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Earliest Seen Utc"},"latest_seen_utc":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Latest Seen Utc"},"available_datasets":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Available Datasets"},"gs_created_at_utc":{"type":"string","format":"date-time","title":"Gs Created At Utc"},"gs_updated_at_utc":{"type":"string","format":"date-time","title":"Gs Updated At Utc"}},"type":"object","required":["gs_entity_id","contingency_name","market_id","earliest_seen_utc","latest_seen_utc","available_datasets","gs_created_at_utc","gs_updated_at_utc"],"title":"ContingencyListResponse"},"ContingencyResponse":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"name":{"type":"string","title":"Name"},"binding_intervals":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Binding Intervals"},"total_cost":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Cost"}},"type":"object","required":["id","name"],"title":"ContingencyResponse","description":"Contingency with id, name, and optional binding stats."},"CurrentPeriodUsage":{"properties":{"total_requests":{"type":"integer","title":"Total Requests"},"total_api_rows_returned":{"type":"integer","title":"Total Api Rows Returned"}},"type":"object","required":["total_requests","total_api_rows_returned"],"title":"CurrentPeriodUsage"},"DatasetAudit":{"properties":{"market_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Market Date"},"number_of_datapoints":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Number Of Datapoints"},"number_of_unique_time_index_values":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Number Of Unique Time Index Values"},"number_of_unique_subseries_index_values":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Number Of Unique Subseries Index Values"},"number_of_unique_publish_times_on_publish_date":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Number Of Unique Publish Times On Publish Date"}},"type":"object","required":["market_date","number_of_datapoints","number_of_unique_time_index_values","number_of_unique_subseries_index_values","number_of_unique_publish_times_on_publish_date"],"title":"DatasetAudit"},"DatasetAuditResponse":{"properties":{"status_code":{"type":"integer","title":"Status Code"},"data":{"items":{"$ref":"#/components/schemas/DatasetAudit"},"type":"array","title":"Data"}},"type":"object","required":["status_code","data"],"title":"DatasetAuditResponse"},"DatasetExportFile":{"properties":{"date":{"type":"string","format":"date","title":"Date","description":"Partition date for this file."},"size_bytes":{"type":"integer","title":"Size Bytes","description":"Object size in bytes."},"last_modified":{"type":"string","format":"date-time","title":"Last Modified","description":"When the object was last written by the export pipeline."}},"type":"object","required":["date","size_bytes","last_modified"],"title":"DatasetExportFile"},"DatasetExportsListResponse":{"properties":{"dataset_id":{"type":"string","title":"Dataset Id"},"file_type":{"type":"string","const":"csv","title":"File Type"},"count":{"type":"integer","title":"Count"},"files":{"items":{"$ref":"#/components/schemas/DatasetExportFile"},"type":"array","title":"Files"}},"type":"object","required":["dataset_id","file_type","count","files"],"title":"DatasetExportsListResponse"},"DatasetResponse":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"earliest_available_time_utc":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Earliest Available Time Utc"},"latest_available_time_utc":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Latest Available Time Utc"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"last_checked_time_utc":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Checked Time Utc"},"primary_key_columns":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Primary Key Columns"},"publish_time_column":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Publish Time Column"},"time_index_column":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time Index Column"},"subseries_index_column":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subseries Index Column"},"all_columns":{"anyOf":[{"items":{"$ref":"#/components/schemas/ColumnResponse"},"type":"array"},{"type":"null"}],"title":"All Columns"},"number_of_rows_approximate":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Number Of Rows Approximate"},"table_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Table Type"},"is_in_snowflake":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is In Snowflake"},"data_frequency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Data Frequency"},"source_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Url"},"publication_frequency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Publication Frequency"},"is_published":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Published"},"created_at_utc":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At Utc"},"status":{"anyOf":[{"$ref":"#/components/schemas/DatasetStatusEnum"},{"type":"null"}]},"popularity_rank":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Popularity Rank"}},"type":"object","required":["id","name","description","earliest_available_time_utc","latest_available_time_utc","source","last_checked_time_utc","primary_key_columns","publish_time_column","time_index_column","subseries_index_column","all_columns","number_of_rows_approximate","table_type","is_in_snowflake","data_frequency","source_url","publication_frequency","is_published","created_at_utc","status"],"title":"DatasetResponse"},"DatasetStatusEnum":{"type":"string","enum":["retired","active","deprecated"],"title":"DatasetStatusEnum"},"DatasetUpdateResponse":{"properties":{"id":{"type":"string","title":"Id"},"dataset":{"type":"string","title":"Dataset"},"time_utc":{"type":"string","format":"date-time","title":"Time Utc"},"num_rows_updated":{"type":"integer","title":"Num Rows Updated"},"num_rows_inserted":{"type":"integer","title":"Num Rows Inserted"},"is_backfill":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Backfill"}},"type":"object","required":["id","dataset","time_utc","num_rows_updated","num_rows_inserted","is_backfill"],"title":"DatasetUpdateResponse"},"DatasetUpdatesResponse":{"properties":{"status_code":{"type":"integer","title":"Status Code"},"data":{"items":{"$ref":"#/components/schemas/DatasetUpdateResponse"},"type":"array","title":"Data"},"meta":{"$ref":"#/components/schemas/MetadataResponse"}},"type":"object","required":["status_code","data","meta"],"title":"DatasetUpdatesResponse"},"FacetedSearchResponse":{"properties":{"items":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Items"},"total_items":{"type":"integer","title":"Total Items"},"facets":{"additionalProperties":{"items":{"additionalProperties":true,"type":"object"},"type":"array"},"type":"object","title":"Facets"}},"type":"object","required":["items","total_items","facets"],"title":"FacetedSearchResponse","description":"Response from get_items_and_facets containing items, total count, and facets."},"FileResponseData":{"properties":{"media_type":{"type":"string","title":"Media Type"},"content":{"anyOf":[{"type":"string","format":"binary"},{"type":"string"}],"title":"Content"}},"type":"object","required":["media_type","content"],"title":"FileResponseData"},"FilterOperator":{"type":"string","enum":["=","!=",">",">=","<","<=","in"],"title":"FilterOperator"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ISOEnum":{"type":"string","enum":["CAISO","ERCOT","IESO","ISONE","MISO","NYISO","PJM","SPP"],"title":"ISOEnum"},"JSONSchema":{"type":"string","enum":["array-of-objects","array-of-arrays"],"title":"JSONSchema"},"ListDatasetsDatasetMetadataResponse":{"properties":{"resample_conversion":{"additionalProperties":{"type":"integer"},"type":"object","title":"Resample Conversion","default":{"1_MINUTE":60,"5_MINUTES":300,"10_MINUTES":600,"15_MINUTES":900,"1_HOUR":3600,"1_DAY":86400,"1_DAY_MARKET":86400,"1_WEEK":604800,"1_MONTH":2592000,"1_YEAR":31536000,"IRREGULAR":-1}}},"type":"object","title":"ListDatasetsDatasetMetadataResponse"},"ListDatasetsResponse":{"properties":{"status_code":{"type":"integer","title":"Status Code"},"data":{"items":{"$ref":"#/components/schemas/DatasetResponse"},"type":"array","title":"Data"},"meta":{"$ref":"#/components/schemas/MetadataResponse"},"dataset_metadata":{"$ref":"#/components/schemas/ListDatasetsDatasetMetadataResponse"}},"type":"object","required":["status_code","data","meta","dataset_metadata"],"title":"ListDatasetsResponse","examples":[{"first":"test2","second":"test"}]},"LocationConstraintCostResponse":{"properties":{"constraint_gs_entity_id":{"type":"string","title":"Constraint Gs Entity Id"},"constraint_name":{"type":"string","title":"Constraint Name"},"contingency_gs_entity_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contingency Gs Entity Id"},"contingency_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contingency Name"},"shift_factor":{"type":"number","title":"Shift Factor"},"total_cost":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Cost"},"adjusted_cost":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Adjusted Cost"}},"type":"object","required":["constraint_gs_entity_id","constraint_name","contingency_gs_entity_id","contingency_name","shift_factor","total_cost","adjusted_cost"],"title":"LocationConstraintCostResponse","description":"Constraint contingency costs adjusted by a location's shift factor."},"LocationConstraintImpactResponse":{"properties":{"constraint_gs_entity_id":{"type":"string","title":"Constraint Gs Entity Id"},"constraint_name":{"type":"string","title":"Constraint Name"},"absolute_median_shadow_price":{"type":"number","title":"Absolute Median Shadow Price"},"average_shift_factor":{"type":"number","title":"Average Shift Factor"},"price_impact":{"type":"number","title":"Price Impact"}},"type":"object","required":["constraint_gs_entity_id","constraint_name","absolute_median_shadow_price","average_shift_factor","price_impact"],"title":"LocationConstraintImpactResponse","description":"Per-constraint impact at a location from median shadow price and shift factor."},"MetadataResponse":{"properties":{"page":{"type":"integer","title":"Page"},"limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Limit"},"page_size":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Page Size"},"hasNextPage":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Hasnextpage"},"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},"type":"object","required":["page","limit","page_size","hasNextPage","cursor"],"title":"MetadataResponse"},"NearbyPricingLocationItem":{"properties":{"gs_entity_id":{"type":"string","title":"Gs Entity Id"},"location":{"type":"string","title":"Location"},"market_id":{"type":"string","title":"Market Id"},"distance_in_miles":{"type":"number","title":"Distance In Miles"}},"type":"object","required":["gs_entity_id","location","market_id","distance_in_miles"],"title":"NearbyPricingLocationItem"},"OrderBy":{"type":"string","enum":["asc","desc"],"title":"OrderBy"},"PeakDamLmpResponse":{"additionalProperties":{"anyOf":[{"type":"number"},{"type":"string","format":"date-time"},{"type":"string"},{"type":"null"}]},"type":"object"},"PeakIntervalResponse":{"properties":{"interval_start_market":{"type":"string","format":"date-time","title":"Interval Start Market"},"interval_end_market":{"type":"string","format":"date-time","title":"Interval End Market"},"load":{"type":"number","title":"Load"},"net_load":{"type":"number","title":"Net Load"}},"additionalProperties":{"anyOf":[{"type":"number"},{"type":"null"}]},"type":"object","required":["interval_start_market","interval_end_market","load","net_load"],"title":"PeakIntervalResponse"},"PeakLoadReportResponse":{"properties":{"ISO":{"type":"string","title":"Iso"},"market_date":{"type":"string","format":"date","title":"Market Date"},"timezone":{"type":"string","title":"Timezone"},"peak_dam_lmp":{"anyOf":[{"items":{"$ref":"#/components/schemas/PeakDamLmpResponse"},"type":"array"},{"type":"null"}],"title":"Peak Dam Lmp"},"peak_load":{"anyOf":[{"$ref":"#/components/schemas/PeakIntervalResponse"},{"type":"null"}]},"peak_net_load":{"anyOf":[{"$ref":"#/components/schemas/PeakIntervalResponse"},{"type":"null"}]}},"type":"object","required":["ISO","market_date","timezone"],"title":"PeakLoadReportResponse"},"PresignedUrlResponse":{"properties":{"presigned_url":{"type":"string","title":"Presigned Url","description":"Time-limited HTTPS URL to download the requested file."},"expires_in_seconds":{"type":"integer","title":"Expires In Seconds","description":"Number of seconds the presigned URL is valid for."},"bucket":{"type":"string","title":"Bucket","description":"S3 bucket the object lives in."},"object_key":{"type":"string","title":"Object Key","description":"S3 object key the URL points to."}},"type":"object","required":["presigned_url","expires_in_seconds","bucket","object_key"],"title":"PresignedUrlResponse"},"PricingLocationResponse":{"properties":{"gs_entity_id":{"type":"string","title":"Gs Entity Id"},"location":{"type":"string","title":"Location"},"location_type":{"type":"string","title":"Location Type"},"market_id":{"type":"string","title":"Market Id"},"baa":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Baa"},"zone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Zone"},"zone_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Zone Type"},"latitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Latitude"},"longitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Longitude"},"pricing_datasets":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Pricing Datasets"},"earliest_seen_utc":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Earliest Seen Utc"},"latest_seen_utc":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Latest Seen Utc"},"status_threshold_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Status Threshold Days"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},"type":"object","required":["gs_entity_id","location","location_type","market_id","baa","zone","zone_type","latitude","longitude","earliest_seen_utc","latest_seen_utc","status_threshold_days","status"],"title":"PricingLocationResponse"},"QueryDatasetResponse":{"properties":{"status_code":{"type":"integer","title":"Status Code"},"data":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Data"},"meta":{"$ref":"#/components/schemas/MetadataResponse"},"dataset_metadata":{"$ref":"#/components/schemas/DatasetResponse"}},"type":"object","required":["status_code","data","meta","dataset_metadata"],"title":"QueryDatasetResponse"},"ResampleFunction":{"type":"string","enum":["mean","sum","min","max","count","stddev","variance"],"title":"ResampleFunction"},"ReturnFormat":{"type":"string","enum":["json","csv"],"title":"ReturnFormat"},"ShiftFactorConstraintResponse":{"properties":{"constraint_gs_entity_id":{"type":"string","title":"Constraint Gs Entity Id"},"estimated_shift_factor":{"type":"number","title":"Estimated Shift Factor"},"constraint":{"type":"string","title":"Constraint"}},"type":"object","required":["constraint_gs_entity_id","estimated_shift_factor","constraint"],"title":"ShiftFactorConstraintResponse","description":"Linear estimated shift factor aggregated per constraint for a location."},"ShiftFactorLocationResponse":{"properties":{"location_gs_entity_id":{"type":"string","title":"Location Gs Entity Id"},"estimated_shift_factor":{"type":"number","title":"Estimated Shift Factor"},"location":{"type":"string","title":"Location"}},"type":"object","required":["location_gs_entity_id","estimated_shift_factor","location"],"title":"ShiftFactorLocationResponse","description":"Linear estimated shift factor aggregated per location for a constraint."},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}},"x-tagGroups":[{"name":"API Endpoints","tags":["API Info","Block Pricing Data","Dataset Metadata","Query Data","Dataset Updates","Reports"]}],"externalDocs":{"description":"GridStatus documentation. Human docs: https://docs.gridstatus.io/developers. Ask a natural-language question (RAG search): append a URL-encoded question to https://docs.gridstatus.io/?ask=","url":"https://docs.gridstatus.io/llms.txt"},"x-rag-search":{"description":"Natural-language question answering over the GridStatus documentation. Substitute a URL-encoded question for {question}.","url_template":"https://docs.gridstatus.io/?ask={question}","llms_txt":"https://docs.gridstatus.io/llms.txt"}}