BatchMeterUsage
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.
Request Syntax
{
"ProductCode": "string
",
"UsageRecords": [
{
"CustomerIdentifier": "string
",
"Dimension": "string
",
"Quantity": number
,
"Timestamp": number
,
"UsageAllocations": [
{
"AllocatedUsageQuantity": number
,
"Tags": [
{
"Key": "string
",
"Value": "string
"
}
]
}
]
}
]
}
Request Parameters
The request accepts the following data in JSON format.
In the following list, the required parameters are described first.
- 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.
Type: String
Length Constraints: Minimum length of 1. Maximum length of 255.
Pattern:
[\s\S]+
Required: Yes
- UsageRecords
-
The set of UsageRecords to submit. BatchMeterUsage accepts up to 25 UsageRecords at a time.
Type: Array of UsageRecord objects
Array Members: Minimum number of 0 items. Maximum number of 25 items.
Required: Yes
Response Syntax
{
"Results": [
{
"MeteringRecordId": "string",
"Status": "string",
"UsageRecord": {
"CustomerIdentifier": "string",
"Dimension": "string",
"Quantity": number,
"Timestamp": number,
"UsageAllocations": [
{
"AllocatedUsageQuantity": number,
"Tags": [
{
"Key": "string",
"Value": "string"
}
]
}
]
}
}
],
"UnprocessedRecords": [
{
"CustomerIdentifier": "string",
"Dimension": "string",
"Quantity": number,
"Timestamp": number,
"UsageAllocations": [
{
"AllocatedUsageQuantity": number,
"Tags": [
{
"Key": "string",
"Value": "string"
}
]
}
]
}
]
}
Response Elements
If the action is successful, the service sends back an HTTP 200 response.
The following data is returned in JSON format by the service.
- Results
-
Contains all UsageRecords processed by BatchMeterUsage. These records were either honored by AWS Marketplace Metering Service or were invalid.
Type: Array of UsageRecordResult objects
- UnprocessedRecords
-
Contains all UsageRecords that were not processed by BatchMeterUsage. This is a list of UsageRecords. You can retry the failed request by making another BatchMeterUsage call with this list as input in the BatchMeterUsageRequest.
Type: Array of UsageRecord objects
Array Members: Minimum number of 0 items. Maximum number of 25 items.
Errors
For information about the errors that are common to all actions, see Common Errors.
- DisabledApiException
-
The API is disabled in the Region.
HTTP Status Code: 400
- InternalServiceErrorException
-
An internal error has occurred. Retry your request. If the problem persists, post a message with details on the AWS forums.
HTTP Status Code: 500
- InvalidCustomerIdentifierException
-
You have metered usage for a CustomerIdentifier that does not exist.
HTTP Status Code: 400
- InvalidProductCodeException
-
The product code passed does not match the product code used for publishing the product.
HTTP Status Code: 400
- InvalidTagException
-
The tag is invalid, or the number of tags is greater than 5.
HTTP Status Code: 400
- InvalidUsageAllocationsException
-
The usage allocation objects are invalid, or the number of allocations is greater than 500 for a single usage record.
HTTP Status Code: 400
- InvalidUsageDimensionException
-
The usage dimension does not match one of the UsageDimensions associated with products.
HTTP Status Code: 400
- ThrottlingException
-
The calls to the API are throttled.
HTTP Status Code: 400
- TimestampOutOfBoundsException
-
The timestamp value passed in the meterUsage() is out of allowed range.
HTTP Status Code: 400
See Also
For more information about using this API in one of the language-specific AWS SDKs, see the following: