aws-sdk-sustainability 1.4.0 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e21adc3c47bf3ebee5daf52bdc58ba115689a6511882ccdbfec1a2c5158b7354
4
- data.tar.gz: 1402f3d7ba0687e75e4a7edd84c63e46dbda666536a90f98cd968aba9557bd48
3
+ metadata.gz: 62a23a263dc75248e6348c4d8e8aba5947b504f124e2295f5d7c8a51ec4ec085
4
+ data.tar.gz: 3d7a5daeab43c1b3e0a5118c15c0c80ffe641920d18cf53f56ebdb45532d916e
5
5
  SHA512:
6
- metadata.gz: ee59e8dbd8d0bb8209a33f41c5253e6e0dcc85ce9d463bdc156b05d1241465b827c9f4c205d7ad51e74767a75171531b1a7ac525b2f6b1de8b716babbed526d0
7
- data.tar.gz: 6822ef3f84c8a23e45f711d95233b6730b919e680907c13d42e6bc7088f815d66cba7fbfed898e6efb8c8ffad27e260f895308670aef4e5bb012ff696017584e
6
+ metadata.gz: bef2154223da72015ad3f7f15535b3e1b02135139c655a16ec499fd1f23de9e2ee10b82e32ee014f0c098decf63a5eda18ef9ac7b53254bcc97a0a58f23b983c
7
+ data.tar.gz: 3dda60f099de460f6442095aaa6e8db5cb16b88e8faf2cf122074c4ed940d209f76861ed509ed06bf32905bfebb549bd75df0d68222c4a61018f8571ef25c9b2
data/CHANGELOG.md CHANGED
@@ -1,6 +1,11 @@
1
1
  Unreleased Changes
2
2
  ------------------
3
3
 
4
+ 1.5.0 (2026-07-16)
5
+ ------------------
6
+
7
+ * Feature - Adds support for retrieving estimated water allocation data.
8
+
4
9
  1.4.0 (2026-07-09)
5
10
  ------------------
6
11
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.4.0
1
+ 1.5.0
@@ -479,13 +479,17 @@ module Aws::Sustainability
479
479
  # the operation returns quickly and successfully.
480
480
  #
481
481
  # @option params [required, Types::TimePeriod] :time_period
482
- # The date range for fetching estimated carbon emissions.
482
+ # The date range for fetching estimated carbon emissions. The range must
483
+ # include the start date of a month for that month's data to be
484
+ # included in the response.
483
485
  #
484
486
  # @option params [Array<String>] :group_by
485
487
  # The dimensions available for grouping estimated carbon emissions.
486
488
  #
487
489
  # @option params [Types::FilterExpression] :filter_by
488
- # The criteria for filtering estimated carbon emissions.
490
+ # The criteria for filtering estimated carbon emissions. To determine
491
+ # which dimensions are available to be filtered by, you can first call
492
+ # GetEstimatedCarbonEmissionsDimensionValues
489
493
  #
490
494
  # @option params [Array<String>] :emissions_types
491
495
  # The emission types to include in the results. If absent, returns
@@ -494,7 +498,14 @@ module Aws::Sustainability
494
498
  #
495
499
  # @option params [String] :granularity
496
500
  # The time granularity for the results. If absent, uses `MONTHLY` time
497
- # granularity.
501
+ # granularity. The smallest supported granularity for carbon emissions
502
+ # is `MONTHLY`.
503
+ #
504
+ # If requesting partial time periods, data will be returned based on the
505
+ # smallest supported granularity. For example, requesting
506
+ # `2025-04-01T00:00:00Z` to `2026-04-01T00:00:00Z` with
507
+ # `YEARLY_CALENDAR` granularity will return the last 9 months for 2025
508
+ # and the first 3 months of 2026.
498
509
  #
499
510
  # @option params [Types::GranularityConfiguration] :granularity_configuration
500
511
  # Configuration for fiscal year calculations when using `YEARLY_FISCAL`
@@ -502,7 +513,7 @@ module Aws::Sustainability
502
513
  #
503
514
  # @option params [Integer] :max_results
504
515
  # The maximum number of results to return in a single call. Default is
505
- # 40.
516
+ # 1000.
506
517
  #
507
518
  # @option params [String] :next_token
508
519
  # The pagination token specifying which page of results to return in the
@@ -594,7 +605,7 @@ module Aws::Sustainability
594
605
  # group_by: ["USAGE_ACCOUNT_ID"], # accepts USAGE_ACCOUNT_ID, REGION, SERVICE
595
606
  # filter_by: {
596
607
  # dimensions: {
597
- # "USAGE_ACCOUNT_ID" => ["String"],
608
+ # "USAGE_ACCOUNT_ID" => ["DimensionValue"],
598
609
  # },
599
610
  # },
600
611
  # emissions_types: ["TOTAL_LBM_CARBON_EMISSIONS"], # accepts 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
@@ -633,14 +644,16 @@ module Aws::Sustainability
633
644
  # returns quickly and successfully.
634
645
  #
635
646
  # @option params [required, Types::TimePeriod] :time_period
636
- # The date range for fetching the dimension values.
647
+ # The date range for fetching the dimension values. The range must
648
+ # include the start date of a month for that month's dimensions to be
649
+ # included in the response.
637
650
  #
638
651
  # @option params [required, Array<String>] :dimensions
639
652
  # The dimensions available for grouping estimated carbon emissions.
640
653
  #
641
654
  # @option params [Integer] :max_results
642
655
  # The maximum number of results to return in a single call. Default is
643
- # 40.
656
+ # 1000.
644
657
  #
645
658
  # @option params [String] :next_token
646
659
  # The pagination token specifying which page of results to return in the
@@ -730,6 +743,236 @@ module Aws::Sustainability
730
743
  req.send_request(options)
731
744
  end
732
745
 
746
+ # Returns estimated water allocation values based on customer grouping
747
+ # and filtering parameters. We recommend using pagination to ensure that
748
+ # the operation returns quickly and successfully.
749
+ #
750
+ # @option params [required, Types::TimePeriod] :time_period
751
+ # The date range for fetching estimated water allocation. The range must
752
+ # include the start date of a year for that year's data to be included
753
+ # in the response.
754
+ #
755
+ # @option params [Array<String>] :group_by
756
+ # The dimensions available for grouping estimated water allocation.
757
+ #
758
+ # @option params [Types::FilterExpression] :filter_by
759
+ # The criteria for filtering estimated water allocation. To determine
760
+ # which dimensions are available to be filtered by, you can first call
761
+ # GetEstimatedWaterAllocationDimensionValues
762
+ #
763
+ # @option params [Array<String>] :allocation_types
764
+ # The allocation types to include in the results. If absent, returns
765
+ # `TOTAL_WATER_WITHDRAWALS` allocation types.
766
+ #
767
+ # @option params [String] :granularity
768
+ # The time granularity for the results. Only `YEARLY_CALENDAR` time
769
+ # granularity is currently supported for water allocation. Defaults to
770
+ # `YEARLY_CALENDAR` if absent.
771
+ #
772
+ # If requesting partial time periods, data will be returned based on the
773
+ # smallest supported granularity. For example, requesting
774
+ # `2025-04-01T00:00:00Z` to `2026-04-01T00:00:00Z` with
775
+ # `YEARLY_CALENDAR` will return all the data for 2026 only.
776
+ #
777
+ # @option params [Integer] :max_results
778
+ # The maximum number of results to return in a single call. Default is
779
+ # 1000.
780
+ #
781
+ # @option params [String] :next_token
782
+ # The pagination token specifying which page of results to return in the
783
+ # response. If no token is provided, the default page is the first page.
784
+ #
785
+ # @return [Types::GetEstimatedWaterAllocationResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
786
+ #
787
+ # * {Types::GetEstimatedWaterAllocationResponse#results #results} => Array&lt;Types::EstimatedWaterAllocation&gt;
788
+ # * {Types::GetEstimatedWaterAllocationResponse#next_token #next_token} => String
789
+ #
790
+ # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}.
791
+ #
792
+ #
793
+ # @example Example: GetEstimatedWaterAllocationSuccess
794
+ #
795
+ # resp = client.get_estimated_water_allocation({
796
+ # allocation_types: [
797
+ # "TOTAL_WATER_WITHDRAWALS",
798
+ # ],
799
+ # granularity: "YEARLY_CALENDAR",
800
+ # group_by: [
801
+ # "SERVICE",
802
+ # ],
803
+ # time_period: {
804
+ # end: Time.parse("2026-01-01T00:00:00.00Z"),
805
+ # start: Time.parse("2025-01-01T00:00:00.00Z"),
806
+ # },
807
+ # })
808
+ #
809
+ # resp.to_h outputs the following:
810
+ # {
811
+ # results: [
812
+ # {
813
+ # allocation_values: {
814
+ # "TOTAL_WATER_WITHDRAWALS" => {
815
+ # unit: "m3",
816
+ # value: 1,
817
+ # },
818
+ # },
819
+ # dimensions_values: {
820
+ # "SERVICE" => "AmazonEC2",
821
+ # },
822
+ # model_version: "v1.0.0",
823
+ # time_period: {
824
+ # end: Time.parse("2026-01-01T00:00:00Z"),
825
+ # start: Time.parse("2025-01-01T00:00:00Z"),
826
+ # },
827
+ # },
828
+ # ],
829
+ # }
830
+ #
831
+ # @example Request syntax with placeholder values
832
+ #
833
+ # resp = client.get_estimated_water_allocation({
834
+ # time_period: { # required
835
+ # start: Time.now, # required
836
+ # end: Time.now, # required
837
+ # },
838
+ # group_by: ["USAGE_ACCOUNT_ID"], # accepts USAGE_ACCOUNT_ID, REGION, SERVICE
839
+ # filter_by: {
840
+ # dimensions: {
841
+ # "USAGE_ACCOUNT_ID" => ["DimensionValue"],
842
+ # },
843
+ # },
844
+ # allocation_types: ["TOTAL_WATER_WITHDRAWALS"], # accepts TOTAL_WATER_WITHDRAWALS
845
+ # granularity: "YEARLY_CALENDAR", # accepts YEARLY_CALENDAR, YEARLY_FISCAL, QUARTERLY_CALENDAR, QUARTERLY_FISCAL, MONTHLY
846
+ # max_results: 1,
847
+ # next_token: "NextToken",
848
+ # })
849
+ #
850
+ # @example Response structure
851
+ #
852
+ # resp.results #=> Array
853
+ # resp.results[0].time_period.start #=> Time
854
+ # resp.results[0].time_period.end #=> Time
855
+ # resp.results[0].dimensions_values #=> Hash
856
+ # resp.results[0].dimensions_values["Dimension"] #=> String
857
+ # resp.results[0].model_version #=> String
858
+ # resp.results[0].allocation_values #=> Hash
859
+ # resp.results[0].allocation_values["WaterAllocationType"].value #=> Float
860
+ # resp.results[0].allocation_values["WaterAllocationType"].unit #=> String, one of "m3"
861
+ # resp.next_token #=> String
862
+ #
863
+ # @see http://docs.aws.amazon.com/goto/WebAPI/sustainability-2018-05-10/GetEstimatedWaterAllocation AWS API Documentation
864
+ #
865
+ # @overload get_estimated_water_allocation(params = {})
866
+ # @param [Hash] params ({})
867
+ def get_estimated_water_allocation(params = {}, options = {})
868
+ req = build_request(:get_estimated_water_allocation, params)
869
+ req.send_request(options)
870
+ end
871
+
872
+ # Returns the possible dimension values available for a customer's
873
+ # account. We recommend using pagination to ensure that the operation
874
+ # returns quickly and successfully.
875
+ #
876
+ # @option params [required, Types::TimePeriod] :time_period
877
+ # The date range for fetching the dimension values. The range must
878
+ # include the start date of a year for that year's data to be included
879
+ # in the response.
880
+ #
881
+ # @option params [required, Array<String>] :dimensions
882
+ # The dimensions available for grouping estimated water allocation.
883
+ #
884
+ # @option params [Integer] :max_results
885
+ # The maximum number of results to return in a single call. Default is
886
+ # 1000.
887
+ #
888
+ # @option params [String] :next_token
889
+ # The pagination token specifying which page of results to return in the
890
+ # response. If no token is provided, the default page is the first page.
891
+ #
892
+ # @return [Types::GetEstimatedWaterAllocationDimensionValuesResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
893
+ #
894
+ # * {Types::GetEstimatedWaterAllocationDimensionValuesResponse#results #results} => Array&lt;Types::DimensionEntry&gt;
895
+ # * {Types::GetEstimatedWaterAllocationDimensionValuesResponse#next_token #next_token} => String
896
+ #
897
+ # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}.
898
+ #
899
+ #
900
+ # @example Example: GetEstimatedWaterAllocationDimensionValuesSuccess
901
+ #
902
+ # resp = client.get_estimated_water_allocation_dimension_values({
903
+ # dimensions: [
904
+ # "REGION",
905
+ # "SERVICE",
906
+ # "USAGE_ACCOUNT_ID",
907
+ # ],
908
+ # time_period: {
909
+ # end: Time.parse("2026-01-01T00:00:00.00Z"),
910
+ # start: Time.parse("2025-01-01T00:00:00.00Z"),
911
+ # },
912
+ # })
913
+ #
914
+ # resp.to_h outputs the following:
915
+ # {
916
+ # results: [
917
+ # {
918
+ # dimension: "SERVICE",
919
+ # value: "AmazonEC2",
920
+ # },
921
+ # {
922
+ # dimension: "SERVICE",
923
+ # value: "AmazonS3",
924
+ # },
925
+ # {
926
+ # dimension: "SERVICE",
927
+ # value: "AmazonCloudFront",
928
+ # },
929
+ # {
930
+ # dimension: "REGION",
931
+ # value: "global",
932
+ # },
933
+ # {
934
+ # dimension: "REGION",
935
+ # value: "us-east-1",
936
+ # },
937
+ # {
938
+ # dimension: "REGION",
939
+ # value: "us-west-2",
940
+ # },
941
+ # {
942
+ # dimension: "USAGE_ACCOUNT_ID",
943
+ # value: "111222333444",
944
+ # },
945
+ # ],
946
+ # }
947
+ #
948
+ # @example Request syntax with placeholder values
949
+ #
950
+ # resp = client.get_estimated_water_allocation_dimension_values({
951
+ # time_period: { # required
952
+ # start: Time.now, # required
953
+ # end: Time.now, # required
954
+ # },
955
+ # dimensions: ["USAGE_ACCOUNT_ID"], # required, accepts USAGE_ACCOUNT_ID, REGION, SERVICE
956
+ # max_results: 1,
957
+ # next_token: "NextToken",
958
+ # })
959
+ #
960
+ # @example Response structure
961
+ #
962
+ # resp.results #=> Array
963
+ # resp.results[0].dimension #=> String, one of "USAGE_ACCOUNT_ID", "REGION", "SERVICE"
964
+ # resp.results[0].value #=> String
965
+ # resp.next_token #=> String
966
+ #
967
+ # @see http://docs.aws.amazon.com/goto/WebAPI/sustainability-2018-05-10/GetEstimatedWaterAllocationDimensionValues AWS API Documentation
968
+ #
969
+ # @overload get_estimated_water_allocation_dimension_values(params = {})
970
+ # @param [Hash] params ({})
971
+ def get_estimated_water_allocation_dimension_values(params = {}, options = {})
972
+ req = build_request(:get_estimated_water_allocation_dimension_values, params)
973
+ req.send_request(options)
974
+ end
975
+
733
976
  # @!endgroup
734
977
 
735
978
  # @param params ({})
@@ -748,7 +991,7 @@ module Aws::Sustainability
748
991
  tracer: tracer
749
992
  )
750
993
  context[:gem_name] = 'aws-sdk-sustainability'
751
- context[:gem_version] = '1.4.0'
994
+ context[:gem_version] = '1.5.0'
752
995
  Seahorse::Client::Request.new(handlers, context)
753
996
  end
754
997
 
@@ -20,6 +20,7 @@ module Aws::Sustainability
20
20
  DimensionEntryList = Shapes::ListShape.new(name: 'DimensionEntryList')
21
21
  DimensionList = Shapes::ListShape.new(name: 'DimensionList')
22
22
  DimensionListMap = Shapes::MapShape.new(name: 'DimensionListMap')
23
+ DimensionValue = Shapes::StringShape.new(name: 'DimensionValue')
23
24
  DimensionValueList = Shapes::ListShape.new(name: 'DimensionValueList')
24
25
  DimensionsMap = Shapes::MapShape.new(name: 'DimensionsMap')
25
26
  Double = Shapes::FloatShape.new(name: 'Double')
@@ -30,11 +31,17 @@ module Aws::Sustainability
30
31
  EmissionsUnit = Shapes::StringShape.new(name: 'EmissionsUnit')
31
32
  EstimatedCarbonEmissions = Shapes::StructureShape.new(name: 'EstimatedCarbonEmissions')
32
33
  EstimatedCarbonEmissionsList = Shapes::ListShape.new(name: 'EstimatedCarbonEmissionsList')
34
+ EstimatedWaterAllocation = Shapes::StructureShape.new(name: 'EstimatedWaterAllocation')
35
+ EstimatedWaterAllocationList = Shapes::ListShape.new(name: 'EstimatedWaterAllocationList')
33
36
  FilterExpression = Shapes::StructureShape.new(name: 'FilterExpression')
34
37
  GetEstimatedCarbonEmissionsDimensionValuesRequest = Shapes::StructureShape.new(name: 'GetEstimatedCarbonEmissionsDimensionValuesRequest')
35
38
  GetEstimatedCarbonEmissionsDimensionValuesResponse = Shapes::StructureShape.new(name: 'GetEstimatedCarbonEmissionsDimensionValuesResponse')
36
39
  GetEstimatedCarbonEmissionsRequest = Shapes::StructureShape.new(name: 'GetEstimatedCarbonEmissionsRequest')
37
40
  GetEstimatedCarbonEmissionsResponse = Shapes::StructureShape.new(name: 'GetEstimatedCarbonEmissionsResponse')
41
+ GetEstimatedWaterAllocationDimensionValuesRequest = Shapes::StructureShape.new(name: 'GetEstimatedWaterAllocationDimensionValuesRequest')
42
+ GetEstimatedWaterAllocationDimensionValuesResponse = Shapes::StructureShape.new(name: 'GetEstimatedWaterAllocationDimensionValuesResponse')
43
+ GetEstimatedWaterAllocationRequest = Shapes::StructureShape.new(name: 'GetEstimatedWaterAllocationRequest')
44
+ GetEstimatedWaterAllocationResponse = Shapes::StructureShape.new(name: 'GetEstimatedWaterAllocationResponse')
38
45
  GranularityConfiguration = Shapes::StructureShape.new(name: 'GranularityConfiguration')
39
46
  InternalServerException = Shapes::StructureShape.new(name: 'InternalServerException')
40
47
  MaxResults = Shapes::IntegerShape.new(name: 'MaxResults')
@@ -47,12 +54,17 @@ module Aws::Sustainability
47
54
  TimePeriod = Shapes::StructureShape.new(name: 'TimePeriod')
48
55
  Timestamp = Shapes::TimestampShape.new(name: 'Timestamp', timestampFormat: "iso8601")
49
56
  ValidationException = Shapes::StructureShape.new(name: 'ValidationException')
57
+ WaterAllocation = Shapes::StructureShape.new(name: 'WaterAllocation')
58
+ WaterAllocationMap = Shapes::MapShape.new(name: 'WaterAllocationMap')
59
+ WaterAllocationType = Shapes::StringShape.new(name: 'WaterAllocationType')
60
+ WaterAllocationTypeList = Shapes::ListShape.new(name: 'WaterAllocationTypeList')
61
+ WaterAllocationUnit = Shapes::StringShape.new(name: 'WaterAllocationUnit')
50
62
 
51
63
  AccessDeniedException.add_member(:message, Shapes::ShapeRef.new(shape: String, required: true, location_name: "message"))
52
64
  AccessDeniedException.struct_class = Types::AccessDeniedException
53
65
 
54
66
  DimensionEntry.add_member(:dimension, Shapes::ShapeRef.new(shape: Dimension, required: true, location_name: "Dimension"))
55
- DimensionEntry.add_member(:value, Shapes::ShapeRef.new(shape: String, required: true, location_name: "Value"))
67
+ DimensionEntry.add_member(:value, Shapes::ShapeRef.new(shape: DimensionValue, required: true, location_name: "Value"))
56
68
  DimensionEntry.struct_class = Types::DimensionEntry
57
69
 
58
70
  DimensionEntryList.member = Shapes::ShapeRef.new(shape: DimensionEntry)
@@ -62,10 +74,10 @@ module Aws::Sustainability
62
74
  DimensionListMap.key = Shapes::ShapeRef.new(shape: Dimension)
63
75
  DimensionListMap.value = Shapes::ShapeRef.new(shape: DimensionValueList)
64
76
 
65
- DimensionValueList.member = Shapes::ShapeRef.new(shape: String)
77
+ DimensionValueList.member = Shapes::ShapeRef.new(shape: DimensionValue)
66
78
 
67
79
  DimensionsMap.key = Shapes::ShapeRef.new(shape: Dimension)
68
- DimensionsMap.value = Shapes::ShapeRef.new(shape: String)
80
+ DimensionsMap.value = Shapes::ShapeRef.new(shape: DimensionValue)
69
81
 
70
82
  Emissions.add_member(:value, Shapes::ShapeRef.new(shape: Double, required: true, location_name: "Value"))
71
83
  Emissions.add_member(:unit, Shapes::ShapeRef.new(shape: EmissionsUnit, required: true, location_name: "Unit"))
@@ -84,6 +96,14 @@ module Aws::Sustainability
84
96
 
85
97
  EstimatedCarbonEmissionsList.member = Shapes::ShapeRef.new(shape: EstimatedCarbonEmissions)
86
98
 
99
+ EstimatedWaterAllocation.add_member(:time_period, Shapes::ShapeRef.new(shape: TimePeriod, required: true, location_name: "TimePeriod"))
100
+ EstimatedWaterAllocation.add_member(:dimensions_values, Shapes::ShapeRef.new(shape: DimensionsMap, required: true, location_name: "DimensionsValues"))
101
+ EstimatedWaterAllocation.add_member(:model_version, Shapes::ShapeRef.new(shape: ModelVersion, required: true, location_name: "ModelVersion"))
102
+ EstimatedWaterAllocation.add_member(:allocation_values, Shapes::ShapeRef.new(shape: WaterAllocationMap, required: true, location_name: "AllocationValues"))
103
+ EstimatedWaterAllocation.struct_class = Types::EstimatedWaterAllocation
104
+
105
+ EstimatedWaterAllocationList.member = Shapes::ShapeRef.new(shape: EstimatedWaterAllocation)
106
+
87
107
  FilterExpression.add_member(:dimensions, Shapes::ShapeRef.new(shape: DimensionListMap, location_name: "Dimensions"))
88
108
  FilterExpression.struct_class = Types::FilterExpression
89
109
 
@@ -111,6 +131,29 @@ module Aws::Sustainability
111
131
  GetEstimatedCarbonEmissionsResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: NextToken, location_name: "NextToken"))
112
132
  GetEstimatedCarbonEmissionsResponse.struct_class = Types::GetEstimatedCarbonEmissionsResponse
113
133
 
134
+ GetEstimatedWaterAllocationDimensionValuesRequest.add_member(:time_period, Shapes::ShapeRef.new(shape: TimePeriod, required: true, location_name: "TimePeriod"))
135
+ GetEstimatedWaterAllocationDimensionValuesRequest.add_member(:dimensions, Shapes::ShapeRef.new(shape: DimensionList, required: true, location_name: "Dimensions"))
136
+ GetEstimatedWaterAllocationDimensionValuesRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: MaxResults, location_name: "MaxResults"))
137
+ GetEstimatedWaterAllocationDimensionValuesRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: NextToken, location_name: "NextToken"))
138
+ GetEstimatedWaterAllocationDimensionValuesRequest.struct_class = Types::GetEstimatedWaterAllocationDimensionValuesRequest
139
+
140
+ GetEstimatedWaterAllocationDimensionValuesResponse.add_member(:results, Shapes::ShapeRef.new(shape: DimensionEntryList, required: true, location_name: "Results"))
141
+ GetEstimatedWaterAllocationDimensionValuesResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: NextToken, location_name: "NextToken"))
142
+ GetEstimatedWaterAllocationDimensionValuesResponse.struct_class = Types::GetEstimatedWaterAllocationDimensionValuesResponse
143
+
144
+ GetEstimatedWaterAllocationRequest.add_member(:time_period, Shapes::ShapeRef.new(shape: TimePeriod, required: true, location_name: "TimePeriod"))
145
+ GetEstimatedWaterAllocationRequest.add_member(:group_by, Shapes::ShapeRef.new(shape: DimensionList, location_name: "GroupBy"))
146
+ GetEstimatedWaterAllocationRequest.add_member(:filter_by, Shapes::ShapeRef.new(shape: FilterExpression, location_name: "FilterBy"))
147
+ GetEstimatedWaterAllocationRequest.add_member(:allocation_types, Shapes::ShapeRef.new(shape: WaterAllocationTypeList, location_name: "AllocationTypes"))
148
+ GetEstimatedWaterAllocationRequest.add_member(:granularity, Shapes::ShapeRef.new(shape: TimeGranularity, location_name: "Granularity"))
149
+ GetEstimatedWaterAllocationRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: MaxResults, location_name: "MaxResults"))
150
+ GetEstimatedWaterAllocationRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: NextToken, location_name: "NextToken"))
151
+ GetEstimatedWaterAllocationRequest.struct_class = Types::GetEstimatedWaterAllocationRequest
152
+
153
+ GetEstimatedWaterAllocationResponse.add_member(:results, Shapes::ShapeRef.new(shape: EstimatedWaterAllocationList, required: true, location_name: "Results"))
154
+ GetEstimatedWaterAllocationResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: NextToken, location_name: "NextToken"))
155
+ GetEstimatedWaterAllocationResponse.struct_class = Types::GetEstimatedWaterAllocationResponse
156
+
114
157
  GranularityConfiguration.add_member(:fiscal_year_start_month, Shapes::ShapeRef.new(shape: Month, location_name: "FiscalYearStartMonth"))
115
158
  GranularityConfiguration.struct_class = Types::GranularityConfiguration
116
159
 
@@ -127,6 +170,15 @@ module Aws::Sustainability
127
170
  ValidationException.add_member(:message, Shapes::ShapeRef.new(shape: String, required: true, location_name: "message"))
128
171
  ValidationException.struct_class = Types::ValidationException
129
172
 
173
+ WaterAllocation.add_member(:value, Shapes::ShapeRef.new(shape: Double, required: true, location_name: "Value"))
174
+ WaterAllocation.add_member(:unit, Shapes::ShapeRef.new(shape: WaterAllocationUnit, required: true, location_name: "Unit"))
175
+ WaterAllocation.struct_class = Types::WaterAllocation
176
+
177
+ WaterAllocationMap.key = Shapes::ShapeRef.new(shape: WaterAllocationType)
178
+ WaterAllocationMap.value = Shapes::ShapeRef.new(shape: WaterAllocation)
179
+
180
+ WaterAllocationTypeList.member = Shapes::ShapeRef.new(shape: WaterAllocationType)
181
+
130
182
 
131
183
  # @api private
132
184
  API = Seahorse::Model::Api.new.tap do |api|
@@ -181,6 +233,42 @@ module Aws::Sustainability
181
233
  }
182
234
  )
183
235
  end)
236
+
237
+ api.add_operation(:get_estimated_water_allocation, Seahorse::Model::Operation.new.tap do |o|
238
+ o.name = "GetEstimatedWaterAllocation"
239
+ o.http_method = "POST"
240
+ o.http_request_uri = "/v1/estimated-water-allocation"
241
+ o.input = Shapes::ShapeRef.new(shape: GetEstimatedWaterAllocationRequest)
242
+ o.output = Shapes::ShapeRef.new(shape: GetEstimatedWaterAllocationResponse)
243
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
244
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerException)
245
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
246
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
247
+ o[:pager] = Aws::Pager.new(
248
+ limit_key: "max_results",
249
+ tokens: {
250
+ "next_token" => "next_token"
251
+ }
252
+ )
253
+ end)
254
+
255
+ api.add_operation(:get_estimated_water_allocation_dimension_values, Seahorse::Model::Operation.new.tap do |o|
256
+ o.name = "GetEstimatedWaterAllocationDimensionValues"
257
+ o.http_method = "POST"
258
+ o.http_request_uri = "/v1/estimated-water-allocation-dimension-values"
259
+ o.input = Shapes::ShapeRef.new(shape: GetEstimatedWaterAllocationDimensionValuesRequest)
260
+ o.output = Shapes::ShapeRef.new(shape: GetEstimatedWaterAllocationDimensionValuesResponse)
261
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
262
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerException)
263
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
264
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
265
+ o[:pager] = Aws::Pager.new(
266
+ limit_key: "max_results",
267
+ tokens: {
268
+ "next_token" => "next_token"
269
+ }
270
+ )
271
+ end)
184
272
  end
185
273
 
186
274
  end
@@ -107,10 +107,47 @@ module Aws::Sustainability
107
107
  include Aws::Structure
108
108
  end
109
109
 
110
- # Filters emission values by specific dimension values.
110
+ # Contains estimated water allocation data for a specific time period
111
+ # and dimension grouping.
112
+ #
113
+ # @!attribute [rw] time_period
114
+ # The reporting period for water allocation values.
115
+ # @return [Types::TimePeriod]
116
+ #
117
+ # @!attribute [rw] dimensions_values
118
+ # The dimensions used to group water allocation values.
119
+ # @return [Hash<String,String>]
120
+ #
121
+ # @!attribute [rw] model_version
122
+ # The semantic version-formatted string that indicates the methodology
123
+ # version used to calculate the water allocation values.
124
+ #
125
+ # <note markdown="1"> The AWS Sustainability service reflects the most recent model
126
+ # version for every month. You will not see two entries for the same
127
+ # month with different `ModelVersion` values.
128
+ #
129
+ # </note>
130
+ # @return [String]
131
+ #
132
+ # @!attribute [rw] allocation_values
133
+ # The allocation values for the requested water allocation types.
134
+ # @return [Hash<String,Types::WaterAllocation>]
135
+ #
136
+ # @see http://docs.aws.amazon.com/goto/WebAPI/sustainability-2018-05-10/EstimatedWaterAllocation AWS API Documentation
137
+ #
138
+ class EstimatedWaterAllocation < Struct.new(
139
+ :time_period,
140
+ :dimensions_values,
141
+ :model_version,
142
+ :allocation_values)
143
+ SENSITIVE = []
144
+ include Aws::Structure
145
+ end
146
+
147
+ # Filters environmental impact values by specific dimension values.
111
148
  #
112
149
  # @!attribute [rw] dimensions
113
- # Filters emission values by specific dimension values.
150
+ # Filters environmental impact values by specific dimension values.
114
151
  # @return [Hash<String,Array<String>>]
115
152
  #
116
153
  # @see http://docs.aws.amazon.com/goto/WebAPI/sustainability-2018-05-10/FilterExpression AWS API Documentation
@@ -122,7 +159,9 @@ module Aws::Sustainability
122
159
  end
123
160
 
124
161
  # @!attribute [rw] time_period
125
- # The date range for fetching the dimension values.
162
+ # The date range for fetching the dimension values. The range must
163
+ # include the start date of a month for that month's dimensions to be
164
+ # included in the response.
126
165
  # @return [Types::TimePeriod]
127
166
  #
128
167
  # @!attribute [rw] dimensions
@@ -131,7 +170,7 @@ module Aws::Sustainability
131
170
  #
132
171
  # @!attribute [rw] max_results
133
172
  # The maximum number of results to return in a single call. Default is
134
- # 40.
173
+ # 1000.
135
174
  # @return [Integer]
136
175
  #
137
176
  # @!attribute [rw] next_token
@@ -172,7 +211,9 @@ module Aws::Sustainability
172
211
  end
173
212
 
174
213
  # @!attribute [rw] time_period
175
- # The date range for fetching estimated carbon emissions.
214
+ # The date range for fetching estimated carbon emissions. The range
215
+ # must include the start date of a month for that month's data to be
216
+ # included in the response.
176
217
  # @return [Types::TimePeriod]
177
218
  #
178
219
  # @!attribute [rw] group_by
@@ -180,7 +221,9 @@ module Aws::Sustainability
180
221
  # @return [Array<String>]
181
222
  #
182
223
  # @!attribute [rw] filter_by
183
- # The criteria for filtering estimated carbon emissions.
224
+ # The criteria for filtering estimated carbon emissions. To determine
225
+ # which dimensions are available to be filtered by, you can first call
226
+ # GetEstimatedCarbonEmissionsDimensionValues
184
227
  # @return [Types::FilterExpression]
185
228
  #
186
229
  # @!attribute [rw] emissions_types
@@ -191,7 +234,14 @@ module Aws::Sustainability
191
234
  #
192
235
  # @!attribute [rw] granularity
193
236
  # The time granularity for the results. If absent, uses `MONTHLY` time
194
- # granularity.
237
+ # granularity. The smallest supported granularity for carbon emissions
238
+ # is `MONTHLY`.
239
+ #
240
+ # If requesting partial time periods, data will be returned based on
241
+ # the smallest supported granularity. For example, requesting
242
+ # `2025-04-01T00:00:00Z` to `2026-04-01T00:00:00Z` with
243
+ # `YEARLY_CALENDAR` granularity will return the last 9 months for 2025
244
+ # and the first 3 months of 2026.
195
245
  # @return [String]
196
246
  #
197
247
  # @!attribute [rw] granularity_configuration
@@ -201,7 +251,7 @@ module Aws::Sustainability
201
251
  #
202
252
  # @!attribute [rw] max_results
203
253
  # The maximum number of results to return in a single call. Default is
204
- # 40.
254
+ # 1000.
205
255
  # @return [Integer]
206
256
  #
207
257
  # @!attribute [rw] next_token
@@ -244,6 +294,134 @@ module Aws::Sustainability
244
294
  include Aws::Structure
245
295
  end
246
296
 
297
+ # @!attribute [rw] time_period
298
+ # The date range for fetching the dimension values. The range must
299
+ # include the start date of a year for that year's data to be
300
+ # included in the response.
301
+ # @return [Types::TimePeriod]
302
+ #
303
+ # @!attribute [rw] dimensions
304
+ # The dimensions available for grouping estimated water allocation.
305
+ # @return [Array<String>]
306
+ #
307
+ # @!attribute [rw] max_results
308
+ # The maximum number of results to return in a single call. Default is
309
+ # 1000.
310
+ # @return [Integer]
311
+ #
312
+ # @!attribute [rw] next_token
313
+ # The pagination token specifying which page of results to return in
314
+ # the response. If no token is provided, the default page is the first
315
+ # page.
316
+ # @return [String]
317
+ #
318
+ # @see http://docs.aws.amazon.com/goto/WebAPI/sustainability-2018-05-10/GetEstimatedWaterAllocationDimensionValuesRequest AWS API Documentation
319
+ #
320
+ class GetEstimatedWaterAllocationDimensionValuesRequest < Struct.new(
321
+ :time_period,
322
+ :dimensions,
323
+ :max_results,
324
+ :next_token)
325
+ SENSITIVE = []
326
+ include Aws::Structure
327
+ end
328
+
329
+ # @!attribute [rw] results
330
+ # The list of possible dimensions over which the allocation data is
331
+ # aggregated.
332
+ # @return [Array<Types::DimensionEntry>]
333
+ #
334
+ # @!attribute [rw] next_token
335
+ # The pagination token indicating there are additional pages
336
+ # available. You can use the token in a following request to fetch the
337
+ # next set of results.
338
+ # @return [String]
339
+ #
340
+ # @see http://docs.aws.amazon.com/goto/WebAPI/sustainability-2018-05-10/GetEstimatedWaterAllocationDimensionValuesResponse AWS API Documentation
341
+ #
342
+ class GetEstimatedWaterAllocationDimensionValuesResponse < Struct.new(
343
+ :results,
344
+ :next_token)
345
+ SENSITIVE = []
346
+ include Aws::Structure
347
+ end
348
+
349
+ # @!attribute [rw] time_period
350
+ # The date range for fetching estimated water allocation. The range
351
+ # must include the start date of a year for that year's data to be
352
+ # included in the response.
353
+ # @return [Types::TimePeriod]
354
+ #
355
+ # @!attribute [rw] group_by
356
+ # The dimensions available for grouping estimated water allocation.
357
+ # @return [Array<String>]
358
+ #
359
+ # @!attribute [rw] filter_by
360
+ # The criteria for filtering estimated water allocation. To determine
361
+ # which dimensions are available to be filtered by, you can first call
362
+ # GetEstimatedWaterAllocationDimensionValues
363
+ # @return [Types::FilterExpression]
364
+ #
365
+ # @!attribute [rw] allocation_types
366
+ # The allocation types to include in the results. If absent, returns
367
+ # `TOTAL_WATER_WITHDRAWALS` allocation types.
368
+ # @return [Array<String>]
369
+ #
370
+ # @!attribute [rw] granularity
371
+ # The time granularity for the results. Only `YEARLY_CALENDAR` time
372
+ # granularity is currently supported for water allocation. Defaults to
373
+ # `YEARLY_CALENDAR` if absent.
374
+ #
375
+ # If requesting partial time periods, data will be returned based on
376
+ # the smallest supported granularity. For example, requesting
377
+ # `2025-04-01T00:00:00Z` to `2026-04-01T00:00:00Z` with
378
+ # `YEARLY_CALENDAR` will return all the data for 2026 only.
379
+ # @return [String]
380
+ #
381
+ # @!attribute [rw] max_results
382
+ # The maximum number of results to return in a single call. Default is
383
+ # 1000.
384
+ # @return [Integer]
385
+ #
386
+ # @!attribute [rw] next_token
387
+ # The pagination token specifying which page of results to return in
388
+ # the response. If no token is provided, the default page is the first
389
+ # page.
390
+ # @return [String]
391
+ #
392
+ # @see http://docs.aws.amazon.com/goto/WebAPI/sustainability-2018-05-10/GetEstimatedWaterAllocationRequest AWS API Documentation
393
+ #
394
+ class GetEstimatedWaterAllocationRequest < Struct.new(
395
+ :time_period,
396
+ :group_by,
397
+ :filter_by,
398
+ :allocation_types,
399
+ :granularity,
400
+ :max_results,
401
+ :next_token)
402
+ SENSITIVE = []
403
+ include Aws::Structure
404
+ end
405
+
406
+ # @!attribute [rw] results
407
+ # The result of the requested inputs.
408
+ # @return [Array<Types::EstimatedWaterAllocation>]
409
+ #
410
+ # @!attribute [rw] next_token
411
+ # The pagination token indicating there are additional pages
412
+ # available. You can use the token in a following request to fetch the
413
+ # next set of results.
414
+ # @return [String]
415
+ #
416
+ # @see http://docs.aws.amazon.com/goto/WebAPI/sustainability-2018-05-10/GetEstimatedWaterAllocationResponse AWS API Documentation
417
+ #
418
+ class GetEstimatedWaterAllocationResponse < Struct.new(
419
+ :results,
420
+ :next_token)
421
+ SENSITIVE = []
422
+ include Aws::Structure
423
+ end
424
+
247
425
  # Contains configuration for the fiscal year granularities (e.g.,
248
426
  # `YEARLY_FISCAL`, `QUARTERLY_FISCAL`.
249
427
  #
@@ -323,6 +501,26 @@ module Aws::Sustainability
323
501
  include Aws::Structure
324
502
  end
325
503
 
504
+ # Represents a water allocation quantity with its value and unit of
505
+ # measurement.
506
+ #
507
+ # @!attribute [rw] value
508
+ # The numeric value of the allocation quantity.
509
+ # @return [Float]
510
+ #
511
+ # @!attribute [rw] unit
512
+ # The unit of measurement for the allocation value.
513
+ # @return [String]
514
+ #
515
+ # @see http://docs.aws.amazon.com/goto/WebAPI/sustainability-2018-05-10/WaterAllocation AWS API Documentation
516
+ #
517
+ class WaterAllocation < Struct.new(
518
+ :value,
519
+ :unit)
520
+ SENSITIVE = []
521
+ include Aws::Structure
522
+ end
523
+
326
524
  end
327
525
  end
328
526
 
@@ -54,7 +54,7 @@ module Aws::Sustainability
54
54
  autoload :EndpointProvider, 'aws-sdk-sustainability/endpoint_provider'
55
55
  autoload :Endpoints, 'aws-sdk-sustainability/endpoints'
56
56
 
57
- GEM_VERSION = '1.4.0'
57
+ GEM_VERSION = '1.5.0'
58
58
 
59
59
  end
60
60
 
data/sig/client.rbs CHANGED
@@ -119,6 +119,45 @@ module Aws
119
119
  ?next_token: ::String
120
120
  ) -> _GetEstimatedCarbonEmissionsDimensionValuesResponseSuccess
121
121
  | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _GetEstimatedCarbonEmissionsDimensionValuesResponseSuccess
122
+
123
+ interface _GetEstimatedWaterAllocationResponseSuccess
124
+ include ::Seahorse::Client::_ResponseSuccess[Types::GetEstimatedWaterAllocationResponse]
125
+ def results: () -> ::Array[Types::EstimatedWaterAllocation]
126
+ def next_token: () -> ::String
127
+ end
128
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/Sustainability/Client.html#get_estimated_water_allocation-instance_method
129
+ def get_estimated_water_allocation: (
130
+ time_period: {
131
+ start: ::Time,
132
+ end: ::Time
133
+ },
134
+ ?group_by: Array[("USAGE_ACCOUNT_ID" | "REGION" | "SERVICE")],
135
+ ?filter_by: {
136
+ dimensions: Hash[("USAGE_ACCOUNT_ID" | "REGION" | "SERVICE"), Array[::String]]?
137
+ },
138
+ ?allocation_types: Array[("TOTAL_WATER_WITHDRAWALS")],
139
+ ?granularity: ("YEARLY_CALENDAR" | "YEARLY_FISCAL" | "QUARTERLY_CALENDAR" | "QUARTERLY_FISCAL" | "MONTHLY"),
140
+ ?max_results: ::Integer,
141
+ ?next_token: ::String
142
+ ) -> _GetEstimatedWaterAllocationResponseSuccess
143
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _GetEstimatedWaterAllocationResponseSuccess
144
+
145
+ interface _GetEstimatedWaterAllocationDimensionValuesResponseSuccess
146
+ include ::Seahorse::Client::_ResponseSuccess[Types::GetEstimatedWaterAllocationDimensionValuesResponse]
147
+ def results: () -> ::Array[Types::DimensionEntry]
148
+ def next_token: () -> ::String
149
+ end
150
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/Sustainability/Client.html#get_estimated_water_allocation_dimension_values-instance_method
151
+ def get_estimated_water_allocation_dimension_values: (
152
+ time_period: {
153
+ start: ::Time,
154
+ end: ::Time
155
+ },
156
+ dimensions: Array[("USAGE_ACCOUNT_ID" | "REGION" | "SERVICE")],
157
+ ?max_results: ::Integer,
158
+ ?next_token: ::String
159
+ ) -> _GetEstimatedWaterAllocationDimensionValuesResponseSuccess
160
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _GetEstimatedWaterAllocationDimensionValuesResponseSuccess
122
161
  end
123
162
  end
124
163
  end
data/sig/types.rbs CHANGED
@@ -33,6 +33,14 @@ module Aws::Sustainability
33
33
  SENSITIVE: []
34
34
  end
35
35
 
36
+ class EstimatedWaterAllocation
37
+ attr_accessor time_period: Types::TimePeriod
38
+ attr_accessor dimensions_values: ::Hash[("USAGE_ACCOUNT_ID" | "REGION" | "SERVICE"), ::String]
39
+ attr_accessor model_version: ::String
40
+ attr_accessor allocation_values: ::Hash[("TOTAL_WATER_WITHDRAWALS"), Types::WaterAllocation]
41
+ SENSITIVE: []
42
+ end
43
+
36
44
  class FilterExpression
37
45
  attr_accessor dimensions: ::Hash[("USAGE_ACCOUNT_ID" | "REGION" | "SERVICE"), ::Array[::String]]
38
46
  SENSITIVE: []
@@ -70,6 +78,37 @@ module Aws::Sustainability
70
78
  SENSITIVE: []
71
79
  end
72
80
 
81
+ class GetEstimatedWaterAllocationDimensionValuesRequest
82
+ attr_accessor time_period: Types::TimePeriod
83
+ attr_accessor dimensions: ::Array[("USAGE_ACCOUNT_ID" | "REGION" | "SERVICE")]
84
+ attr_accessor max_results: ::Integer
85
+ attr_accessor next_token: ::String
86
+ SENSITIVE: []
87
+ end
88
+
89
+ class GetEstimatedWaterAllocationDimensionValuesResponse
90
+ attr_accessor results: ::Array[Types::DimensionEntry]
91
+ attr_accessor next_token: ::String
92
+ SENSITIVE: []
93
+ end
94
+
95
+ class GetEstimatedWaterAllocationRequest
96
+ attr_accessor time_period: Types::TimePeriod
97
+ attr_accessor group_by: ::Array[("USAGE_ACCOUNT_ID" | "REGION" | "SERVICE")]
98
+ attr_accessor filter_by: Types::FilterExpression
99
+ attr_accessor allocation_types: ::Array[("TOTAL_WATER_WITHDRAWALS")]
100
+ attr_accessor granularity: ("YEARLY_CALENDAR" | "YEARLY_FISCAL" | "QUARTERLY_CALENDAR" | "QUARTERLY_FISCAL" | "MONTHLY")
101
+ attr_accessor max_results: ::Integer
102
+ attr_accessor next_token: ::String
103
+ SENSITIVE: []
104
+ end
105
+
106
+ class GetEstimatedWaterAllocationResponse
107
+ attr_accessor results: ::Array[Types::EstimatedWaterAllocation]
108
+ attr_accessor next_token: ::String
109
+ SENSITIVE: []
110
+ end
111
+
73
112
  class GranularityConfiguration
74
113
  attr_accessor fiscal_year_start_month: ::Integer
75
114
  SENSITIVE: []
@@ -95,5 +134,11 @@ module Aws::Sustainability
95
134
  attr_accessor message: ::String
96
135
  SENSITIVE: []
97
136
  end
137
+
138
+ class WaterAllocation
139
+ attr_accessor value: ::Float
140
+ attr_accessor unit: ("m3")
141
+ SENSITIVE: []
142
+ end
98
143
  end
99
144
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aws-sdk-sustainability
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Amazon Web Services