/*
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
/*
* Do not modify this file. This file is generated from the meteringmarketplace-2016-01-14.normal.json service model.
*/
using System;
using System.Threading;
using System.Threading.Tasks;
using System.Collections.Generic;
using Amazon.Runtime;
using Amazon.AWSMarketplaceMetering.Model;
namespace Amazon.AWSMarketplaceMetering
{
///
/// Interface for accessing AWSMarketplaceMetering
///
/// AWS Marketplace Metering Service
///
/// This reference provides descriptions of the low-level AWS Marketplace Metering Service
/// API.
///
///
///
/// AWS Marketplace sellers can use this API to submit usage data for custom usage dimensions.
///
///
///
/// For information on the permissions you need to use this API, see AWS
/// Marketplace metering and entitlement API permissions in the AWS Marketplace
/// Seller Guide.
///
///
///
/// Submitting Metering Records
///
/// -
///
/// MeterUsage - Submits the metering record for an AWS Marketplace product.
MeterUsage
/// is called from an EC2 instance or a container running on EKS or ECS.
///
/// -
///
/// BatchMeterUsage - Submits the metering record for a set of customers.
BatchMeterUsage
/// is called from a software-as-a-service (SaaS) application.
///
///
///
/// Accepting New Customers
///
/// -
///
/// ResolveCustomer - Called by a SaaS application during the registration process.
/// When a buyer visits your website during the registration process, the buyer submits
/// a Registration Token through the browser. The Registration Token is resolved through
/// this API to obtain a
CustomerIdentifier
along with the CustomerAWSAccountId
/// and ProductCode
.
///
///
///
/// Entitlement and Metering for Paid Container Products
///
/// -
///
/// Paid container software products sold through AWS Marketplace must integrate with
/// the AWS Marketplace Metering Service and call the
RegisterUsage
operation
/// for software entitlement and metering. Free and BYOL products for Amazon ECS or Amazon
/// EKS aren't required to call RegisterUsage
, but you can do so if you want
/// to receive usage data in your seller reports. For more information on using the RegisterUsage
/// operation, see Container-Based
/// Products.
///
///
///
/// BatchMeterUsage
API calls are captured by AWS CloudTrail. You can use
/// Cloudtrail to verify that the SaaS metering records that you sent are accurate by
/// searching for records with the eventName
of BatchMeterUsage
.
/// You can also use CloudTrail to audit records over time. For more information, see
/// the AWS
/// CloudTrail User Guide.
///
///
public partial interface IAmazonAWSMarketplaceMetering : IAmazonService, IDisposable
{
#region BatchMeterUsage
///
/// 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 in the AWS Marketplace Seller Guide.
///
///
///
/// Container for the necessary parameters to execute the BatchMeterUsage service method.
///
/// The response from the BatchMeterUsage service method, as returned by AWSMarketplaceMetering.
///
/// The API is disabled in the Region.
///
///
/// An internal error has occurred. Retry your request. If the problem persists, post
/// a message with details on the AWS forums.
///
///
/// You have metered usage for a CustomerIdentifier
that does not exist.
///
///
/// The product code passed does not match the product code used for publishing the product.
///
///
/// The tag is invalid, or the number of tags is greater than 5.
///
///
/// The usage allocation objects are invalid, or the number of allocations is greater
/// than 500 for a single usage record.
///
///
/// The usage dimension does not match one of the UsageDimensions
associated
/// with products.
///
///
/// The calls to the API are throttled.
///
///
/// The timestamp
value passed in the UsageRecord
is out of
/// allowed range.
///
///
///
/// For BatchMeterUsage
, if any of the records are outside of the allowed
/// range, the entire batch is not processed. You must remove invalid records and try
/// again.
///
///
/// REST API Reference for BatchMeterUsage Operation
BatchMeterUsageResponse BatchMeterUsage(BatchMeterUsageRequest request);
///
/// 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 in the AWS Marketplace Seller Guide.
///
///
///
/// Container for the necessary parameters to execute the BatchMeterUsage service method.
///
/// A cancellation token that can be used by other objects or threads to receive notice of cancellation.
///
///
/// The response from the BatchMeterUsage service method, as returned by AWSMarketplaceMetering.
///
/// The API is disabled in the Region.
///
///
/// An internal error has occurred. Retry your request. If the problem persists, post
/// a message with details on the AWS forums.
///
///
/// You have metered usage for a CustomerIdentifier
that does not exist.
///
///
/// The product code passed does not match the product code used for publishing the product.
///
///
/// The tag is invalid, or the number of tags is greater than 5.
///
///
/// The usage allocation objects are invalid, or the number of allocations is greater
/// than 500 for a single usage record.
///
///
/// The usage dimension does not match one of the UsageDimensions
associated
/// with products.
///
///
/// The calls to the API are throttled.
///
///
/// The timestamp
value passed in the UsageRecord
is out of
/// allowed range.
///
///
///
/// For BatchMeterUsage
, if any of the records are outside of the allowed
/// range, the entire batch is not processed. You must remove invalid records and try
/// again.
///
///
/// REST API Reference for BatchMeterUsage Operation
Task BatchMeterUsageAsync(BatchMeterUsageRequest request, CancellationToken cancellationToken = default(CancellationToken));
#endregion
#region MeterUsage
///
/// API to emit metering records. For identical requests, the API is idempotent. It simply
/// returns the metering record ID.
///
///
///
/// MeterUsage
is authenticated on the buyer's AWS account using credentials
/// from the EC2 instance, ECS task, or EKS pod.
///
///
///
/// MeterUsage
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).
///
///
///
/// 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.
///
///
/// Container for the necessary parameters to execute the MeterUsage service method.
///
/// The response from the MeterUsage service method, as returned by AWSMarketplaceMetering.
///
/// Exception thrown when the customer does not have a valid subscription for the product.
///
///
/// A metering record has already been emitted by the same EC2 instance, ECS task, or
/// EKS pod for the given {usageDimension
, timestamp
} with a
/// different usageQuantity
.
///
///
/// An internal error has occurred. Retry your request. If the problem persists, post
/// a message with details on the AWS forums.
///
///
/// The endpoint being called is in a AWS Region different from your EC2 instance, ECS
/// task, or EKS pod. The Region of the Metering Service endpoint and the AWS Region of
/// the resource must match.
///
///
/// The product code passed does not match the product code used for publishing the product.
///
///
/// The tag is invalid, or the number of tags is greater than 5.
///
///
/// The usage allocation objects are invalid, or the number of allocations is greater
/// than 500 for a single usage record.
///
///
/// The usage dimension does not match one of the UsageDimensions
associated
/// with products.
///
///
/// The calls to the API are throttled.
///
///
/// The timestamp
value passed in the UsageRecord
is out of
/// allowed range.
///
///
///
/// For BatchMeterUsage
, if any of the records are outside of the allowed
/// range, the entire batch is not processed. You must remove invalid records and try
/// again.
///
///
/// REST API Reference for MeterUsage Operation
MeterUsageResponse MeterUsage(MeterUsageRequest request);
///
/// API to emit metering records. For identical requests, the API is idempotent. It simply
/// returns the metering record ID.
///
///
///
/// MeterUsage
is authenticated on the buyer's AWS account using credentials
/// from the EC2 instance, ECS task, or EKS pod.
///
///
///
/// MeterUsage
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).
///
///
///
/// 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.
///
///
/// Container for the necessary parameters to execute the MeterUsage service method.
///
/// A cancellation token that can be used by other objects or threads to receive notice of cancellation.
///
///
/// The response from the MeterUsage service method, as returned by AWSMarketplaceMetering.
///
/// Exception thrown when the customer does not have a valid subscription for the product.
///
///
/// A metering record has already been emitted by the same EC2 instance, ECS task, or
/// EKS pod for the given {usageDimension
, timestamp
} with a
/// different usageQuantity
.
///
///
/// An internal error has occurred. Retry your request. If the problem persists, post
/// a message with details on the AWS forums.
///
///
/// The endpoint being called is in a AWS Region different from your EC2 instance, ECS
/// task, or EKS pod. The Region of the Metering Service endpoint and the AWS Region of
/// the resource must match.
///
///
/// The product code passed does not match the product code used for publishing the product.
///
///
/// The tag is invalid, or the number of tags is greater than 5.
///
///
/// The usage allocation objects are invalid, or the number of allocations is greater
/// than 500 for a single usage record.
///
///
/// The usage dimension does not match one of the UsageDimensions
associated
/// with products.
///
///
/// The calls to the API are throttled.
///
///
/// The timestamp
value passed in the UsageRecord
is out of
/// allowed range.
///
///
///
/// For BatchMeterUsage
, if any of the records are outside of the allowed
/// range, the entire batch is not processed. You must remove invalid records and try
/// again.
///
///
/// REST API Reference for MeterUsage Operation
Task MeterUsageAsync(MeterUsageRequest request, CancellationToken cancellationToken = default(CancellationToken));
#endregion
#region RegisterUsage
///
/// Paid container software products sold through AWS Marketplace must integrate with
/// the AWS Marketplace Metering Service and call the RegisterUsage
operation
/// for software entitlement and metering. Free and BYOL products for Amazon ECS or Amazon
/// EKS aren't required to call RegisterUsage
, but you may choose to do so
/// if you would like to receive usage data in your seller reports. The sections below
/// explain the behavior of RegisterUsage
. RegisterUsage
performs
/// two primary functions: metering and entitlement.
///
/// -
///
/// Entitlement:
RegisterUsage
allows you to verify that the customer
/// running your paid software is subscribed to your product on AWS Marketplace, enabling
/// you to guard against unauthorized use. Your container image that integrates with RegisterUsage
/// is only required to guard against unauthorized use at container startup, as such a
/// CustomerNotSubscribedException
or PlatformNotSupportedException
/// will only be thrown on the initial call to RegisterUsage
. Subsequent
/// calls from the same Amazon ECS task instance (e.g. task-id) or Amazon EKS pod will
/// not throw a CustomerNotSubscribedException
, even if the customer unsubscribes
/// while the Amazon ECS task or Amazon EKS pod is still running.
///
/// -
///
/// Metering:
RegisterUsage
meters software use per ECS task, per
/// hour, or per pod for Amazon EKS with usage prorated to the second. A minimum of 1
/// minute of usage applies to tasks that are short lived. For example, if a customer
/// has a 10 node Amazon ECS or Amazon EKS cluster and a service configured as a Daemon
/// Set, then Amazon ECS or Amazon EKS will launch a task on all 10 cluster nodes and
/// the customer will be charged: (10 * hourly_rate). Metering for software use is automatically
/// handled by the AWS Marketplace Metering Control Plane -- your software is not required
/// to perform any metering specific actions, other than call RegisterUsage
/// once for metering of software use to commence. The AWS Marketplace Metering Control
/// Plane will also continue to bill customers for running ECS tasks and Amazon EKS pods,
/// regardless of the customers subscription state, removing the need for your software
/// to perform entitlement checks at runtime.
///
///
///
/// Container for the necessary parameters to execute the RegisterUsage service method.
///
/// The response from the RegisterUsage service method, as returned by AWSMarketplaceMetering.
///
/// Exception thrown when the customer does not have a valid subscription for the product.
///
///
/// The API is disabled in the Region.
///
///
/// An internal error has occurred. Retry your request. If the problem persists, post
/// a message with details on the AWS forums.
///
///
/// The product code passed does not match the product code used for publishing the product.
///
///
/// Public Key version is invalid.
///
///
/// RegisterUsage
must be called in the same AWS Region the ECS task was
/// launched in. This prevents a container from hardcoding a Region (e.g. withRegion(“us-east-1”)
/// when calling RegisterUsage
.
///
///
/// AWS Marketplace does not support metering usage from the underlying platform. Currently,
/// Amazon ECS, Amazon EKS, and AWS Fargate are supported.
///
///
/// The calls to the API are throttled.
///
/// REST API Reference for RegisterUsage Operation
RegisterUsageResponse RegisterUsage(RegisterUsageRequest request);
///
/// Paid container software products sold through AWS Marketplace must integrate with
/// the AWS Marketplace Metering Service and call the RegisterUsage
operation
/// for software entitlement and metering. Free and BYOL products for Amazon ECS or Amazon
/// EKS aren't required to call RegisterUsage
, but you may choose to do so
/// if you would like to receive usage data in your seller reports. The sections below
/// explain the behavior of RegisterUsage
. RegisterUsage
performs
/// two primary functions: metering and entitlement.
///
/// -
///
/// Entitlement:
RegisterUsage
allows you to verify that the customer
/// running your paid software is subscribed to your product on AWS Marketplace, enabling
/// you to guard against unauthorized use. Your container image that integrates with RegisterUsage
/// is only required to guard against unauthorized use at container startup, as such a
/// CustomerNotSubscribedException
or PlatformNotSupportedException
/// will only be thrown on the initial call to RegisterUsage
. Subsequent
/// calls from the same Amazon ECS task instance (e.g. task-id) or Amazon EKS pod will
/// not throw a CustomerNotSubscribedException
, even if the customer unsubscribes
/// while the Amazon ECS task or Amazon EKS pod is still running.
///
/// -
///
/// Metering:
RegisterUsage
meters software use per ECS task, per
/// hour, or per pod for Amazon EKS with usage prorated to the second. A minimum of 1
/// minute of usage applies to tasks that are short lived. For example, if a customer
/// has a 10 node Amazon ECS or Amazon EKS cluster and a service configured as a Daemon
/// Set, then Amazon ECS or Amazon EKS will launch a task on all 10 cluster nodes and
/// the customer will be charged: (10 * hourly_rate). Metering for software use is automatically
/// handled by the AWS Marketplace Metering Control Plane -- your software is not required
/// to perform any metering specific actions, other than call RegisterUsage
/// once for metering of software use to commence. The AWS Marketplace Metering Control
/// Plane will also continue to bill customers for running ECS tasks and Amazon EKS pods,
/// regardless of the customers subscription state, removing the need for your software
/// to perform entitlement checks at runtime.
///
///
///
/// Container for the necessary parameters to execute the RegisterUsage service method.
///
/// A cancellation token that can be used by other objects or threads to receive notice of cancellation.
///
///
/// The response from the RegisterUsage service method, as returned by AWSMarketplaceMetering.
///
/// Exception thrown when the customer does not have a valid subscription for the product.
///
///
/// The API is disabled in the Region.
///
///
/// An internal error has occurred. Retry your request. If the problem persists, post
/// a message with details on the AWS forums.
///
///
/// The product code passed does not match the product code used for publishing the product.
///
///
/// Public Key version is invalid.
///
///
/// RegisterUsage
must be called in the same AWS Region the ECS task was
/// launched in. This prevents a container from hardcoding a Region (e.g. withRegion(“us-east-1”)
/// when calling RegisterUsage
.
///
///
/// AWS Marketplace does not support metering usage from the underlying platform. Currently,
/// Amazon ECS, Amazon EKS, and AWS Fargate are supported.
///
///
/// The calls to the API are throttled.
///
/// REST API Reference for RegisterUsage Operation
Task RegisterUsageAsync(RegisterUsageRequest request, CancellationToken cancellationToken = default(CancellationToken));
#endregion
#region ResolveCustomer
///
/// ResolveCustomer
is called by a SaaS application during the registration
/// process. When a buyer visits your website during the registration process, the buyer
/// submits a registration token through their browser. The registration token is resolved
/// through this API to obtain a CustomerIdentifier
along with the CustomerAWSAccountId
/// and ProductCode
.
///
///
///
/// The API needs to called from the seller account id used to publish the SaaS application
/// to successfully resolve the token.
///
///
///
/// For an example of using ResolveCustomer
, see
/// ResolveCustomer code example in the AWS Marketplace Seller Guide.
///
///
///
/// Container for the necessary parameters to execute the ResolveCustomer service method.
///
/// The response from the ResolveCustomer service method, as returned by AWSMarketplaceMetering.
///
/// The API is disabled in the Region.
///
///
/// The submitted registration token has expired. This can happen if the buyer's browser
/// takes too long to redirect to your page, the buyer has resubmitted the registration
/// token, or your application has held on to the registration token for too long. Your
/// SaaS registration website should redeem this token as soon as it is submitted by the
/// buyer's browser.
///
///
/// An internal error has occurred. Retry your request. If the problem persists, post
/// a message with details on the AWS forums.
///
///
/// Registration token is invalid.
///
///
/// The calls to the API are throttled.
///
/// REST API Reference for ResolveCustomer Operation
ResolveCustomerResponse ResolveCustomer(ResolveCustomerRequest request);
///
/// ResolveCustomer
is called by a SaaS application during the registration
/// process. When a buyer visits your website during the registration process, the buyer
/// submits a registration token through their browser. The registration token is resolved
/// through this API to obtain a CustomerIdentifier
along with the CustomerAWSAccountId
/// and ProductCode
.
///
///
///
/// The API needs to called from the seller account id used to publish the SaaS application
/// to successfully resolve the token.
///
///
///
/// For an example of using ResolveCustomer
, see
/// ResolveCustomer code example in the AWS Marketplace Seller Guide.
///
///
///
/// Container for the necessary parameters to execute the ResolveCustomer service method.
///
/// A cancellation token that can be used by other objects or threads to receive notice of cancellation.
///
///
/// The response from the ResolveCustomer service method, as returned by AWSMarketplaceMetering.
///
/// The API is disabled in the Region.
///
///
/// The submitted registration token has expired. This can happen if the buyer's browser
/// takes too long to redirect to your page, the buyer has resubmitted the registration
/// token, or your application has held on to the registration token for too long. Your
/// SaaS registration website should redeem this token as soon as it is submitted by the
/// buyer's browser.
///
///
/// An internal error has occurred. Retry your request. If the problem persists, post
/// a message with details on the AWS forums.
///
///
/// Registration token is invalid.
///
///
/// The calls to the API are throttled.
///
/// REST API Reference for ResolveCustomer Operation
Task ResolveCustomerAsync(ResolveCustomerRequest request, CancellationToken cancellationToken = default(CancellationToken));
#endregion
}
}