batchMeterUsage method
- required String productCode,
- required List<
UsageRecord> usageRecords,
BatchMeterUsage is called from a SaaS application listed on the AWS Marketplace to post metering records for a set of customers.
For identical requests, the API is idempotent; requests can be retried with the same records or a subset of the input records.
Every request to BatchMeterUsage is for one product. If you need to meter usage for multiple products, you must make multiple calls to BatchMeterUsage.
BatchMeterUsage can process up to 25 UsageRecords at a time.
A UsageRecord can optionally include multiple usage allocations, to provide customers with usagedata split into buckets by tags that you define (or allow the customer to define).
BatchMeterUsage requests must be less than 1MB in size.
May throw InternalServiceErrorException. May throw InvalidProductCodeException. May throw InvalidUsageDimensionException. May throw InvalidTagException. May throw InvalidUsageAllocationsException. May throw InvalidCustomerIdentifierException. May throw TimestampOutOfBoundsException. May throw ThrottlingException. May throw DisabledApiException.
Parameter productCode
:
Product code is used to uniquely identify a product in AWS Marketplace.
The product code should be the same as the one used during the publishing
of a new product.
Parameter usageRecords
:
The set of UsageRecords to submit. BatchMeterUsage accepts up to 25
UsageRecords at a time.
Implementation
Future<BatchMeterUsageResult> batchMeterUsage({
required String productCode,
required List<UsageRecord> usageRecords,
}) async {
ArgumentError.checkNotNull(productCode, 'productCode');
_s.validateStringLength(
'productCode',
productCode,
1,
255,
isRequired: true,
);
ArgumentError.checkNotNull(usageRecords, 'usageRecords');
final headers = <String, String>{
'Content-Type': 'application/x-amz-json-1.1',
'X-Amz-Target': 'AWSMPMeteringService.BatchMeterUsage'
};
final jsonResponse = await _protocol.send(
method: 'POST',
requestUri: '/',
exceptionFnMap: _exceptionFns,
// TODO queryParams
headers: headers,
payload: {
'ProductCode': productCode,
'UsageRecords': usageRecords,
},
);
return BatchMeterUsageResult.fromJson(jsonResponse.body);
}