-
Notifications
You must be signed in to change notification settings - Fork 597
/
api_op_BatchMeterUsage.go
158 lines (142 loc) · 5.64 KB
/
api_op_BatchMeterUsage.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
// Code generated by smithy-go-codegen DO NOT EDIT.
package marketplacemetering
import (
"context"
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
"github.com/aws/aws-sdk-go-v2/service/marketplacemetering/types"
"github.com/aws/smithy-go/middleware"
smithyhttp "github.com/aws/smithy-go/transport/http"
)
// BatchMeterUsage is called from a SaaS application listed on 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 . Usage records are expected to be submitted as quickly as
// possible after the event that is being recorded, and are not accepted more than
// 6 hours after the event. BatchMeterUsage can process up to 25 UsageRecords at a
// time. A UsageRecord can optionally include multiple usage allocations, to
// provide customers with usage data split into buckets by tags that you define (or
// allow the customer to define). BatchMeterUsage returns a list of
// UsageRecordResult objects, showing the result for each UsageRecord , as well as
// a list of UnprocessedRecords , indicating errors in the service side that you
// should retry. BatchMeterUsage requests must be less than 1MB in size. For an
// example of using BatchMeterUsage , see BatchMeterUsage code example (https://docs.aws.amazon.com/marketplace/latest/userguide/saas-code-examples.html#saas-batchmeterusage-example)
// in the AWS Marketplace Seller Guide.
func (c *Client) BatchMeterUsage(ctx context.Context, params *BatchMeterUsageInput, optFns ...func(*Options)) (*BatchMeterUsageOutput, error) {
if params == nil {
params = &BatchMeterUsageInput{}
}
result, metadata, err := c.invokeOperation(ctx, "BatchMeterUsage", params, optFns, c.addOperationBatchMeterUsageMiddlewares)
if err != nil {
return nil, err
}
out := result.(*BatchMeterUsageOutput)
out.ResultMetadata = metadata
return out, nil
}
// A BatchMeterUsageRequest contains UsageRecords , which indicate quantities of
// usage within your application.
type BatchMeterUsageInput struct {
// 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.
//
// This member is required.
ProductCode *string
// The set of UsageRecords to submit. BatchMeterUsage accepts up to 25 UsageRecords
// at a time.
//
// This member is required.
UsageRecords []types.UsageRecord
noSmithyDocumentSerde
}
// Contains the UsageRecords processed by BatchMeterUsage and any records that
// have failed due to transient error.
type BatchMeterUsageOutput struct {
// Contains all UsageRecords processed by BatchMeterUsage . These records were
// either honored by AWS Marketplace Metering Service or were invalid. Invalid
// records should be fixed before being resubmitted.
Results []types.UsageRecordResult
// 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 .
UnprocessedRecords []types.UsageRecord
// Metadata pertaining to the operation's result.
ResultMetadata middleware.Metadata
noSmithyDocumentSerde
}
func (c *Client) addOperationBatchMeterUsageMiddlewares(stack *middleware.Stack, options Options) (err error) {
err = stack.Serialize.Add(&awsAwsjson11_serializeOpBatchMeterUsage{}, middleware.After)
if err != nil {
return err
}
err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpBatchMeterUsage{}, middleware.After)
if err != nil {
return err
}
if err = addSetLoggerMiddleware(stack, options); err != nil {
return err
}
if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil {
return err
}
if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil {
return err
}
if err = addResolveEndpointMiddleware(stack, options); err != nil {
return err
}
if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil {
return err
}
if err = addRetryMiddlewares(stack, options); err != nil {
return err
}
if err = addHTTPSignerV4Middleware(stack, options); err != nil {
return err
}
if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
return err
}
if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil {
return err
}
if err = addClientUserAgent(stack); err != nil {
return err
}
if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil {
return err
}
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
return err
}
if err = addOpBatchMeterUsageValidationMiddleware(stack); err != nil {
return err
}
if err = stack.Initialize.Add(newServiceMetadataMiddleware_opBatchMeterUsage(options.Region), middleware.Before); err != nil {
return err
}
if err = awsmiddleware.AddRecursionDetection(stack); err != nil {
return err
}
if err = addRequestIDRetrieverMiddleware(stack); err != nil {
return err
}
if err = addResponseErrorMiddleware(stack); err != nil {
return err
}
if err = addRequestResponseLogging(stack, options); err != nil {
return err
}
return nil
}
func newServiceMetadataMiddleware_opBatchMeterUsage(region string) *awsmiddleware.RegisterServiceMetadata {
return &awsmiddleware.RegisterServiceMetadata{
Region: region,
ServiceID: ServiceID,
SigningName: "aws-marketplace",
OperationName: "BatchMeterUsage",
}
}