{
  "version":"2.0",
  "metadata":{
    "apiVersion":"2018-05-10",
    "auth":[
      "aws.auth#sigv4a",
      "aws.auth#sigv4"
    ],
    "endpointPrefix":"sustainability",
    "protocol":"rest-json",
    "protocols":["rest-json"],
    "serviceFullName":"AWS Sustainability",
    "serviceId":"Sustainability",
    "signatureVersion":"v4",
    "signingName":"sustainability",
    "uid":"sustainability-2018-05-10"
  },
  "operations":{
    "GetEstimatedCarbonEmissions":{
      "name":"GetEstimatedCarbonEmissions",
      "http":{
        "method":"POST",
        "requestUri":"/v1/estimated-carbon-emissions",
        "responseCode":200
      },
      "input":{"shape":"GetEstimatedCarbonEmissionsRequest"},
      "output":{"shape":"GetEstimatedCarbonEmissionsResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"InternalServerException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Returns estimated carbon emission values based on customer grouping and filtering parameters. We recommend using pagination to ensure that the operation returns quickly and successfully. </p>",
      "readonly":true
    },
    "GetEstimatedCarbonEmissionsDimensionValues":{
      "name":"GetEstimatedCarbonEmissionsDimensionValues",
      "http":{
        "method":"POST",
        "requestUri":"/v1/estimated-carbon-emissions-dimension-values",
        "responseCode":200
      },
      "input":{"shape":"GetEstimatedCarbonEmissionsDimensionValuesRequest"},
      "output":{"shape":"GetEstimatedCarbonEmissionsDimensionValuesResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"InternalServerException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Returns the possible dimension values available for a customer's account. We recommend using pagination to ensure that the operation returns quickly and successfully. </p>",
      "readonly":true
    },
    "GetEstimatedWaterAllocation":{
      "name":"GetEstimatedWaterAllocation",
      "http":{
        "method":"POST",
        "requestUri":"/v1/estimated-water-allocation",
        "responseCode":200
      },
      "input":{"shape":"GetEstimatedWaterAllocationRequest"},
      "output":{"shape":"GetEstimatedWaterAllocationResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"InternalServerException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Returns estimated water allocation values based on customer grouping and filtering parameters. We recommend using pagination to ensure that the operation returns quickly and successfully. </p>",
      "readonly":true
    },
    "GetEstimatedWaterAllocationDimensionValues":{
      "name":"GetEstimatedWaterAllocationDimensionValues",
      "http":{
        "method":"POST",
        "requestUri":"/v1/estimated-water-allocation-dimension-values",
        "responseCode":200
      },
      "input":{"shape":"GetEstimatedWaterAllocationDimensionValuesRequest"},
      "output":{"shape":"GetEstimatedWaterAllocationDimensionValuesResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"InternalServerException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Returns the possible dimension values available for a customer's account. We recommend using pagination to ensure that the operation returns quickly and successfully. </p>",
      "readonly":true
    }
  },
  "shapes":{
    "AccessDeniedException":{
      "type":"structure",
      "required":["Message"],
      "members":{
        "Message":{
          "shape":"String",
          "locationName":"message"
        }
      },
      "documentation":"<p>You do not have sufficient access to perform this action.</p>",
      "error":{
        "httpStatusCode":403,
        "senderFault":true
      },
      "exception":true
    },
    "Dimension":{
      "type":"string",
      "documentation":"<p>Specifies the dimensions available for grouping and filtering environmental impact data.</p>",
      "enum":[
        "USAGE_ACCOUNT_ID",
        "REGION",
        "SERVICE"
      ]
    },
    "DimensionEntry":{
      "type":"structure",
      "required":[
        "Dimension",
        "Value"
      ],
      "members":{
        "Dimension":{
          "shape":"Dimension",
          "documentation":"<p>The dimension type that categorizes this entry.</p>"
        },
        "Value":{
          "shape":"DimensionValue",
          "documentation":"<p> The value for the specified dimension. Valid values vary based on the dimension type (e.g., <code>us-east-1</code> for the <code>REGION</code> dimension, <code>AmazonEC2</code> for the <code>SERVICE</code> dimension). </p>"
        }
      },
      "documentation":"<p>Represents a dimension and its corresponding value.</p>"
    },
    "DimensionEntryList":{
      "type":"list",
      "member":{"shape":"DimensionEntry"}
    },
    "DimensionList":{
      "type":"list",
      "member":{"shape":"Dimension"}
    },
    "DimensionListMap":{
      "type":"map",
      "key":{"shape":"Dimension"},
      "value":{"shape":"DimensionValueList"}
    },
    "DimensionValue":{
      "type":"string",
      "max":256,
      "min":0
    },
    "DimensionValueList":{
      "type":"list",
      "member":{"shape":"DimensionValue"}
    },
    "DimensionsMap":{
      "type":"map",
      "key":{"shape":"Dimension"},
      "value":{"shape":"DimensionValue"}
    },
    "Double":{
      "type":"double",
      "box":true
    },
    "Emissions":{
      "type":"structure",
      "required":[
        "Value",
        "Unit"
      ],
      "members":{
        "Value":{
          "shape":"Double",
          "documentation":"<p>The numeric value of the emissions quantity.</p>"
        },
        "Unit":{
          "shape":"EmissionsUnit",
          "documentation":"<p>The unit of measurement for the emissions value.</p>"
        }
      },
      "documentation":"<p>Represents a carbon emissions quantity with its value and unit of measurement.</p>"
    },
    "EmissionsMap":{
      "type":"map",
      "key":{"shape":"EmissionsType"},
      "value":{"shape":"Emissions"}
    },
    "EmissionsType":{
      "type":"string",
      "documentation":"<p>Specifies the types of carbon emissions calculations available.</p>",
      "enum":[
        "TOTAL_LBM_CARBON_EMISSIONS",
        "TOTAL_MBM_CARBON_EMISSIONS",
        "TOTAL_SCOPE_1_CARBON_EMISSIONS",
        "TOTAL_SCOPE_2_LBM_CARBON_EMISSIONS",
        "TOTAL_SCOPE_2_MBM_CARBON_EMISSIONS",
        "TOTAL_SCOPE_3_LBM_CARBON_EMISSIONS",
        "TOTAL_SCOPE_3_MBM_CARBON_EMISSIONS"
      ]
    },
    "EmissionsTypeList":{
      "type":"list",
      "member":{"shape":"EmissionsType"}
    },
    "EmissionsUnit":{
      "type":"string",
      "documentation":"<p>Specifies the unit of measurement for emissions.</p>",
      "enum":["MTCO2e"]
    },
    "EstimatedCarbonEmissions":{
      "type":"structure",
      "required":[
        "TimePeriod",
        "DimensionsValues",
        "ModelVersion",
        "EmissionsValues"
      ],
      "members":{
        "TimePeriod":{
          "shape":"TimePeriod",
          "documentation":"<p>The reporting period for emission values.</p>"
        },
        "DimensionsValues":{
          "shape":"DimensionsMap",
          "documentation":"<p>The dimensions used to group emissions values.</p>"
        },
        "ModelVersion":{
          "shape":"ModelVersion",
          "documentation":"<p>The semantic version-formatted string that indicates the methodology version used to calculate the emission values. </p> <note> <p> The AWS Sustainability service reflects the most recent model version for every month. You will not see two entries for the same month with different <code>ModelVersion</code> values. To track the evolution of the methodology and compare emission values from previous versions, we recommend creating a <a href=\"https://docs.aws.amazon.com/cur/latest/userguide/what-is-data-exports.html\">Data Export</a>. </p> </note>"
        },
        "EmissionsValues":{
          "shape":"EmissionsMap",
          "documentation":"<p>The emissions values for the requested emissions types.</p>"
        }
      },
      "documentation":"<p>Contains estimated carbon emissions data for a specific time period and dimension grouping.</p>"
    },
    "EstimatedCarbonEmissionsList":{
      "type":"list",
      "member":{"shape":"EstimatedCarbonEmissions"}
    },
    "EstimatedWaterAllocation":{
      "type":"structure",
      "required":[
        "TimePeriod",
        "DimensionsValues",
        "ModelVersion",
        "AllocationValues"
      ],
      "members":{
        "TimePeriod":{
          "shape":"TimePeriod",
          "documentation":"<p>The reporting period for water allocation values.</p>"
        },
        "DimensionsValues":{
          "shape":"DimensionsMap",
          "documentation":"<p>The dimensions used to group water allocation values.</p>"
        },
        "ModelVersion":{
          "shape":"ModelVersion",
          "documentation":"<p>The semantic version-formatted string that indicates the methodology version used to calculate the water allocation values. </p> <note> <p> The AWS Sustainability service reflects the most recent model version for every month. You will not see two entries for the same month with different <code>ModelVersion</code> values. </p> </note>"
        },
        "AllocationValues":{
          "shape":"WaterAllocationMap",
          "documentation":"<p>The allocation values for the requested water allocation types.</p>"
        }
      },
      "documentation":"<p>Contains estimated water allocation data for a specific time period and dimension grouping.</p>"
    },
    "EstimatedWaterAllocationList":{
      "type":"list",
      "member":{"shape":"EstimatedWaterAllocation"}
    },
    "FilterExpression":{
      "type":"structure",
      "members":{
        "Dimensions":{
          "shape":"DimensionListMap",
          "documentation":"<p>Filters environmental impact values by specific dimension values.</p>"
        }
      },
      "documentation":"<p>Filters environmental impact values by specific dimension values.</p>"
    },
    "GetEstimatedCarbonEmissionsDimensionValuesRequest":{
      "type":"structure",
      "required":[
        "TimePeriod",
        "Dimensions"
      ],
      "members":{
        "TimePeriod":{
          "shape":"TimePeriod",
          "documentation":"<p> The date range for fetching the dimension values. The range must include the start date of a month for that month's dimensions to be included in the response. </p>"
        },
        "Dimensions":{
          "shape":"DimensionList",
          "documentation":"<p>The dimensions available for grouping estimated carbon emissions.</p>"
        },
        "MaxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The maximum number of results to return in a single call. Default is 1000.</p>"
        },
        "NextToken":{
          "shape":"NextToken",
          "documentation":"<p>The pagination token specifying which page of results to return in the response. If no token is provided, the default page is the first page. </p>"
        }
      }
    },
    "GetEstimatedCarbonEmissionsDimensionValuesResponse":{
      "type":"structure",
      "members":{
        "Results":{
          "shape":"DimensionEntryList",
          "documentation":"<p>The list of possible dimensions over which the emissions data is aggregated.</p>"
        },
        "NextToken":{
          "shape":"NextToken",
          "documentation":"<p>The pagination token indicating there are additional pages available. You can use the token in a following request to fetch the next set of results. </p>"
        }
      }
    },
    "GetEstimatedCarbonEmissionsRequest":{
      "type":"structure",
      "required":["TimePeriod"],
      "members":{
        "TimePeriod":{
          "shape":"TimePeriod",
          "documentation":"<p> The date range for fetching estimated carbon emissions. The range must include the start date of a month for that month's data to be included in the response. </p>"
        },
        "GroupBy":{
          "shape":"DimensionList",
          "documentation":"<p>The dimensions available for grouping estimated carbon emissions.</p>"
        },
        "FilterBy":{
          "shape":"FilterExpression",
          "documentation":"<p> The criteria for filtering estimated carbon emissions. To determine which dimensions are available to be filtered by, you can first call <a>GetEstimatedCarbonEmissionsDimensionValues</a> </p>"
        },
        "EmissionsTypes":{
          "shape":"EmissionsTypeList",
          "documentation":"<p>The emission types to include in the results. If absent, returns <code>TOTAL_LBM_CARBON_EMISSIONS</code> and <code>TOTAL_MBM_CARBON_EMISSIONS</code> emissions types. </p>"
        },
        "Granularity":{
          "shape":"TimeGranularity",
          "documentation":"<p> The time granularity for the results. If absent, uses <code>MONTHLY</code> time granularity. The smallest supported granularity for carbon emissions is <code>MONTHLY</code>. </p> <p> If requesting partial time periods, data will be returned based on the smallest supported granularity. For example, requesting <code>2025-04-01T00:00:00Z</code> to <code>2026-04-01T00:00:00Z</code> with <code>YEARLY_CALENDAR</code> granularity will return the last 9 months for 2025 and the first 3 months of 2026. </p>"
        },
        "GranularityConfiguration":{
          "shape":"GranularityConfiguration",
          "documentation":"<p>Configuration for fiscal year calculations when using <code>YEARLY_FISCAL</code> or <code>QUARTERLY_FISCAL</code> granularity. </p>"
        },
        "MaxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The maximum number of results to return in a single call. Default is 1000.</p>"
        },
        "NextToken":{
          "shape":"NextToken",
          "documentation":"<p>The pagination token specifying which page of results to return in the response. If no token is provided, the default page is the first page. </p>"
        }
      }
    },
    "GetEstimatedCarbonEmissionsResponse":{
      "type":"structure",
      "required":["Results"],
      "members":{
        "Results":{
          "shape":"EstimatedCarbonEmissionsList",
          "documentation":"<p>The result of the requested inputs.</p>"
        },
        "NextToken":{
          "shape":"NextToken",
          "documentation":"<p>The pagination token indicating there are additional pages available. You can use the token in a following request to fetch the next set of results. </p>"
        }
      }
    },
    "GetEstimatedWaterAllocationDimensionValuesRequest":{
      "type":"structure",
      "required":[
        "TimePeriod",
        "Dimensions"
      ],
      "members":{
        "TimePeriod":{
          "shape":"TimePeriod",
          "documentation":"<p> The date range for fetching the dimension values. The range must include the start date of a year for that year's data to be included in the response. </p>"
        },
        "Dimensions":{
          "shape":"DimensionList",
          "documentation":"<p>The dimensions available for grouping estimated water allocation.</p>"
        },
        "MaxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The maximum number of results to return in a single call. Default is 1000.</p>"
        },
        "NextToken":{
          "shape":"NextToken",
          "documentation":"<p>The pagination token specifying which page of results to return in the response. If no token is provided, the default page is the first page. </p>"
        }
      }
    },
    "GetEstimatedWaterAllocationDimensionValuesResponse":{
      "type":"structure",
      "required":["Results"],
      "members":{
        "Results":{
          "shape":"DimensionEntryList",
          "documentation":"<p>The list of possible dimensions over which the allocation data is aggregated.</p>"
        },
        "NextToken":{
          "shape":"NextToken",
          "documentation":"<p>The pagination token indicating there are additional pages available. You can use the token in a following request to fetch the next set of results. </p>"
        }
      }
    },
    "GetEstimatedWaterAllocationRequest":{
      "type":"structure",
      "required":["TimePeriod"],
      "members":{
        "TimePeriod":{
          "shape":"TimePeriod",
          "documentation":"<p> The date range for fetching estimated water allocation. The range must include the start date of a year for that year's data to be included in the response. </p>"
        },
        "GroupBy":{
          "shape":"DimensionList",
          "documentation":"<p>The dimensions available for grouping estimated water allocation.</p>"
        },
        "FilterBy":{
          "shape":"FilterExpression",
          "documentation":"<p> The criteria for filtering estimated water allocation. To determine which dimensions are available to be filtered by, you can first call <a>GetEstimatedWaterAllocationDimensionValues</a> </p>"
        },
        "AllocationTypes":{
          "shape":"WaterAllocationTypeList",
          "documentation":"<p>The allocation types to include in the results. If absent, returns <code>TOTAL_WATER_WITHDRAWALS</code> allocation types. </p>"
        },
        "Granularity":{
          "shape":"TimeGranularity",
          "documentation":"<p>The time granularity for the results. Only <code>YEARLY_CALENDAR</code> time granularity is currently supported for water allocation. Defaults to <code>YEARLY_CALENDAR</code> if absent.</p> <p> If requesting partial time periods, data will be returned based on the smallest supported granularity. For example, requesting <code>2025-04-01T00:00:00Z</code> to <code>2026-04-01T00:00:00Z</code> with <code>YEARLY_CALENDAR</code> will return all the data for 2026 only. </p>"
        },
        "MaxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The maximum number of results to return in a single call. Default is 1000.</p>"
        },
        "NextToken":{
          "shape":"NextToken",
          "documentation":"<p>The pagination token specifying which page of results to return in the response. If no token is provided, the default page is the first page. </p>"
        }
      }
    },
    "GetEstimatedWaterAllocationResponse":{
      "type":"structure",
      "required":["Results"],
      "members":{
        "Results":{
          "shape":"EstimatedWaterAllocationList",
          "documentation":"<p>The result of the requested inputs.</p>"
        },
        "NextToken":{
          "shape":"NextToken",
          "documentation":"<p>The pagination token indicating there are additional pages available. You can use the token in a following request to fetch the next set of results. </p>"
        }
      }
    },
    "GranularityConfiguration":{
      "type":"structure",
      "members":{
        "FiscalYearStartMonth":{
          "shape":"Month",
          "documentation":"<p> The month (1-12) when the fiscal year begins. Used for <code>YEARLY_FISCAL</code> and <code>QUARTERLY_FISCAL</code> granularity. Defaults to 1 (January). </p>"
        }
      },
      "documentation":"<p> Contains configuration for the fiscal year granularities (e.g., <code>YEARLY_FISCAL</code>, <code>QUARTERLY_FISCAL</code>. </p>"
    },
    "InternalServerException":{
      "type":"structure",
      "required":["Message"],
      "members":{
        "Message":{
          "shape":"String",
          "locationName":"message"
        }
      },
      "documentation":"<p>The request processing has failed because of an unknown error, exception, or failure.</p>",
      "error":{"httpStatusCode":500},
      "exception":true,
      "fault":true,
      "retryable":{"throttling":false}
    },
    "MaxResults":{
      "type":"integer",
      "box":true,
      "max":5000,
      "min":1
    },
    "ModelVersion":{
      "type":"string",
      "pattern":"v(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?"
    },
    "Month":{
      "type":"integer",
      "box":true,
      "max":12,
      "min":1
    },
    "NextToken":{
      "type":"string",
      "max":2000,
      "min":1
    },
    "String":{"type":"string"},
    "ThrottlingException":{
      "type":"structure",
      "required":["Message"],
      "members":{
        "Message":{
          "shape":"String",
          "locationName":"message"
        }
      },
      "documentation":"<p>The request was denied due to request throttling.</p>",
      "error":{
        "httpStatusCode":429,
        "senderFault":true
      },
      "exception":true,
      "retryable":{"throttling":false}
    },
    "TimeGranularity":{
      "type":"string",
      "documentation":"<p>Specifies the time period over which environmental impact data is aggregated.</p>",
      "enum":[
        "YEARLY_CALENDAR",
        "YEARLY_FISCAL",
        "QUARTERLY_CALENDAR",
        "QUARTERLY_FISCAL",
        "MONTHLY"
      ]
    },
    "TimePeriod":{
      "type":"structure",
      "required":[
        "Start",
        "End"
      ],
      "members":{
        "Start":{
          "shape":"Timestamp",
          "documentation":"<p>The start (inclusive) of the time period. ISO-8601 formatted timestamp, for example: <code>YYYY-MM-DDThh:mm:ss.sssZ</code> </p>"
        },
        "End":{
          "shape":"Timestamp",
          "documentation":"<p>The end (exclusive) of the time period. ISO-8601 formatted timestamp, for example: <code>YYYY-MM-DDThh:mm:ss.sssZ</code> </p>"
        }
      },
      "documentation":"<p>Represents a duration of time defined by start and end timestamps.</p>"
    },
    "Timestamp":{
      "type":"timestamp",
      "timestampFormat":"iso8601"
    },
    "ValidationException":{
      "type":"structure",
      "required":["Message"],
      "members":{
        "Message":{
          "shape":"String",
          "locationName":"message"
        }
      },
      "documentation":"<p>The input fails to satisfy the constraints specified by an Amazon Web Services service.</p>",
      "error":{
        "httpStatusCode":400,
        "senderFault":true
      },
      "exception":true
    },
    "WaterAllocation":{
      "type":"structure",
      "required":[
        "Value",
        "Unit"
      ],
      "members":{
        "Value":{
          "shape":"Double",
          "documentation":"<p>The numeric value of the allocation quantity.</p>"
        },
        "Unit":{
          "shape":"WaterAllocationUnit",
          "documentation":"<p>The unit of measurement for the allocation value.</p>"
        }
      },
      "documentation":"<p>Represents a water allocation quantity with its value and unit of measurement.</p>"
    },
    "WaterAllocationMap":{
      "type":"map",
      "key":{"shape":"WaterAllocationType"},
      "value":{"shape":"WaterAllocation"}
    },
    "WaterAllocationType":{
      "type":"string",
      "documentation":"<p>Specifies the types of water allocation calculations available.</p>",
      "enum":["TOTAL_WATER_WITHDRAWALS"]
    },
    "WaterAllocationTypeList":{
      "type":"list",
      "member":{"shape":"WaterAllocationType"}
    },
    "WaterAllocationUnit":{
      "type":"string",
      "documentation":"<p>Specifies the unit of measurement for allocation.</p>",
      "enum":["m3"]
    }
  },
  "documentation":"<p>The AWS Sustainability service provides programmatic access to estimated environmental impact data for your Amazon Web Services usage. Use the AWS Sustainability service to retrieve, analyze, and track the environmental impact of your cloud infrastructure over time. </p> <p>With the AWS Sustainability service, you can:</p> <ul> <li> <p>Retrieve estimated carbon emissions and water allocation for your Amazon Web Services usage across different time periods </p> </li> <li> <p>Group environmental impact data by dimensions such as account, region, and service</p> </li> <li> <p>Filter environmental impact data to focus on specific accounts, regions, or services</p> </li> <li> <p>Access multiple carbon emissions calculation methodologies including Location-based Method (LBM) and Market-based Method (MBM) </p> </li> <li> <p>Aggregate environmental impact data at various time granularities including monthly, quarterly, and yearly periods </p> </li> </ul> <p> The API supports pagination for efficient data retrieval and provides dimension values to help you understand the available grouping and filtering options for your account. </p>"
}
