The AWS Marketplace API Reference was restructured. For more information about the supported API operations, see the AWS Marketplace API Reference.
Work with private offers using the AWS Marketplace APIs
You can use the AWS Marketplace Catalog API to automate tasks for working with offers.
You can create offers with the Catalog API for AMI, container, SaaS, machine learning, professional services, and AWS Data Exchange data products. For the rules that apply to offers for professional services products, see Create offers for professional services products.
While the product describes what is being sold in AWS Marketplace, the offer describes the terms and rules of how a product is purchased and consumed. AWS Marketplace products can have multiple offers sold by different sellers. Each AWS Marketplace offer, however, can only be created for one product. An offer contains a collection of agreement terms between two parties. The accepted offer terms are translated into an agreement as proof of a transaction.
There are two types of offers:
-
Private offers are for sellers and buyers to negotiate pricing. Sellers sign an end-user license agreement (EULA) for software purchases in AWS Marketplace. An offer is visible only to a specified buyer. For more information, see Private offers in the AWS Marketplace Seller Guide.
-
Public offers are for global purchasing programs. Sellers identify customers based on available programs and geographical locations, which makes the offer accessible only to specific customers.
An offer can originate in one of three ways:
-
Direct – The seller that owns the product creates the offer. For more information, see Create an offer.
-
From a resale authorization – An AWS Marketplace Channel Partner creates the offer using a selling authorization granted by an independent software vendor (ISV). For more information, see Create a CPPO.
-
From a subsidiary authorization – One of a seller's own AWS Marketplace seller accounts creates the offer using an authorization granted by the account that owns the product. For more information, see Create an offer using a subsidiary authorization.
In every case, the account that creates the offer is the seller of record on that offer. That account sets its own pricing, is charged AWS Marketplace fees on its own account, and receives disbursement to its own bank account.
See the following resources:
-
For working code examples, see Manage offers with API
in the AWS Marketplace seller workshop. -
For API request code examples, see Python
and Java examples in AWS Samples on GitHub. -
For a video on creating private offers, see Create a Private Offer Using the AWS Marketplace Catalog API
on YouTube. -
For a video on updating AMI pricing, see Update AMI Product Pricing Using the AWS Marketplace Catalog API
on YouTube.
The following topics describe how to use the Catalog API to create and update offers:
Create an offer
You can use the Catalog API to create a new offer in AWS Marketplace. If
your request processes successfully, the AWS Marketplace Catalog API creates a
Draft, which is an incomplete offer that's invisible to
buyers. To complete an offer, use the Update change type.
When the offer is complete, use the ReleaseOffer change
type to create and release it. Releasing an offer validates it and makes
it visible to buyers in AWS Marketplace.
To create a new offer for a product that your own account owns, call the
StartChangeSet API operation with the CreateOffer
change type, as shown in the following example. To create a new private offer for a
product that another of your organization's accounts has authorized you to sell, see
Create an offer using a subsidiary authorization.
Request Syntax
POST /StartChangeSet HTTP/1.1 Content-type: application/json { "Catalog": "AWSMarketplace", "ChangeSet": [ { "ChangeType": "CreateOffer", "Entity": { "Type": "Offer@1.0" }, "DetailsDocument": { "ProductId": "prod-ad8EXAMPLE51", "Name": "Test Offer", "OfferSetId": "offerset-b3f9EXAMPLE27" } } ] }
Provide information for the fields to add the CreateOffer change
type:
-
Entity (object) (required) – Your offer.
-
Type (string) (required) – The
Typeis alwaysOffer@1.0.
-
-
DetailsDocument (object) (required) – The JSON value of specifics of the request.
-
ProductId (string) (required) – The unique identifier of the product being offered.
-
Name (string) (optional) – The name associated with the offer for better readability to you and your customers. It is displayed as a part of the Agreement information as well.
-
OfferSetId (string) (optional) – The ID of the offer set to associate this offer with. Only specify this field when creating an offer that will be part of an offer set. If OfferSetId is not provided, an individual offer will be created that can be purchased standalone. Note that specifying an OfferSetId during offer creation only indicates your intent to associate the offer with that offer set. To complete the association, you must use the AssociateOffers change type after the offer is created.
-
Response Syntax
A change set is created for your request. The response to this request gives you
the ChangeSetId and ChangeSetArn for the change set and
looks like the following.
{ "ChangeSetId": "example123456789012abcdef", "ChangeSetArn": "arn:aws:aws-marketplace:us-east-1:123456789012:AWSMarketplace/ChangeSet/example123456789012abcdef" }
The change request is added to a queue and processed.
You can check the status of the request through the AWS Marketplace Management Portal, or directly through
Catalog API using the DescribeChangeSet API operation.
If the Status is SUCCEEDED, then a new
OfferId is generated.
The response looks like the following.
{ "ChangeSetId": "example123456789012abcdef", "ChangeSetArn": "arn:aws:aws-marketplace:us-east-1:123456789012:AWSMarketplace/ChangeSet/example123456789012abcdef", "ChangeSetName": "Submitted by 123456789012", "StartTime": "2021-05-27T22:21:26Z", "EndTime": "2021-05-27T22:32:19Z", "Status": "SUCCEEDED", "ChangeSet": [ { "ChangeType": "CreateOffer", "Entity": { "Type": "Offer@1.0", "Identifier": "offer-123456789" }, "DetailsDocument": { "ProductId": "prod-ad8EXAMPLE51", "Name": "Test Offer" }, "ErrorDetailList": [] } ] }
Synchronous Validations
The following schema validations are specific to CreateOffer actions
in the AWS Marketplace Catalog API. These validations are performed when you call
StartChangeSet. If the request doesn't meet the following
requirements, it will fail with an HTTP response.
| Input field | Validation rule | HTTP code |
|---|---|---|
| ProductId |
Required Length must be between 1 and 50 characters Must not contain illegal characters (\, <, >) |
422 |
| ProductId | Required User must be authorized to create offer for the given product |
403 |
| ProductId | Required Must be an existing product in the catalog or being created in the same change set |
404 |
| Name |
Optional Length must be between 1 and 150 characters Must not contain illegal characters (\, <, >) |
422 |
Asynchronous Errors
The following errors are specific to CreateOffer actions in the
AWS Marketplace Catalog API. These errors are returned when you call DescribeChangeSet
after a change set is processing. For more information about using
DescribeChangeSet to get the status of a change request, see Working with change sets.
| Error code | Error message |
|---|---|
| INCOMPATIBLE_PRODUCT | Use an active product in |
| INCOMPATIBLE_PRODUCT | Managing offers for your chosen product type isn't
currently supported in the AWS Marketplace Catalog API. |
| INCOMPATIBLE_PRODUCT | Managing offers for the product isn't currently
supported in the AWS Marketplace Catalog API. |
| INCOMPATIBLE_PRODUCT | OfferSetId isn't supported in offers for the product. |
| INCOMPATIBLE_PRODUCT | CreateOffer change type can't be invoked to create an
offer for the product. Use
CreateOfferUsingResaleAuthorization change
type. |
Create an offer using a subsidiary authorization
You can use the Catalog API to create a private offer for a product that your organization's primary account has authorized you to sell through a subsidiary authorization. To learn more about subsidiary authorizations, see Work with subsidiary authorizations using the AWS Marketplace APIs.
Creating the offer takes two steps: find the subsidiary authorization for the
product you want to sell, then use its ID to create the offer. As with
CreateOffer, the offer is created in Draft state.
Use the Update change types on this page to complete it, then use
the ReleaseOffer change type to publish it.
Step 1: Get your subsidiary authorization ID
To create the offer, you need the ID of an Active subsidiary
authorization that targets your account. To find it, call the ListEntities API operation with EntityType
set to SubsidiaryAuthorization. When you call it from a subsidiary
account, the response contains only the active authorizations shared with your
account. For the full list of filters and sort options, see List your subsidiary authorizations.
POST /ListEntities HTTP/1.1 Content-type: application/json { "Catalog": "AWSMarketplace", "EntityType": "SubsidiaryAuthorization", "EntityTypeFilters": { "SubsidiaryAuthorizationFilters": { "Status": { "ValueList": ["Active"] } } } }
The response looks like the following.
{ "EntitySummaryList": [ { "Name": "Test Subsidiary Authorization", "EntityType": "SubsidiaryAuthorization", "EntityId": "subauthz-1a2bexample34", "EntityArn": "arn:aws:aws-marketplace:us-east-1:111122223333:AWSMarketplace/SubsidiaryAuthorization/subauthz-1a2bexample34", "LastModifiedDate": "2026-10-26T21:21:07Z", "SubsidiaryAuthorizationSummary": { "Status": "Active", "ResourceId": "prod-3c4dexample12", "ResourceName": "Test SaaS Product", "SubsidiaryAccountId": "444455556666", "CreatedDate": "2026-10-26T21:15:47.88Z" } } ], "NextToken": "abcdabcd-wxyz-pqrs-lmno-defgdefgdefg" }
Find the entry whose
SubsidiaryAuthorizationSummary.ResourceId is the product you
want to sell, and use its EntityId as the
SubsidiaryAuthorizationId in step 2.
Step 2: Create the offer
To create a new private offer using a subsidiary authorization, call the
StartChangeSet API operation with the
CreateOfferUsingSubsidiaryAuthorization change type and the
SubsidiaryAuthorizationId from step 1, as shown in the
following example.
Request Syntax
POST /StartChangeSet HTTP/1.1 Content-type: application/json { "Catalog": "AWSMarketplace", "ChangeSet": [ { "ChangeType": "CreateOfferUsingSubsidiaryAuthorization", "ChangeName": "TestingSubsidiaryOfferCreation", "Entity": { "Type": "Offer@1.0" }, "DetailsDocument": { "SubsidiaryAuthorizationId": "subauthz-1a2bexample34", "Name": "Test Subsidiary Offer" } } ] }
Provide information for the fields to add the
CreateOfferUsingSubsidiaryAuthorization change type:
-
Entity (object) (required) – Your offer.
-
Type (string) (required) – The
Typeis alwaysOffer@1.0.
-
-
DetailsDocument (object) (required) – Specifics of the request.
-
SubsidiaryAuthorizationId (string) (required) – The entity ID of the subsidiary authorization that grants you permission to sell the product. Must match the pattern
subauthz-followed by 13 alphanumeric characters, for examplesubauthz-1a2bexample34. -
Name (string) (optional) – The display name of the offer. Up to 150 characters.
-
OfferSetId (string) (optional) – The offer set to associate the offer with. Must match the pattern
offerset-followed by 13 alphanumeric characters, for exampleofferset-b3f9EXAMPLE27. The offer set must be owned by your account.
-
You don't supply the product ID or the seller of record. AWS Marketplace derives the product from the subsidiary authorization and sets the seller of record to your account.
Note
Description isn't collected on this change type, which
matches the CreateOffer change type.
Response Syntax
A change set is created for your request. The response gives you the
ChangeSetId and ChangeSetArn for the change set
and looks like the following.
{ "ChangeSetId": "example444455556666abcdef", "ChangeSetArn": "arn:aws:aws-marketplace:us-east-1:444455556666:AWSMarketplace/ChangeSet/example444455556666abcdef" }
The change request is added to a queue and processed. You can check the status
of the request through the AWS Marketplace Management Portal, or directly through the Catalog API using
the DescribeChangeSet API operation. If the
Status is SUCCEEDED, a new OfferId is
generated and the offer is in Draft state.
Note
AWS Marketplace re-validates the offer against the subsidiary authorization when you
publish it with ReleaseOffer. If the primary account revoked or
narrowed the authorization after you created the offer, the release fails.
For more information, see Publish an offer.
Synchronous Validations
The following schema validations are specific to
CreateOfferUsingSubsidiaryAuthorization actions in the
AWS Marketplace Catalog API. These validations are performed when you call
StartChangeSet. If the request doesn't meet the following
requirements, it fails with an HTTP response.
| Input field | Validation rule | HTTP code |
|---|---|---|
| SubsidiaryAuthorizationId | Required Must match
|
422 |
| Name | Optional Up to 150 characters Can't begin with whitespace |
422 |
| OfferSetId | Optional Must match
Must be owned by the calling account |
422 |
If your account isn't permitted to use the referenced subsidiary
authorization, the request is denied with AccessDeniedException.
Other failures are returned asynchronously through
DescribeChangeSet, with Status set to
FAILED, FailureCode set to
CLIENT_ERROR, and a reason code in
ErrorDetailList.
Create a replacement offer
You can use the Catalog API to create a replacement offer (also known as an agreement-based offer) in AWS Marketplace.
If your request has been processed successfully, AWS Marketplace Catalog API will have an offer in
Draft state generated for you, which is an incomplete offer and not
visible to buyers on AWS Marketplace. You will use Update change types to
complete the offer. After the offer is completed, you will use ReleaseOffer change type to complete offer creation process
and release the offer, which will validate the entire offer and make your offer
visible to buyers on AWS Marketplace. From there, the buyer has the option to accept the
replacement offer or to continue to operate under the original agreement.
To create a replacement offer for an agreement on a product that your own account
owns, call the StartChangeSet API operation with the
CreateReplacementOffer change type and provide a pre-existing
agreement ID, as shown in the following example. To create a replacement offer for
an agreement on an offer that you created from a subsidiary authorization, see Create a replacement offer using a subsidiary authorization.
Request Syntax
POST /StartChangeSet HTTP/1.1 Content-type: application/json { "Catalog": "AWSMarketplace", "ChangeSet": [ { "ChangeType": "CreateReplacementOffer", "Entity": { "Type": "Offer@1.0" }, "DetailsDocument": { "AgreementId": "agmt-12345", "Name": "Offer name" } } ] }
Provide information for the fields to add the CreateReplacementOffer
change type:
-
Entity (object) (required) – Your offer.
-
Type (string) (required) – The
Typeis alwaysOffer@1.0.
-
-
DetailsDocument (object) (required) – The JSON value of specifics of the request.
-
AgreementId (string) (required) – The unique identifier for the current agreement to be replaced.
-
Name (string) (optional) – The name associated with the offer for better readability to you and your customers. It will be displayed as part of Agreement information as well.
-
Response Syntax
A change set is created for your request. The response to this request gives you
the ChangeSetId and ChangeSetArn for the change set and
looks like the following.
{ "ChangeSetId": "example123456789012abcdef", "ChangeSetArn": "arn:aws:aws-marketplace:us-east-1:123456789012:AWSMarketplace/ChangeSet/example123456789012abcdef" }
The change request is added to a queue and processed.
You can check the status of the request through the AWS Marketplace Management Portal, or directly through
Catalog API using the DescribeChangeSet API operation.
Synchronous Validations
The following schema validations are specific to
CreateReplacementOffer actions in the AWS Marketplace Catalog API. These validations
are performed when you call StartChangeSet. If the request doesn't meet
the following requirements, it will fail with an HTTP response.
| Input field | Validation rule | HTTP Code |
|---|---|---|
| AgreementId | Required Length must be between 1 and 64 characters |
422 |
| AgreementId | Required User must be authorized to create offer for the given agreement |
403 |
| Name | Optional Length must be between 1 and 150 characters Must not contain invalid characters (\, <, >) |
422 |
Asynchronous Errors
The following errors are specific to CreateReplacementOffer actions
in the AWS Marketplace Catalog API. These errors are returned when you call
DescribeChangeSet after a change set is processing. For more
information about using DescribeChangeSet to get the status of a change
request, see Working with change sets.
| Error code | Error message |
|---|---|
| INCOMPATIBLE_PRODUCT | Replacement offers aren't supported for the
product. |
| INCOMPATIBLE_AGREEMENT | CreateReplacementOffer change type can't be invoked to
create a replacement offer for the agreement. Use
CreateReplacementOfferUsingResaleAuthorization change
type. |
Create a replacement offer using a subsidiary authorization
You can use the Catalog API to issue refreshed terms to a buyer who has already accepted an offer you created from a subsidiary authorization, for example at renewal.
The replacement offer is a new offer created against the buyer's existing purchase agreement. The prior offer isn't dropped, replaced, or modified. Both offers exist at the same time, and the buyer chooses which one to act on.
Step 1: Get your subsidiary authorization ID and agreement ID
You need two IDs:
-
SubsidiaryAuthorizationId – The ID of the
Activesubsidiary authorization that you created the prior offer under. To find it, callListEntitiesas described in step 1 of Create an offer using a subsidiary authorization. -
AgreementId – The ID of the buyer's existing agreement for the prior offer.
Step 2: Create the replacement offer
To create a replacement offer using a subsidiary authorization, call the
StartChangeSet API operation with the
CreateReplacementOfferUsingSubsidiaryAuthorization change type,
as shown in the following example.
Request Syntax
POST /StartChangeSet HTTP/1.1 Content-type: application/json { "Catalog": "AWSMarketplace", "ChangeSet": [ { "ChangeType": "CreateReplacementOfferUsingSubsidiaryAuthorization", "ChangeName": "TestingSubsidiaryReplacementOfferCreation", "Entity": { "Type": "Offer@1.0" }, "DetailsDocument": { "SubsidiaryAuthorizationId": "subauthz-1a2bexample34", "AgreementId": "agmt-pqrs4567pqrs4567pqrs4567", "Name": "Test Subsidiary Replacement Offer" } } ] }
Provide information for the fields to add the
CreateReplacementOfferUsingSubsidiaryAuthorization change
type:
-
Entity (object) (required) – Your offer.
-
Type (string) (required) – The
Typeis alwaysOffer@1.0.
-
-
DetailsDocument (object) (required) – Specifics of the request.
-
SubsidiaryAuthorizationId (string) (required) – The entity ID of the subsidiary authorization that grants you permission to sell the product. Must match the pattern
subauthz-followed by 13 alphanumeric characters. -
AgreementId (string) (required) – The buyer's purchase agreement ID for the prior offer. Must begin with
agmt-and be up to 64 characters. -
Name (string) (optional) – The display name of the offer. Up to 150 characters.
-
OfferSetId isn't accepted on this change type, which matches
CreateReplacementOfferUsingResaleAuthorization.
Prices on the new offer are seeded from the prior offer. You can change them
with UpdatePricingTerms within the authorization's dimension
set.
Response Syntax
A change set is created for your request. The response gives you the
ChangeSetId and ChangeSetArn for the change set
and looks like the following.
{ "ChangeSetId": "example444455556666abcdef", "ChangeSetArn": "arn:aws:aws-marketplace:us-east-1:444455556666:AWSMarketplace/ChangeSet/example444455556666abcdef" }
The change request is added to a queue and processed. You can check the status
of the request using the DescribeChangeSet API operation.
Validation
AWS Marketplace resolves AgreementId to the prior offer and checks
that:
-
The proposed terms are within the scope of the current subsidiary authorization, not the scope it had when the prior offer was created.
-
The terms that the prior agreement fixes, which are the buyer and the product, match.
-
You created the prior offer under the same subsidiary authorization.
If any check fails, the change set fails with a reason code in
ErrorDetailList and the prior offer is unchanged.
Synchronous Validations
The following schema validations are specific to
CreateReplacementOfferUsingSubsidiaryAuthorization actions in
the AWS Marketplace Catalog API. These validations are performed when you call
StartChangeSet. If the request doesn't meet the following
requirements, it fails with an HTTP response.
| Input field | Validation rule | HTTP code |
|---|---|---|
| SubsidiaryAuthorizationId | Required Must match
|
422 |
| AgreementId | Required Must match
Up to 64 characters |
422 |
| Name | Optional Up to 150 characters |
422 |
Update offer information
You can use the Catalog API to update the offer information in AWS Marketplace.
To update the offer information, call the StartChangeSet API
operation with the UpdateInformation change type, as shown in the
following example. All other information will remain unchanged.
Request Syntax
POST /StartChangeSet HTTP/1.1 Content-type: application/json { "Catalog": "AWSMarketplace", "ChangeSet": [ { "ChangeType": "UpdateInformation", "Entity": { "Type": "Offer@1.0", "Identifier": "offer-123456789" }, "DetailsDocument": { "Name": "New offer name", "Description": "New offer description", "PreExistingAgreement": { "AcquisitionChannel": "External", "PricingModel": "Contract" } } } ] }
Provide information for the fields to add the UpdateInformation
change type:
-
Entity (object) (required) – Your offer.
-
Type (string) (required) – The
Typeis alwaysOffer@1.0. -
Identifier (string) (required) – Your offer ID. For more information, see Identifier.
-
-
DetailsDocument (object) (required) – The JSON value of specifics of the request.
-
Name (string) (optional) – Name associated with the offer for better readability. It is displayed as part of agreement information.
-
Description (string) (optional) – A free-form text that is meant to be used only by you and will never be visible to buyers.
-
PreExistingAgreement (object) (optional) – Determines if this offer is a renewal for an existing agreement with an existing customer for the same underlying product. The existing agreement can be within or outside AWS Marketplace. AWS may audit and verify your offer is a renewal. If AWS is unable to verify your offer, then AWS may revoke the offer and entitlements from your customer.
-
AcquisitionChannel (string) (required) – Indicates if the existing agreement was signed outside AWS Marketplace or within AWS Marketplace.
Possible values:
External,AwsMarketplace -
PricingModel (string) (required) – Indicates which pricing model the existing agreement uses.
Possible values:
Contract,Usage,Byol,Free
-
-
Response Syntax
A change set is created for your request. The response to this request gives you
the ChangeSetId and ChangeSetArn for the change set and
looks like the following.
{ "ChangeSetId": "example123456789012abcdef", "ChangeSetArn": "arn:aws:aws-marketplace:us-east-1:123456789012:AWSMarketplace/ChangeSet/example123456789012abcdef" }
The change request is added to a queue and processed. This includes validating information to ensure that it meets the AWS Marketplace guidelines. The validation process can take a few minutes.
You can check the status of the request through the AWS Marketplace Management Portal, or directly through
Catalog API using the DescribeChangeSet API operation.
Synchronous Validations
The following schema validations are specific to UpdateInformation
actions in the AWS Marketplace Catalog API. These validations are performed when you call
StartChangeSet. If the request doesn't meet the following
requirements, it will fail with an HTTP response.
| Input field | Validation rule | HTTP code |
|---|---|---|
| Properties | At least one of the following properties must be provided | 422 |
| Name |
Optional Length must be between 1 and 150 characters Must not contain illegal characters (\, <, >) |
422 |
| Description |
Optional Length must be between 1 and 255 characters |
422 |
| PreExistingAgreement | Optional Can be null to remove
|
422 |
| PreExistingAgreement.PricingModel |
Required Can be one of these values: [ |
422 |
| PreExistingAgreement.AcquisitionChannel |
Required Can be one of these values: [ |
422 |
Asynchronous Errors
The following errors are specific to UpdateInformation actions in the
AWS Marketplace Catalog API. These errors are returned when you call DescribeChangeSet
after a change set is processing. For more information about using
DescribeChangeSet to get the status of a change request, see Working with change sets.
| Error code | Error message |
|---|---|
| INCOMPATIBLE_PRE_EXISTING_AGREEMENT | PreExistingAgreement can't be changed after the offer
is released. |
Update targeting configuration
You can use the Catalog API to update the targeting configuration of your offer in AWS Marketplace.
All existing targeting options that aren't included in the latest request and will be removed from the offer.
Note
An offer can optionally include PositiveTargeting or
NegativeTargeting, but not both.
Positive Targeting options:
-
Country codes only – Creates a public offer available to buyers in the specified countries.
-
Buyer accounts only – Creates a private offer targeted to specific AWS accounts.
-
Both country codes and buyer accounts – Creates a private offer where targeted accounts can only accept the offer if they are located in one of the specified countries.
Negative Targeting options:
-
Country codes – Excludes buyers from the specified countries. This creates a public offer available to all countries except those listed.
To update the targeting configuration of your offer, call the
StartChangeSet API operation with the UpdateTargeting
change type, as shown in the following example.
Request Syntax
POST /StartChangeSet HTTP/1.1 Content-type: application/json { "Catalog": "AWSMarketplace", "ChangeSet": [ { "ChangeType": "UpdateTargeting", "Entity": { "Type": "Offer@1.0", "Identifier": "offer-123456789" }, "DetailsDocument": { "PositiveTargeting": { "CountryCodes": [ "US", "CA" ], "BuyerAccounts": [ "111122223333" ] }, "NegativeTargeting": { "CountryCodes": [ "XX" ] } } } ] }
Provide information for the fields to add the UpdateTargeting change
type:
-
Entity (object) (required) – Your offer.
-
Type (string) (required) – The
Typeis alwaysOffer@1.0. -
Identifier (string) (required) – Your offer ID. For more information, see Identifier.
-
-
DetailsDocument (object) (required) – The JSON value of specifics of the request.
-
PositiveTargeting (object) (optional) – Positive targeting defines the criteria which any buyer's profile should fulfill in order to be allowed to access the offer. This field is optional, but at least one targeting option should be provided when this field is present.
-
CountryCodes (array of strings) (optional) – List as option for allowing targeting based on country. If the intention isn't to target the offer to a country, this field should be omitted. If it's present, the list must contain at least one country code. Each element in this list should be a valid 2-letter country code, using this format: ISO 3166-1 alpha-2.
-
BuyerAccounts (array of strings) (optional) – List as an option to allow targeting based on AWS accounts (also known as Private Offer). If the intention is to not target the offer to an AWS account, this field should be omitted.
-
-
NegativeTargeting (object) (optional) – Negative targeting defines the criteria which any customer's profile should fulfill to be restricted to access the offer. Although this field is optional, at least one targeting option should be provided when this field is present.
-
CountryCodes (array of strings) (required) – List as option for allowing targeting based on country. If the intention isn't to target the offer to a specific country, then this field should be omitted. If it's present, the list must contain at least one country code. Each element in this list should be a valid 2-letter country code using this format: ISO 3166-1 alpha-2.
-
-
Response Syntax
A change set is created for your request. The response to this request gives you
the ChangeSetId and ChangeSetArn for the change set and
looks like the following.
{ "ChangeSetId": "example123456789012abcdef", "ChangeSetArn": "arn:aws:aws-marketplace:us-east-1:123456789012:AWSMarketplace/ChangeSet/example123456789012abcdef" }
The change request is added to a queue and processed. This includes validating information to ensure that it meets the AWS Marketplace guidelines. The validation process can take a few minutes.
You can check the status of the request through the AWS Marketplace Management Portal, or directly through
Catalog API using the DescribeChangeSet API operation.
Synchronous Validations
The following schema validations are specific to UpdateTargeting
actions in the AWS Marketplace Catalog API. These validations are performed when you call
StartChangeSet. If the request doesn't meet the following
requirements, it will fail with an HTTP response.
| Input field | Validation rule | HTTP code |
|---|---|---|
| NegativeTargeting |
Optional Can have either one of the following:
[ |
422 |
| NegativeTargeting.CountryCodes |
Optional List size must be between 1 and 244 Country codes must be valid (ISO 3166-1 alpha-2) |
422 |
| PositiveTargeting |
Optional Can have either one of the following:
[ |
422 |
| PositiveTargeting.BuyerAccounts |
Optional List size must be between 1 and 26 AWS account IDs must be in valid format (12-digit number) |
422 |
| PositiveTargeting.CountryCodes |
Optional List size must be between 1 and 244 Country codes must be valid (ISO 3166-1 alpha-2) |
422 |
Asynchronous Errors
The following errors are specific to UpdateTargeting actions in the
AWS Marketplace Catalog API. These errors are returned when you call DescribeChangeSet
after a change set is processing. For more information about using
DescribeChangeSet to get the status of a change request, see Working with change sets.
| Error code | Error message |
|---|---|
| INVALID_BUYER_ACCOUNTS | Provide valid buyer accounts. Invalid accounts:
[x]. |
| INVALID_COUNTRY_CODES | Provide supported country codes. |
| INVALID_TARGETING | Use either negative or positive targeting on the same
attribute. |
| INCOMPATIBLE_PRODUCT | Country-based targeting isn't supported for the
product. |
| INCOMPATIBLE_RESALE_AUTHORIZATION | Provide BuyerAccounts that are compatible with the
ResaleAuthorization. |
| INCOMPATIBLE_TARGETING | The requested change can't be performed after the
offer is released. |
| INCOMPATIBLE_TARGETING | The requested change can't be performed after the
offer is expired. |
| INCOMPATIBLE_TARGETING | Targeting can't be updated on a replacement offer. If
the buyer isn't associated with the provided AgreementId, then
create a new private offer by providing an AgreementId
associated with the buyer. |
| TOO_MANY_BUYER_ACCOUNTS | Provide BuyerAccounts within the allowed
limits. |
| INCOMPATIBLE_TARGETING | BuyerAccounts can't be removed after the offer is
released. |
| INCOMPATIBLE_TARGETING | BuyerAccounts can't be added after the offer is
released. |
| MISSING_COUNTRY_CODES | Provide PositiveTargeting with CountryCodes:
[x]. |
| INCOMPATIBLE_COUNTRY_CODES | Provide CountryCodes that are
compatible. |
| INCOMPATIBLE_BUYER_ACCOUNTS | Provide BuyerAccounts that are compatible with the
agreement. |
Note
If you created the offer from a subsidiary authorization, the buyer targeting, geography, and offer type you set must be within the scope of the current subsidiary authorization. AWS Marketplace evaluates buyer eligibility against the buyer's tax address. If the primary account has narrowed the authorization since you created the offer, a value that was valid before can now be rejected.
Update refund policy
You can use the Catalog API to update the refund policy of your offer in AWS Marketplace.
This change doesn't affect existing agreements. The support terms that aren't included in the latest request will be removed from the offer.
To update the refund policy, call the StartChangeSet API operation
with the UpdateSupportTerms change type, as shown in the following
example.
Request Syntax
POST /StartChangeSet HTTP/1.1 Content-type: application/json { "Catalog": "AWSMarketplace", "ChangeSet": [ { "ChangeType": "UpdateSupportTerms", "Entity": { "Type": "Offer@1.0", "Identifier": "offer-123456789" }, "DetailsDocument": { "Terms": [ { "Type": "SupportTerm", "RefundPolicy": "Updated refund policy description" } ] } } ] }
Provide information for the fields to add the UpdateSupportTerms
change type:
-
Entity (object) (required) – Your offer.
-
Type (string) (required) – The
Typeis alwaysOffer@1.0. -
Identifier (string) (required) – Your offer ID. For more information, see Identifier.
-
-
DetailsDocument (object) (required) – The JSON value of specifics of the request.
-
Terms (array of structures) (required) – List of support terms that you would like to update. Accepted support terms are:
-
SupportTerm (object) (required) – Defines the customer support available for the acceptors when they purchase the software.
-
Type (string) (required) – Type of the term being updated. This is the object value:
"SupportTerm". -
RefundPolicy (string) (required) – Free-text field about the refund policy description that will be shown to customers as is on the website and console.
-
-
-
Response Syntax
A change set is created for your request. The response to this request gives you
the ChangeSetId and ChangeSetArn for the change set and
looks like the following.
{ "ChangeSetId": "example123456789012abcdef", "ChangeSetArn": "arn:aws:aws-marketplace:us-east-1:123456789012:AWSMarketplace/ChangeSet/example123456789012abcdef" }
The change request is added to a queue and processed. This includes validating information to ensure that it meets the AWS Marketplace guidelines. The validation process can take a few minutes.
You can check the status of the request through the AWS Marketplace Management Portal, or directly through
Catalog API using the DescribeChangeSet API operation.
Synchronous Validations
The following schema validations are specific to UpdateSupportTerms
actions in the AWS Marketplace Catalog API. These validations are performed when you call
StartChangeSet. If the request doesn't meet the following
requirements, it will fail with an HTTP response.
| Input field | Validation rule | HTTP code |
|---|---|---|
| Terms |
Required |
422 |
| Terms[].RefundPolicy |
Required Length must be between 1 and 500 Cannot lead or end with spaces |
422 |
| Terms[].Type | Required Can only be |
422 |
Asynchronous Errors
The following errors are specific to UpdateSupportTerms actions in
the AWS Marketplace Catalog API. These errors are returned when you call
DescribeChangeSet after a change set is processing. For more
information about using DescribeChangeSet to get the status of a change
request, see Working with change sets.
| Error code | Error message |
|---|---|
| INCOMPATIBLE_PRODUCT | SupportTerm isn't supported in private offers for the
product. |
| INCOMPATIBLE_TERMS | SupportTerm isn't supported for free trial
offers. |
| INCOMPATIBLE_TERMS | The requested change can't be performed after the
offer is released. |
| INCOMPATIBLE_TERMS | The requested change can't be performed after the
offer is expired. |
Update legal resources
You can use the Catalog API to replace the existing legal documents, such as an end user license agreement (EULA). The legal terms that aren't included in the latest request will be removed from the offer.
To update legal resources of your offer, call the StartChangeSet API
operation with the UpdateLegalTerms change type, as shown in the
following example.
Request Syntax
POST /StartChangeSet HTTP/1.1 Content-type: application/json { "Catalog": "AWSMarketplace", "ChangeSet": [ { "ChangeType": "UpdateLegalTerms", "Entity": { "Type": "Offer@1.0", "Identifier": "offer-123456789" }, "DetailsDocument": { "Terms": [ { "Type": "LegalTerm", "Documents": [ { "Type": "CustomEula", "Url": "https://s3.amazonaws.com/EULA/custom-eula-1234.txt" } ] } ] } } ] }
Provide information for the fields to add the UpdateLegalTerms change
type:
-
Entity (object) (required) – Your offer.
-
Type (string) (required) – The
Typeis alwaysOffer@1.0. -
Identifier (string) (required) – Your offer ID. For more information, see Identifier.
-
-
DetailsDocument (object) (required) – The JSON value of specifics of the request.
-
LegalTerm (object) (required) – Defines the list of text agreements to be proposed to the acceptors. One example of such an agreement is the end user license agreement (EULA).
-
Type (string) (required) – Type of the term being updated. This is the object value:
"LegalTerm". -
Documents (array of structures) (required) – List of references to legal resources to be proposed to the buyers. One example of such a resource is the end user license agreement (EULA). Each reference is made up of a
Typeand aURL:-
Type (string) (required) – Type of document. Available document types are:
-
CustomEula – A custom EULA provided by you as seller. Either a public S3 URL or a presigned URL is required for this document type.
-
StandardEula – Standard Contract For AWS Marketplace (SCMP). For more information about SCMP, see the AWS Marketplace Seller Guide. You don't provide a URL for this type because it is managed by AWS Marketplace.
-
-
Url (string) (conditionally required) – A URL to the legal document for buyers to read. Required when
Typeis one of the following [CustomEula]. -
Version (string) (conditionally required) – Version of standard contracts provided by AWS Marketplace. Required when
Typeis [StandardEula]. Available version:-
2022-07-14 – This version of the Standard Contract for AWS Marketplace is available from this Amazon S3 bucket: https://s3.amazonaws.com/aws-mp-standard-contracts/Standard-Contact-for-AWS-Marketplace-2022-07-14.pdf
-
-
-
-
Response Syntax
A change set is created for your request. The response to this request gives you
the ChangeSetId and ChangeSetArn for the change set and
looks like the following.
{ "ChangeSetId": "example123456789012abcdef", "ChangeSetArn": "arn:aws:aws-marketplace:us-east-1:123456789012:AWSMarketplace/ChangeSet/example123456789012abcdef" }
The change request is added to a queue and processed. This includes validating information to ensure that it meets the AWS Marketplace guidelines. The validation process can take a few minutes.
You can check the status of the request through the AWS Marketplace Management Portal, or directly through
Catalog API using the DescribeChangeSet API operation.
Synchronous Validations
The following schema validations are specific to UpdateLegalTerms
actions in the AWS Marketplace Catalog API. These validations are performed when you call
StartChangeSet. If the request doesn't meet the following
requirements, it will fail with an HTTP response.
| Input field | Validation rule | HTTP code |
|---|---|---|
| Terms |
Required Only List size must be 1 |
422 |
| Terms[].Type | Required Can only be |
422 |
| Terms[].LegalTerm.Documents |
Required |
422 |
| Terms[].LegalTerm.Documents[].Type |
Required Allowed values:
|
422 |
| Terms[].LegalTerm.Documents[].Url | Required and must be a valid URL when Type is
CustomEula |
422 |
| Terms[].LegalTerm.Documents[].Version | Required and must be a valid Version when Type is
StandardEulaValid |
422 |
Asynchronous Errors
The following errors are specific to UpdateLegalTerms actions in the
AWS Marketplace Catalog API. These errors are returned when you call DescribeChangeSet
after a change set is processing. For more information about using
DescribeChangeSet to get the status of a change request, see Working with change sets.
| Error code | Error message |
|---|---|
| INCOMPATIBLE_TERMS | The requested change can't be performed after the
offer is released. |
| INCOMPATIBLE_TERMS | The requested change can't be performed after the
offer is expired. |
| INVALID_LEGAL_DOCUMENTS | Provide URLs for legal documents stored in accessible
S3 buckets. |
| INVALID_LEGAL_DOCUMENTS | Only the most recent version of StandardEula is
supported for new offers. |
| INVALID_LEGAL_DOCUMENTS | Provide legal documents in the supported file
formats. |
| INVALID_LEGAL_DOCUMENTS | Provide legal documents using the supported document
types. |
| LIMIT_EXCEEDED_LEGAL_DOCUMENT_SIZE | Provide legal documents within the allowed size
limits. |
| INVALID_LEGAL_DOCUMENTS | LegalTerm contains password-protected document(s).
Provide accessible documents in
LegalTerm. |
| INVALID_LEGAL_DOCUMENTS | LegalTerm contains invalid PDF document(s). Provide
accessible documents in LegalTerm. |
Update pricing
You can use the Catalog API to replace the existing pricing terms completely. The pricing terms that aren't included in the latest request will be removed from the offer.
To update pricing terms for your offer, call the StartChangeSet API
operation with the UpdatePricingTerms change type, as shown in the
following example.
Note
The following request syntax combines multiple examples. This combination
doesn't work as a valid payload. For example, a Terms array can't
include both the term type FixedUpfrontPricingTerm and the term
type ConfigurableUpfrontPricingTerm. For examples of how different
term types are combined for different pricing use cases, see Manage offers with API
Note
For SaaS products with Free pricing model, you must include either UsageBasedPricingTerm or ConfigurableUpfrontPricingTerm with at least one RateCard (dimension) where all prices are set to $0.00. This requirement is unique to SaaS products.
Request Syntax
POST /StartChangeSet HTTP/1.1 Content-type: application/json { "Catalog": "AWSMarketplace", "ChangeSet": [ { "ChangeType": "UpdatePricingTerms", "Entity": { "Type": "Offer@1.0", "Identifier": "offer-123456789" }, "DetailsDocument": { "PricingModel": "Usage", "Terms": [ { "Type": "UsageBasedPricingTerm", "CurrencyCode": "USD", "RateCards": [ { "RateCard": [ { "DimensionKey": "m3.large", "Price": "0.10" }, { "DimensionKey": "m4.xlarge", "Price": "0.20" } ] } ] }, { "Type": "ConfigurableUpfrontPricingTerm", "CurrencyCode": "USD", "RateCards": [ { "Selector": { "Type": "Duration", "Value": "P365D" }, "RateCard": [ { "DimensionKey": "m3.large", "Price": "300" }, { "DimensionKey": "m4.xlarge", "Price": "400" } ], "Constraints": { "MultipleDimensionSelection": "Allowed", "QuantityConfiguration": "Allowed" } } ] }, { "Type": "ByolPricingTerm" }, { "Type": "RecurringPaymentTerm", "CurrencyCode": "USD", "BillingPeriod": "Monthly", "Price": "100.0" }, { "Type": "FixedUpfrontPricingTerm", "CurrencyCode": "USD", "Price": "200.00", "Grants": [ { "DimensionKey": "Users", "MaxQuantity": 10 } ] }, { "Type": "FreeTrialPricingTerm", "Duration": "P30D", "Grants": [ { "DimensionKey": "m3.xlarge", "MaxQuantity": 10 }, { "DimensionKey": "m4.xlarge", "MaxQuantity": 10 } ] } ] } } ] }
Provide information for the fields to add the UpdatePricingTerms
change type:
-
Entity (object) (required) – Your offer.
-
Type (string) (required) – The
Typeis alwaysOffer@1.0. -
Identifier (string) (required) – Your offer ID. For more information, see Identifier.
-
-
DetailsDocument (object) (required) – The JSON value of specifics of the request.
-
PricingModel (string) (required) – Pricing model for your offer. Possible values for pricing model are:
-
Usage – Usage-based pricing model where buyers will be billed for their usage of your product.
-
Contract – Contract-based pricing model where buyers are either billed in advance for the use of your product, or offered a flexible payment schedule. Buyers can also pay for an additional usage above their contract.
-
Free – Free pricing model where buyers will not be charged for usage of product. When using this pricing model no pricing terms or payment schedule term can have non-zero rates.
-
Byol – Byol pricing model where buyers will bring their own license for usage of the product.
-
-
Terms (array of structures) (required) – List of pricing terms that you want to update. Supported pricing terms are:
-
FreeTrialPricingTerm (object) – Defines a short-term free pricing model where the buyers are not charged anything within a specified limit.
-
Type (string) – Type of the term being updated. This is the object value:
"FreeTrialPricingTerm". -
Duration (string) – Duration of the free trial period.
-
Grants (array of structures) – Entitlements that will be granted to the acceptor of a free trial as part of an agreement execution.
-
DimensionKey (string) – Unique dimension key defined in the product document. Dimensions represent categories of capacity in a product and are specified when the product is listed in AWS Marketplace.
-
MaxQuantity (integer) (optional) – Maximum amount of capacity that the buyer can be entitled to the given dimension of the product. If
MaxQuantityis not provided, the buyer will be able to use an unlimited amount of the given dimension.
-
-
-
UsageBasedPricingTerm (object) – Defines a pay-as-you-go (PAYG) pricing model where the customers are charged based on product usage.
-
Type (string) (required) – Category of the term being updated. This is the object value:
UsageBasedPricingTerm. -
CurrencyCode (string) – Defines the currency for prices mentioned in this term. Currently, only USD is supported.
-
RateCards (array of structures) – List of rate cards.
-
RateCard (array of structures) – A rate card defines the per-unit rates for the product dimensions.
-
DimensionKey (string) –Dimension that the given entitlement applies. Dimensions represent categories of capacity in a product and are specified when the product is listed in AWS Marketplace.
-
Price (string) – Per-unit price for the product dimension that will be used for calculating the amount to be charged to the buyer.
-
-
-
-
ConfigurableUpfrontPricingTerm (object) – Defines pre-paid payment model which allows buyers to configure the entitlements that they want to purchase and the duration of the entitlements. You can update the list of rates for each contract duration and entitlements for each dimension.
-
Type (string) (required) – Type of the term being updated. This is the object value:
ConfigurableUpfrontPricingTerm. -
CurrencyCode (string) (required) – Defines the currency for the prices mentioned in this term. For public offers, only USD is supported. For private offers, USD, AUD, EUR, GBP, and JPY are supported.
-
RateCards (array of structures) (required) – List of rate cards.
-
Selector (object) (required) – Selector is used to differentiate between the mutually exclusive rate cards in the same pricing term, to be selected by the buyer.
-
Type (string) (required) – Category of Selector. At this time, only
Durationis supported. -
Value (string) (required) – Contract duration. This field supports the ISO 8601 format.
-
-
RateCard (array of structures) (required) – A rate card defines the per-unit rates for the product dimensions.
-
DimensionKey (string) (required) – Unique dimension key defined in the product document. Dimensions represent categories of capacity in a product and are specified when the product is listed in AWS Marketplace.
-
Price (string) (required) – Per-unit price for the product dimension which will be used for calculating the amount to be charged to the buyer.
-
-
Constraints (object) (required) – Defines constraints on how the term can be configured by acceptors.
Note
Currently, MultipleDimensionSelection and QuantityConfiguration values need to be same.
-
MultipleDimensionSelection (string) (required) – Determines if buyers are allowed to select multiple dimensions in the rate card. Possible values are
AllowedandDisallowed. -
QuantityConfiguration (string) (required) – Determines if acceptors are allowed to configure quantity for each dimension in rate card. Possible values are
AllowedandDisallowed.
-
-
-
-
ByolPricingTerm (object) – Enables you and your customers to move your existing agreements to AWS Marketplace. The customer won't be charged for product usage in AWS Marketplace because they already paid for the product outside of AWS Marketplace.
-
Type (string) (required) – Type of the term being updated. This is the object value:
ByolPricingTerm.
-
-
RecurringPaymentTerm (object) – Defines a pricing model where customers are charged a fixed recurring price at the end of each billing period.
-
Type (string) (required) – Type of the term being updated. This is the object value:
RecurringPaymentTerm. -
BillingPeriod (string) (required) – Defines the recurrence at which buyers are charged. Only
Monthlyis supported today. -
Price (string) (required) – Amount charged to the buyer every billing period.
-
CurrencyCode (string) (required) – Defines the currency for the prices mentioned in this term. Currently, only
USDis supported.
-
-
FixedUpfrontPricingTerm (object) – Defines a pre-paid pricing model where the customers are charged a fixed upfront amount.
-
Type (string) (required) – Type of the term being updated. This is the object value:
FixedUpfrontPricingTerm. -
CurrencyCode (string) (required) – Defines the currency for the prices mentioned in this term. For public offers, only USD is supported. For private offers, USD, AUD, EUR, GBP, and JPY are supported.
-
Price (string) (required) – Fixed amount to be charged to the customer when this term is accepted.
-
Grants (array of structures) (required) – Entitlements that will be granted to the acceptor of fixed upfront as part of agreement execution.
-
DimensionKey (string) (required) – Unique dimension key defined in the product document. Dimensions represent categories of capacity in a product and are specified when the product is listed in AWS Marketplace.
-
MaxQuantity (integer) (required) – Maximum amount of capacity that the buyer can be entitled to the given dimension of the product. If
MaxQuantityis not provided, the buyer will be able to use an unlimited amount of the given dimension.
-
-
Duration (string) (optional) – Defines the duration that the term remains active. This field supports the ISO 8601 format.
-
-
-
Response Syntax
A change set is created for your request. The response to this request gives you
the ChangeSetId and ChangeSetArn for the change set and
looks like the following.
{ "ChangeSetId": "example123456789012abcdef", "ChangeSetArn": "arn:aws:aws-marketplace:us-east-1:123456789012:AWSMarketplace/ChangeSet/example123456789012abcdef" }
The change request is added to a queue and processed. This includes validating information to ensure that it meets the AWS Marketplace guidelines. The validation process can take a few minutes.
You can check the status of the request through the AWS Marketplace Management Portal, or directly through
Catalog API using the DescribeChangeSet API operation.
Synchronous Validations
The following schema validations are specific to UpdatePricingTerms
actions in the AWS Marketplace Catalog API. These validations are performed when you call
StartChangeSet. If the request doesn't meet the following
requirements, it will fail with an HTTP response.
| Input field | Validation rule | HTTP |
|---|---|---|
| PricingModel | Required Allowed pricing models: ["Byol", "Free", "Usage", "Contract"] |
422 |
| Terms | Required Allowed Terms: ["ConfigurableUpfrontPricingTerm", "ByolPricingTerm", "FreeTrialPricingTerm", "UsageBasedPricingTerm", "RecurringPaymentTerm", "FixedUpfrontPricingTerm"] |
422 |
| Terms[].ByolPricingTerm | Required | 422 |
| Terms[].ByolPricingTerm.Type | Required Can only be "ByolPricingTerm" |
422 |
| Terms[].ConfigurableUpfrontPricingTerm | Required | 422 |
| Terms[].ConfigurableUpfrontPricingTerm.Type | Required Can only be "ConfigurableUpfrontPricingTerm" |
422 |
| Terms[].ConfigurableUpfrontPricingTerm.CurrencyCode | Required Supported currencies: ["USD", "AUD", "EUR", "GBP", "JPY"] |
422 |
| Terms[].ConfigurableUpfrontPricingTerm.RateCards | Required List size must be between 1 and 5 |
422 |
| Terms[].ConfigurableUpfrontPricingTerm.RateCards[].Constraints | Required | 422 |
| Terms[].ConfigurableUpfrontPricingTerm.RateCards[].Contraints.MultipleDimensionSelection | Required Allowed values: ["Allowed", "Disallowed"] |
422 |
| Terms[].ConfigurableUpfrontPricingTerm.RateCards[].Contraints.QuantityConfiguration | Required Allowed values: ["Allowed", "Disallowed"] |
422 |
| Terms[].ConfigurableUpfrontPricingTerm.RateCards[].RateCard | Required List size must be between 1 and 800 |
422 |
| Terms[].ConfigurableUpfrontPricingTerm.RateCards[].RateCard[].DimensionKey | Required Length must be between 1 and 100 |
422 |
| Terms[].ConfigurableUpfrontPricingTerm.RateCards[].RateCard[].Price | Required Data type is "String" Non-negative decimals with up to 3 decimal places supported |
422 |
| Terms[].ConfigurableUpfrontPricingTerm.RateCards[].Selector | Required | 422 |
| Terms[].ConfigurableUpfrontPricingTerm.RateCards[].Selector.Type | Required Allowed values: ["Duration"] |
422 |
| Terms[].ConfigurableUpfrontPricingTerm.RateCards[].Selector.Value | Required Expected format per Selector type: ISO 8601 duration |
422 |
| Terms[].FixedUpfrontPricingTerm | Required | 422 |
| Terms[].FixedUpfrontPricingTerm.Type | Required Can only be "FixedUpfrontPricingTerm" |
422 |
| Terms[].FixedUpfrontPricingTerm.CurrencyCode | Required Supported currencies: ["USD", "AUD", "EUR", "GBP", "JPY"] |
422 |
| Terms[].FixedUpfrontPricingTerm.Duration | Required Expected format per Selector type: ISO 8601 duration |
422 |
| Terms[].FixedUpfrontPricingTerm.Grants | Required List size must be between 1 and 200 |
422 |
| Terms[].FixedUpfrontPricingTerm.Grants[].DimensionKey | Required Length must be between 1 and 100 |
422 |
| Terms[].FixedUpfrontPricingTerm.Grants[].MaxQuantity | RequiredValue must be greater than 0 | 422 |
| Terms[].FixedUpfrontPricingTerm.Price | Required Data type is "String" Non-negative decimals with up to 3 decimal places supported |
422 |
| Terms[].FreeTrialPricingTerm | Required | 422 |
| Terms[].FreeTrialPricingTerm.Type | Required Can only be "FreeTrialPricingTerm" |
422 |
| Terms[].FreeTrialPricingTerm.Duration | Required Expected format: ISO 8601 duration |
422 |
| Terms[].FreeTrialPricingTerm.Grants | Required List size must be between 1 and 800 |
422 |
| Terms[].FreeTrialPricingTerm.Grants[].DimensionKey | Required Length must be between 1 and 100 |
422 |
| Terms[].FreeTrialPricingTerm.Grants[].MaxQuantity | Optional Value must be greater than 0 |
422 |
| Terms[].RecurringPaymentTerm | Required | 422 |
| Terms[].RecurringPaymentTerm.Type | Required Can only be "RecurringPaymentTerm" |
422 |
| Terms[].RecurringPaymentTerm.BillingPeriod | Required Allowed values: ["Monthly"] |
422 |
| Terms[].RecurringPaymentTerm.CurrencyCode | Required Supported currencies: ["USD"] |
422 |
| Terms[].RecurringPaymentTerm.Price | Required Data type is "String" Non-negative decimals with up to 3 decimal places supported |
422 |
| Terms[].UsageBasedPricingTerm | Required | 422 |
| Terms[].UsageBasedPricingTerm.Type | Required Can only be "UsagedBasedPricingTerm" |
422 |
| Terms[].UsageBasedPricingTerm.CurrencyCode | Required Supported currencies: ["USD"] |
422 |
| Terms[].UsageBasedPricingTerm.RateCards | Required Must be size of 1 |
422 |
| Terms[].UsageBasedPricingTerm.RateCards[].RateCard | Required List size must be between 1 and 800 |
422 |
| Terms[].UsageBasedPricingTerm.RateCards[].RateCard[].DimensionKey | Required Length must be between 1 and 100 |
422 |
| Terms[].UsageBasedPricingTerm.RateCards[].RateCard[].Price | Required Data type is "String" Non-negative decimals with up to 8 decimal places supported |
422 |
Asynchronous Errors
The following errors are specific to UpdatePricingTerms actions in
the AWS Marketplace Catalog API. These errors are returned when you call
DescribeChangeSet after a change set is processing. For more
information about using DescribeChangeSet to get the status of a change
request, see Working with change sets.
| Error code | Error message |
|---|---|
| DUPLICATE_DIMENSION_KEYS | Provide Grants with a unique list of dimension keys in
[x]. |
| DUPLICATE_DIMENSION_KEYS | Provide RateCard with a unique list of dimension keys
in [x]. |
| DUPLICATE_SELECTORS | Provide a unique list of Selectors in
ConfigurableUpfrontPricingTerm. |
| DUPLICATE_TERM_TYPES | Provide a unique list of term
types. |
| INCOMPATIBLE_AGREEMENT | The following terms can't be removed from the
replacement offer: [x, y, z]. |
| INCOMPATIBLE_AGREEMENT | The following terms can't be added to the replacement
offer: [x, y, z]. |
| INCOMPATIBLE_CURRENCY_CODE | CurrencyCode can't be changed after the offer is
released. |
| INCOMPATIBLE_PAYMENT_SETTINGS | Update your payment settings to be compatible with the
CurrencyCode. |
| INCOMPATIBLE_PRODUCT | Usage pricing model isn't supported for the
product. |
| INCOMPATIBLE_PRODUCT | Contract pricing model isn't supported for the
product. |
| INCOMPATIBLE_PRODUCT | Byol pricing model isn't supported for the
product. |
| INCOMPATIBLE_PRODUCT | Free pricing model isn't supported for the
product. |
| INCOMPATIBLE_PRODUCT | [x] isn't supported in an offer for the
product. |
| INCOMPATIBLE_PRODUCT | Provided payment and pricing terms are
incompatible. |
| INCOMPATIBLE_PRODUCT | Use existing, available dimensions in the product in
[x]. |
| INCOMPATIBLE_PRODUCT | FreeTrialPricingTerm as the offer's only pricing term
isn't supported for the product. |
| INCOMPATIBLE_PRODUCT | The following terms aren't supported for the product:
[x,y,z]. |
| INCOMPATIBLE_PRODUCT | Replacement offers are only supported for contract
pricing model. |
| INCOMPATIBLE_PRODUCT | Provide pricing term(s) that are compatible with the
product dimensions. Incompatible pricing terms:
[x,y,z]. |
| INCOMPATIBLE_RATE_CARD_CONSTRAINTS | Set MultipleDimensionSelection and
QuantityConfiguration to Allowed in
ConfigurableUpfrontPricingTerm for usage pricing
model. |
| INCOMPATIBLE_RATE_CARD_CONSTRAINTS | Set MultipleDimensionSelection and
QuantityConfiguration to Disallowed in
ConfigurableUpfrontPricingTerm for usage pricing
model. |
| INCOMPATIBLE_RATE_CARD_CONSTRAINTS | QuantityConfiguration in
ConfigurableUpfrontPricingTerm can't be changed after the offer
is released. |
| INCOMPATIBLE_RATE_CARD_CONSTRAINTS | MultipleDimensionSelection in
ConfigurableUpfrontPricingTerm can't be changed after the offer
is released. |
| INCOMPATIBLE_RATES | Set all charge amounts and prices to zero (0) when
using Free pricing model. |
| INCOMPATIBLE_RATES | Only zero (0) prices are allowed in
UsageBasedPricingTerm for a free trial offer for the
product. |
| INCOMPATIBLE_RESALE_AUTHORIZATION | Provide the same CurrencyCode that is specified in the
ResaleAuthorization. |
| INCOMPATIBLE_RESALE_AUTHORIZATION | Ensure Duration in FixedUpfrontPricingTerm matches
duration specified in the
ResaleAuthorization. |
| INCOMPATIBLE_RESALE_AUTHORIZATION | Provide term(s) that are compatible with the
ResaleAuthorization. Incompatible terms: [x, y,
z]. |
| INCOMPATIBLE_SELECTOR_DURATION | Durations aren't allowed to be removed from rate cards
in ConfigurableUpfrontPricingTerm after the offer
released. |
| INCOMPATIBLE_SELLER_VERIFICATION | Complete all required seller verification
processes. |
| INCOMPATIBLE_TERMS | [x] isn't supported together with the following terms:
[y,z]. |
| INCOMPATIBLE_TERMS | The following terms can't be added after the offer is
released: [x,y,z]. |
| INCOMPATIBLE_TERMS | The following terms can't be removed after the offer
is released: [x,y,z]. |
| INCOMPATIBLE_TERMS | [x] isn't supported for private
offers. |
| INCOMPATIBLE_TERMS | The following terms aren't supported with
FreeTrialPricingTerm that grants unlimited usage:
[x,y,z]. |
| INCOMPATIBLE_TERMS | The following terms aren't supported with
FreeTrialPricingTerm for the product:
[x,y,z]. |
| INCOMPATIBLE_TERMS | Provide zero (0) price for FixedUpfrontPricingTerm
when the offer contains a
PaymentScheduleTerm. |
| INCOMPATIBLE_TERMS | The following terms aren't compatible with the
PricingModel: [x,y,z]. |
| INCOMPATIBLE_TERMS | FixedUpfrontPricingTerm isn't supported when
MarkupPercentage is greater than zero (0). |
| INCOMPATIBLE_TERMS | The requested change can't be performed after the
offer is released. |
| INCOMPATIBLE_TERMS | The requested change can't be performed after the
offer is expired. |
| INVALID_AGREEMENT_DURATION | Provide duration between [x] and [y]
months. |
| INVALID_AGREEMENT_DURATION | Ensure duration granularity is at the day level for
metered dimensions. |
| INVALID_CURRENCY_CODE | Provide a supported CurrencyCode. |
| INVALID_CURRENCY_CODE | Provide the same CurrencyCode across all pricing and
payment terms. |
| INVALID_CURRENCY_CODE | Provide a supported CurrencyCode. |
| INVALID_CURRENCY_CODE | Provide the same CurrencyCode across all pricing and
payment terms. |
| INVALID_DURATION | Ensure Duration in FreeTrialPricingTerm is within the
allowed range. |
| INVALID_DURATION | Provide Duration in FixedUpfrontPricingTerm that
matches the duration between AgreementStartDate and
AgreementEndDate. |
| INVALID_DURATION | Provide duration between [x] and [y]
months. |
| INVALID_DURATION | Ensure duration granularity is at the day level for
metered dimensions. |
| INVALID_GRANTS | Provide the same MaxQuantity for all Grants in
FreeTrialPricingTerm. |
| INVALID_GRANTS | Provide Grants for all available metered dimensions in
FreeTrialPricingTerm. |
| INVALID_GRANTS | The combination of Dimensions in grants is invalid in
FixedUpfrontPricingTerm for the product. |
| INVALID_GRANTS | The combination of Dimensions in grants is invalid in
FreeTrialPricingTerm for the product. |
| INVALID_GRANTS | FixedUpfrontPricingTerm with MaxQuantity is not supported
for this product. |
| INVALID_PRICE_CHANGE | [x] can't be updated until [y] because you have
requested a price increase in the past 120 days. To cancel your
previous price increase request or for more information, contact
the AWS Marketplace Managed Catalog Operations Team. |
| INVALID_PRICE_CHANGE | Price increase and dimension addition in [x] isn't
supported in the same request. Add dimensions
first. |
| INVALID_PRICE_CHANGE | Price increase and decrease in UsageBasedPricingTerm
isn't supported in the same request. Decrease prices
first. |
| INVALID_PRICE_CHANGE | Price increase in RecurringPaymentTerm and price
decrease in UsageBasedPricingTerm isn't supported in the same
request. Decrease prices first. |
| INVALID_PRICE_CHANGE | Price decrease in RecurringPaymentTerm and price
increase in UsageBasedPricingTerm isn't supported in the same
request. Decrease prices first. |
| INVALID_RATE_CARD | ConfigurableUpfrontPricingTerm is missing one or
more-dimension keys for duration [x]. Provide prices for the
same set of dimension keys for all
durations. |
| INVALID_RATE_CARD | Provide a rate card for only metered dimensions in
UsageBasedPricingTerm. |
| INVALID_RATE_CARD | Rates can't be removed from [x]. Provide prices for
all dimensions in the existing rate card. |
| INVALID_RATE_CARD | Provide dimensions that have the same unit in
[x]. |
| INVALID_RATE_CARD | Provide either all metered or all entitled dimensions
in [x]. |
| INVALID_RATE_CARD | Provide only entitled dimensions in
[x]. |
| INVALID_RATE_CARD | Provide usage based rates for all available metered
dimensions in UsageBasedPricingTerm. |
| INVALID_RATE_CARD | Provide usage based rates for all free trial
dimensions. |
| INVALID_RATE_CARD | Provide prices with up to 8 decimal places in
UsageBasedPricingTerm. |
| INVALID_RATE_CARD | The combination of Dimensions in rate card is invalid in
UsageBasedPricingTerm for the product. |
| INVALID_SELECTOR_DURATION_VALUE | Provide duration between [x] and [y]
months. |
| INVALID_SELECTOR_DURATION_VALUE | Ensure duration granularity is at the day level for
metered dimensions. |
| INVALID_SELECTOR_DURATION_VALUE | Ensure Duration in ConfigurableUpfrontPricingTerm is
within the allowed range. |
| INVALID_SELECTOR_DURATION_VALUE | Provide one or more supported contract
durations. |
| INVALID_SELECTOR_DURATION_VALUE | Provide one or more supported contract durations or a
single custom duration. |
| INVALID_SELECTOR_DURATION_VALUE | Provide Duration in ConfigurableUpfrontPricingTerm
that matches the duration between AgreementStartDate and
AgreementEndDate. |
| MISSING_DURATION | Provide Duration in
FixedUpfrontPricingTerm. |
| MISSING_MANDATORY_TERMS | FixedUpfrontPricingTerm is only supported when paired
with ByolPricingTerm or PaymentScheduleTerm. |
| MISSING_MANDATORY_TERMS | Provide at least one of [x,y,z]. |
| MISSING_MANDATORY_TERMS | Provide a ByolPricingTerm when using Byol pricing
model. |
| TOO_MANY_GRANTS | Provide up to [x] grants in [y]. |
| TOO_MANY_RATE_CARDS | Only one rate card in ConfigurableUpfrontPricingTerm
is allowed for the product. |
| TOO_MANY_RATE_CARDS | Up to [x] rate cards are allowed in
ConfigurableUpfrontPricingTerm for the
product. |
| TOO_MANY_RATES | Provide RateCards within the allowed limits in
ConfigurableUpfrontPricingTerm. |
| TOO_MANY_RATES | Provide RateCards within the allowed limits in
UsageBasedPricingTerm. |
| INCOMPATIBLE_RATE_CARD_CONSTRAINTS | Set both MultipleDimensionSelection and
QuantityConfiguration to the same value (Allowed or Disallowed)
in ConfigurableUpfrontPricingTerm. |
| INCOMPATIBLE_RATE_CARD_CONSTRAINTS | Provide the same constraints for all rate cards in
ConfigurableUpfrontPricingTerm. |
| INVALID_UPDATE_REQUEST | [x] can't be updated. To request pricing change or for
more information, contact the AWS Marketplace Managed Catalog Operations
Team. |
| INCOMPATIBLE_PRICING_MODEL | PricingModel can't change from [x] to
[y]. |
| INVALID_GRANTS | MaxQuantity for the FreeTrialPricingTerm is limited for
the product. Provide a MaxQuantity less than or equal to [x].
For more information, contact the AWS Marketplace Managed Catalog
Operations Team. |
| INVALID_GRANTS | Provide MaxQuantity for all Grants in
FixedUpfrontPricingTerm. |
| INVALID_GRANTS | MaxQuantity isn't supported in
FixedUpfrontPricingTerm for the product. |
| INCOMPATIBLE_RESALE_AUTHORIZATION | Ensure Grants in FixedUpfrontPricingTerm matches
RateCards specified in the
ResaleAuthorization. |
Note
If you created the offer from a subsidiary authorization, the dimensions you price must be a subset of the dimensions covered by the authorization, and the currency must be one that your account's AWS Marketplace payment setup supports. The authorization carries no pricing terms, so you set prices freely within those constraints.
Update the discoverability of the offer
You can use the Catalog API to control the discoverability of your offer in AWS Marketplace.
You can either choose to set a specific date in the future to restrict the
discoverability of your offer or in the past to expire your offer.
The
UpdateAvailability change type doesn't affect existing
agreements.
Note
-
You can use the
UpdateAvailabilitychange type on a private offer that has already been published (also known as released). If buyers have already accepted the private offer, those existing agreements aren't affected. -
When modifying the
AvailabilityEndDateof an existing private offer, the constraints of the agreement duration must be adhered to. If it's not, include an additionalUpdateValidityTermschange type in this change set to modify the agreement duration to adhere to the new expiration. TheUpdateValidityTermschange type can be used on a private offer that is either released or not yet released. -
When modifying the
AvailabilityEndDateof an existing private offer, the constraints of the payment schedule must be adhered to. If it's not and the private offer is not yet released, include an additionalUpdatePaymentScheduleTermschange type in this change set to modify the payment schedule to adhere to the new expiration. If the private offer is already released, you can only make changes to theAvailabilityEndDateas long as the new date adheres to the constraints of the payment schedule.
To control the discoverability of your offer, call the StartChangeSet
API operation with the UpdateAvailability change type, as shown in the
following example.
Request Syntax
POST /StartChangeSet HTTP/1.1 Content-type: application/json { "Catalog": "AWSMarketplace", "ChangeSet": [ { "ChangeType": "UpdateAvailability", "Entity": { "Type": "Offer@1.0", "Identifier": "offer-123456789" }, "DetailsDocument": { "AvailabilityEndDate": "2024-05-31" } } ] }
Provide information for the fields to add the UpdateAvailability
change type:
-
Entity (object) (required) – Your offer.
-
Type (string) (required) – The
Typeis alwaysOffer@1.0. -
Identifier (string) (required) – Your offer ID. For more information, see Identifier.
-
-
DetailsDocument (object) (required) – The JSON value of specifics of the request.
-
AvailabilityEndDate (string) (required) – This is the date until when the offer is discoverable and purchasable in AWS Marketplace. You can choose to set a specific date in the future to restrict the availability or in the past to expire the offer. Dates are represented in
YYYY-MM-DDformat.
-
A change set is created for your request. The response to this request gives you the ID and ARN for the change set and looks like the following.
Response Syntax
{ "ChangeSetId": "example123456789012abcdef", "ChangeSetArn": "arn:aws:aws-marketplace:us-east-1:123456789012:AWSMarketplace/ChangeSet/example123456789012abcdef" }
The change request is added to a queue and processed. It includes validating
information to ensure that it meets the AWS Marketplace guidelines. The validation process can
take a few minutes. You can check the status of the request through the AWS Marketplace Management Portal,
or in the Catalog API with the DescribeChangeSet action.
Synchronous Validations
The following schema validations are specific to UpdateAvailability
actions in the AWS Marketplace Catalog API. These validations are performed when you call
StartChangeSet. If the request doesn't meet the following
requirements, it will fail with an HTTP response.
| Input field | Validation rule | HTTP code |
|---|---|---|
| AvailabilityEndDate |
Required Format: "YYYY-MM-DD" |
422 |
Asynchronous Errors
The following errors are specific to UpdateAvailability actions in
the AWS Marketplace Catalog API. These errors are returned when you call
DescribeChangeSet after a change set is processing. For more
details about using DescribeChangeSet to get the status of a change
request, see Working with change sets.
| Error code | Error message |
|---|---|
| INVALID_AVAILABILITY_END_DATE | AvailabilityEndDate isn't supported for public
offers. |
| INVALID_AVAILABILITY_END_DATE | Provide a future
AvailabilityEndDate. |
| INVALID_AVAILABILITY_END_DATE | Provide an AvailabilityEndDate that is before
AgreementEndDate. |
| MISSING_AVAILABILITY_END_DATE | Provide an AvailabilityEndDate that is before the
agreement's end date. |
Define the expiration date of agreements created using the offer
You can use the Catalog API to define the expiration date details of agreements created using the offer in AWS Marketplace.
This change type doesn't affect existing agreements.
Note
You can
use the UpdateValidityTerms change type on a private offer that has
already been published (also known as released). If buyers
have already accepted the private offer, those existing agreements aren't
affected.
For
AMI-based and container-based products, if your private offer pricing terms include a term type that has a Duration
(for example, the term types FixedUpfrontPricingTerm or
ConfigurableUpfrontPricingTerm), your
AgreementDuration set in this change type must be greater than
the following: the number of days from today to the expiration of the private offer plus the number of days set in the
Duration of those term types. This is because after a buyer
accepts the private offer and the agreement is created, they can optionally
purchase additional entitlements specified in those term types until the private
offer expires. Furthermore, all additional entitlements must end before the
agreement does. For example, if the buyer accepts the private offer on the first
available day and then purchases entitlements on the last available day, those
entitlements must not end after the agreement end date.
To define the expiration date details of agreements created using the offer, call
the StartChangeSet API operation with the
UpdateValidityTerms change type, as shown in the following example.
Request Syntax
POST /StartChangeSet HTTP/1.1 Content-type: application/json { "Catalog": "AWSMarketplace", "ChangeSet": [ { "ChangeType": "UpdateValidityTerms", "Entity": { "Type": "Offer@1.0", "Identifier": "offer-123456789" }, "DetailsDocument": { "Terms": [ { "Type": "ValidityTerm", "AgreementDuration": "P12M", "AgreementStartDate": "2021-08-01", "AgreementEndDate": "2022-08-01" } ] } } ] }
Provide information for the fields to add the UpdateValidityTerms
change type:
-
Entity (object) (required) – Your offer.
-
Type (string) (required) – The
Typeis alwaysOffer@1.0. -
Identifier (string) (required) – Your offer ID. For more information, see Identifier.
-
-
DetailsDocument (object) (required) – The JSON value of specifics of the request.
-
Terms (array of structures) – List of validity terms that you want to update. Supported validity terms are:
-
ValidityTerm (object) – Defines the conditions that will keep an agreement, created from this offer, valid.
-
Type (string) – Category of the term being updated.
ValidityTerm -
AgreementDuration (string) – Defines the duration that the agreement remains active. If
AgreementStartDateisn't provided, agreement duration is relative to the agreement signature time. The duration is represented in the ISO_8601 format. -
AgreementStartDate (string) – Defines the date when agreement starts.
AgreementStartDateis represented inYYYY-MM-DDformat. The agreement starts at 00:00:00.000 UTC on the date provided. IfAgreementStartDateisn't provided, agreement start date is determined based on agreement signature time. -
AgreementEndDate (string) – Defines the date when the agreement ends. The
AgreementEndDateis represented inYYYY-MM-DDformat. The agreement ends at 23:59:59.999 UTC on the date provided. IfAgreementEndDateisn't provided, the agreement end date is determined by the validity of individual terms.
-
-
-
Response Syntax
A change set is created for your request. The response to this request gives you
the ChangeSetId and ChangeSetArn for the change set and
looks like the following.
{ "ChangeSetId": "example123456789012abcdef", "ChangeSetArn": "arn:aws:aws-marketplace:us-east-1:123456789012:AWSMarketplace/ChangeSet/example123456789012abcdef" }
The change request is added to a queue and processed. This includes validating information to ensure that it meets the AWS Marketplace guidelines. The validation process can take a few minutes.
You can check the status of the request through the AWS Marketplace Management Portal, or directly through
Catalog API using the DescribeChangeSet API operation.
Synchronous Validations
The following schema validations are specific to UpdateValidityTerms
actions in the AWS Marketplace Catalog API. These validations are performed when you call
StartChangeSet. If the request doesn't meet the following
requirements, it will fail with an HTTP response.
| Input field | Validation rule | HTTP code |
|---|---|---|
| Terms |
Required |
422 |
| Terms[].Type |
Required Can only be |
422 |
| Terms[].AgreementDuration |
Optional Expected format per Selector type: ISO 8601 duration Can be stand alone or paired with
|
422 |
| Terms[].AgreementEndDate |
Optional Date must be formatted like |
422 |
| Terms[].AgreementStartDate |
Optional Date must be formatted like Can only be paired with |
422 |
Asynchronous Errors
The following errors are specific to UpdateValidityTerms actions in
the AWS Marketplace Catalog API. These errors are returned when you call
DescribeChangeSet after a change set is processing. For more
information about using DescribeChangeSet to get the status of a change
request, see Working with change sets.
| Error code | Error message |
|---|---|
| INCOMPATIBLE_AGREEMENT | AgreementStartDate can't be in the future when the
current agreement to be replaced isn't future
dated. |
| INCOMPATIBLE_AGREEMENT_END_DATE | AgreementEndDate can't be updated after the offer is
released. |
| INCOMPATIBLE_AGREEMENT_START_DATE | AgreementStartDate can't be updated after the offer is
released. |
| INCOMPATIBLE_PRODUCT | AgreementStartDate in the future isn't
supported. |
| INCOMPATIBLE_RESALE_AUTHORIZATION | Ensure the duration between AgreementStartDate and
AgreementEndDate is compatible with the
ResaleAuthorization. |
| INCOMPATIBLE_RESALE_AUTHORIZATION | Ensure AgreementStartDate is compatible with the
ResaleAuthorization. |
| INCOMPATIBLE_RESALE_AUTHORIZATION | Ensure AgreementEndDate is compatible with the
ResaleAuthorization. |
| INCOMPATIBLE_RESALE_AUTHORIZATION | Ensure the duration between AgreementStartDate and
AgreementEndDate is compatible with the
ResaleAuthorization. |
| INCOMPATIBLE_RESALE_AUTHORIZATION | Ensure AgreementDuration matches duration specified in
the ResaleAuthorization. |
| INCOMPATIBLE_TERMS | ValidityTerm isn't supported for public
offers. |
| INCOMPATIBLE_TERMS | The requested change can't be performed after the
offer is expired. |
| INVALID_AGREEMENT_DURATION | Provide AgreementDuration that is greater than or
equal to [x] days. |
| INVALID_AGREEMENT_END_DATE | Provide a future AgreementEndDate. |
| INVALID_AGREEMENT_END_DATE | Provide AgreementEndDate that is after or equal to
[x]. |
| INVALID_AGREEMENT_START_DATE | Provide an AgreementStartDate that is after
AvailabilityEndDate. |
| INVALID_AGREEMENT_START_DATE | Provide an AgreementStartDate that is before the
AgreementEndDate. |
| INVALID_AGREEMENT_START_DATE | Provide an AgreementStartDate that is within [x] years
from today. |
| INVALID_AGREEMENT_TIME_INTERVAL | ValidityTerm with both AgreementDuration and
AgreementEndDate isn't supported. |
| INVALID_AGREEMENT_TIME_INTERVAL | ValidityTerm with both AgreementStartDate and
AgreementDuration isn't supported in an offer for the
product. |
| INVALID_AGREEMENT_TIME_INTERVAL | ValidityTerm with AgreementStartDate isn't supported
in an offer for the product. |
| INVALID_AGREEMENT_TIME_INTERVAL | ValidityTerm with only AgreementStartDate isn't
supported. |
| INVALID_AGREEMENT_TIME_INTERVAL | AgreementEndDate isn't supported unless it's used in
combination with a future AgreementStartDate or for replacement
offers. |
| INVALID_AGREEMENT_TIME_INTERVAL | Provide AgreementStartDate and AgreementEndDate where
the difference is less than or equal to [x]
years. |
| MISSING_AGREEMENT_START_DATE | Ensure AgreementStartDate is present in ValidityTerm
when used along with
ConfigurableUpfrontPricingTerm. |
| INVALID_AGREEMENT_END_DATE | Provide an AgreementEndDate that is within [x] years
from today. |
| INCOMPATIBLE_AGREEMENT_START_DATE | Provide the same AgreementStartDate as defined in the
agreement when the agreement has a future start
date. |
| INCOMPATIBLE_AGREEMENT | AgreementStartDate can't be future dated when the
agreement isn't future dated. |
Update payment schedule details
You can use the Catalog API to update payment schedule details for your offer, such as flexible payment schedule, in AWS Marketplace.
Note
You
cannot use the UpdatePaymentScheduleTerms change type on an offer
that has already been published (also known as
released).
The
private offer can be accepted any day between the creation of the private offer
and its expiration (set in the AvailabilityEndDate). Only one
ChargeDate value of the payment schedule can be a date on or
before the last day the buyer can accept the private offer (the private offer
expiration date). The remaining values of ChargeDate must be after
the private offer expiration, but no later than the end of the agreement if the
private offer was accepted immediately. The end of the agreement is based on
when the private offer is accepted (creating the agreement) plus the duration of the agreement.
To update payment schedule details for your offer, call the
StartChangeSet API operation with the
UpdatePaymentScheduleTerms change type, as shown in the following
example.
Request Syntax
POST /StartChangeSet HTTP/1.1 Content-type: application/json { "Catalog": "AWSMarketplace", "ChangeSet": [ { "ChangeType": "UpdatePaymentScheduleTerms", "Entity": { "Type": "Offer@1.0", "Identifier": "offer-123456789" }, "DetailsDocument": { "Terms": [ { "Type": "PaymentScheduleTerm", "Schedule": [ { "ChargeDate": "2021-12-01", "ChargeAmount": "200.00" }, { "ChargeDate": "2022-03-01", "ChargeAmount": "250.00" } ] } ] } } ] }
Provide information for the fields to add the
UpdatePaymentScheduleTerms change type:
-
Entity (object) (required) – Your offer.
-
Type (string) (required) – The
Typeis alwaysOffer@1.0. -
Identifier (string) (required) – Your offer ID. For more information, see Identifier.
-
-
DetailsDocument (object) (required) – The JSON value of specifics of the request.
-
Terms (array of structures) – List of payment terms that you want to update. Supported payment terms are:
-
PaymentScheduleTerm (object) – Defines an installment-based pricing model where customers are charged a fixed price on different dates during the agreement validity period.
-
Type (string) – Type of the term being updated. This is the object value:
"PaymentScheduleTerm". -
Schedule (array of structures) – List of the payment schedule where each element defines one installment of payment. It contains the information necessary for calculating the price to be paid and the date on which the customer would be charged.
-
ChargeDate (string) – The date on which the customer would pay the price defined in this payment schedule term.
ChargeDateis represented in YYYY-MM-DD format. Invoices are generated on the date provided. -
ChargeAmount (string) – The price that the customer would pay on scheduled date (
ChargeDate).
-
-
-
-
Response Syntax
A change set is created for your request. The response to this request gives you
the ChangeSetId and ChangeSetArn for the change set and
looks like the following.
{ "ChangeSetId": "example123456789012abcdef", "ChangeSetArn": "arn:aws:aws-marketplace:us-east-1:123456789012:AWSMarketplace/ChangeSet/example123456789012abcdef" }
The change request is added to a queue and processed. This includes validating information to ensure that it meets the AWS Marketplace guidelines. The validation process can take a few minutes.
You can check the status of the request through the AWS Marketplace Management Portal, or directly through
Catalog API using the DescribeChangeSet API operation.
Synchronous Validations
The following schema validations are specific to
UpdatePaymentScheduleTerms actions in the AWS Marketplace Catalog API. These
validations are performed when you call StartChangeSet. If the request
doesn't meet the following requirements, it will fail with an HTTP response.
| Input Field | Validation Rule | HTTP |
|---|---|---|
| Terms |
Required Only List size must be less than 2 |
422 |
| Terms[].Type |
Required Can only be |
422 |
| Terms[].PaymentScheduleTerm.CurrencyCode |
Required Supported currencies: ["USD", "AUD", "EUR", "GBP", "JPY"] |
422 |
| Terms[].PaymentScheduleTerm.Schedule[] |
Required |
422 |
| Terms[].PaymentScheduleTerm.Schedule[].ChargeAmount | Required Date type is "String" Non-negative decimals with up to 2 decimal places supported |
422 |
| Terms[].PaymentScheduleTerm.Schedule[].ChargeDate |
Required Date must be formatted like "YYYY-MM-DD" |
422 |
Asynchronous Errors
The following errors are specific to UpdatePaymentScheduleTerms
actions in the AWS Marketplace Catalog API. These errors are returned when you call
DescribeChangeSet after a change set is processing. For more
information about using DescribeChangeSet to get the status of a change
request, see Working with change sets.
| Error code | Error message |
|---|---|
| DUPLICATE_CHARGE_DATES | Provide unique charge dates in
PaymentScheduleTerm. |
| INCOMPATIBLE_CURRENCY_CODE | CurrencyCode can't be changed after the offer is
released. |
| INCOMPATIBLE_MARKUP_PERCENTAGE | PaymentScheduleTerm isn't supported when
MarkupPercentage is greater than zero (0). |
| INCOMPATIBLE_PAYMENT_SETTINGS | Update your payment settings to be compatible with the
CurrencyCode. |
| INCOMPATIBLE_RESALE_AUTHORIZATION | Provide term(s) that are compatible with the
ResaleAuthorization. Incompatible terms:
[PaymentScheduleTerm]. |
| INCOMPATIBLE_RESALE_AUTHORIZATION | Ensure the total ChargeAmounts in PaymentScheduleTerm
is compatible with the ResaleAuthorization. |
| INCOMPATIBLE_SELLER_VERIFICATION | Complete all required seller verification
processes. |
| INCOMPATIBLE_TERMS | The requested change can't be performed after the
offer is released. |
| INCOMPATIBLE_TERMS | The requested change can't be performed after the
offer is expired. |
| INVALID_CHARGE_DATES | Provide charge dates before
AgreementEndDate. |
| INVALID_CURRENCY_CODE | Provide a supported CurrencyCode. |
| INVALID_CURRENCY_CODE | Provide the same CurrencyCode across all pricing and
payment terms. |
| TOO_MANY_BACKDATED_CHARGES | Provide up to 1 scheduled payment before
AvailabilityEndDate. |
| INVALID_CHARGE_DATES | Provide a last charge date that is before
AgreementEndDate. |
| INVALID_CHARGE_DATES | Provide a first charge date that isn't in the
past. |
| TOO_MANY_CHARGES | Provide up to [x] scheduled payments in
PaymentScheduleTerm. |
Update net payment terms
You can use the Catalog API to set the net payment terms of your offer in AWS Marketplace. A net payment term is a term where you specify the number of days after invoice issuance by which payment is due.
Note
Net payment terms are only supported for private offers, and only apply to buyers who have a pay-by-invoice payment method with AWS. If you don't set net payment terms, your buyer's payment terms with AWS apply.
To set the net payment term of your offer, call the StartChangeSet API
operation with the UpdateNetPaymentTerms change type, as shown in the
following example.
Request Syntax
POST /StartChangeSet HTTP/1.1 Content-type: application/json { "Catalog": "AWSMarketplace", "ChangeSet": [ { "ChangeType": "UpdateNetPaymentTerms", "Entity": { "Type": "Offer@1.0", "Identifier": "offer-123456789" }, "DetailsDocument": { "Terms": [ { "Type": "NetPaymentTerm", "PaymentDuePeriod": "P30D" } ] } } ] }
Provide information for the fields to add the
UpdateNetPaymentTerms change type:
-
Entity (object) (required) – Your offer.
-
Type (string) (required) – The
Typeis alwaysOffer@1.0. -
Identifier (string) (required) – Your offer ID. For more information, see Identifier.
-
-
DetailsDocument (object) (required) – The JSON value of specifics of the request.
-
Terms (array of structures) (required) – List of net payment terms that you want to update. An offer can contain at most one net payment term. Supported terms are:
-
NetPaymentTerm (object) – Defines the net payment terms that is negotiated with the buyer.
-
Type (string) – Type of the term being updated. This is the object value:
"NetPaymentTerm". -
PaymentDuePeriod (string) – The number of days after the invoice issuance date that payment is due. This field supports the ISO 8601 format. Supported values are
P15D,P30D,P45D,P60D,P90D, andP120D.
-
-
-
Response Syntax
A change set is created for your request. The response to this request gives you
the ChangeSetId and ChangeSetArn for the change set and
looks like the following.
{ "ChangeSetId": "example123456789012abcdef", "ChangeSetArn": "arn:aws:aws-marketplace:us-east-1:123456789012:AWSMarketplace/ChangeSet/example123456789012abcdef" }
The change request is added to a queue and processed. This includes validating information to ensure that it meets the AWS Marketplace guidelines. The validation process can take a few minutes.
You can check the status of the request through the AWS Marketplace Management Portal, or directly through
Catalog API using the DescribeChangeSet API operation.
Synchronous Validations
The following schema validations are specific to
UpdateNetPaymentTerms actions in the AWS Marketplace Catalog API. These validations
are performed when you call StartChangeSet. If the request doesn't meet
the following requirements, it will fail with an HTTP response.
| Input Field | Validation Rule | HTTP |
|---|---|---|
| Terms |
Required Only List size must be less than 2 |
422 |
| Terms[].Type |
Required Can only be |
422 |
| Terms[].NetPaymentTerm.PaymentDuePeriod |
Required Expected format: ISO 8601 duration Allowed values: ["P15D", "P30D", "P45D", "P60D", "P90D", "P120D"] |
422 |
Asynchronous Errors
The following errors are specific to UpdateNetPaymentTerms actions in
the AWS Marketplace Catalog API. These errors are returned when you call
DescribeChangeSet after a change set is processing. For more
information about using DescribeChangeSet to get the status of a change
request, see Working with change sets.
| Error code | Error message |
|---|---|
| INVALID_PAYMENT_DUE_PERIOD | Provide a supported
PaymentDuePeriod. |
| INCOMPATIBLE_PRODUCT | The following terms aren't supported for the product:
[x,y,z]. |
| INCOMPATIBLE_TERMS | NetPaymentTerm isn't supported for public
offers. |
| INCOMPATIBLE_TERMS | The requested change can't be performed after the
offer is released. |
| INCOMPATIBLE_RESALE_AUTHORIZATION | NetPaymentTerm isn't supported because the
ResaleAuthorization doesn't contain a
NetPaymentTerm. |
| INCOMPATIBLE_RESALE_AUTHORIZATION | NetPaymentTerm can't be removed because the
ResaleAuthorization contains a
NetPaymentTerm. |
| INCOMPATIBLE_RESALE_AUTHORIZATION | Ensure PaymentDuePeriod in NetPaymentTerm is
compatible with the
ResaleAuthorization. |
| DUPLICATE_TERM_TYPES | Provide a unique list of term
types. |
Modify renewal options
You can use the Catalog API to control renewal options of the agreements that are created using this offer in AWS Marketplace.
For offers created through Catalog API, auto-renewal remains disabled by default
until you call the UpdateRenewalTerms change type to allow
auto-renewal. This change does not affect existing agreements.
To control renewal options of the agreements that are created using this offer,
call the StartChangeSet API operation with the
UpdateRenewalTerms change type, as shown in the following
example.
Request Syntax
POST /StartChangeSet HTTP/1.1 Content-type: application/json { "Catalog": "AWSMarketplace", "ChangeSet": [ { "ChangeType": "UpdateRenewalTerms", "Entity": { "Type": "Offer@1.0", "Identifier": "offer-123456789" }, "DetailsDocument": { "Terms": [ { "Type": "RenewalTerm", "LockoutPeriod": "P30D", "AdjustmentDeadline": "P60D", "MaxRenewals": 3, "PriceIncrease": { "Type": "PercentageRange", "Range": { "MinValue": "3.00", "MaxValue": "10.00", "DefaultValue": "5.00" } }, "TermTemplates": [ { "Type": "PaymentScheduleTermTemplate", "Schedule": [ { "ChargeDateOffset": "P0M", "ChargePercentage": "50.00" }, { "ChargeDateOffset": "P6M", "ChargePercentage": "50.00", "DayOfMonth": 15 } ] } ] } ] } } ] }
Provide information for the fields to add the UpdateRenewalTerms
change type:
-
Entity (object) (required) – Your offer.
-
Type (string) (required) – The
Typeis alwaysOffer@1.0. -
Identifier (string) (required) – Your offer ID. For more information, see Identifier.
-
-
DetailsDocument (object) (required) – The JSON value of specifics of the request.
-
Terms (array of structures) – List of renewal terms that you want to update. Supported renewal terms are:
-
RenewalTerm (object) – Defines that on graceful termination (expiration of the
ValidityTerm, not buyer or AWS Marketplace cancellation) of the agreement, a new agreement will be created using the accepted terms on the existing agreement. In other words, the agreement will be renewed. Presence ofRenewalTermin the offer means that auto-renewal is allowed. Buyers will have the option to accept or decline auto-renewal at the offer acceptance/agreement creation.-
Type (string) (required) – Type of the term being updated. Must be
RenewalTerm. -
LockoutPeriod (string) (optional) – The period before the agreement end date after which the auto-renewal decision can no longer be changed. Until then, either the buyer or the seller can opt in to or opt out of the renewal; buyers and sellers see this as the renewal decision deadline. Expressed as an ISO 8601 duration in days of at least one day, and must be shorter than the agreement duration. If you omit this field, either party can change the auto-renewal decision until the agreement end date. For example,
P30Dputs the renewal decision deadline 30 days before the agreement end date; for an agreement that ends December 31, December 1 is the last day either party can opt in or opt out. -
AdjustmentDeadline (string) (optional) – The deadline, before the agreement end date, by which the seller must finalize the renewal price. Required when
PriceIncreaseis aPercentageRange, and supported only with that type. Expressed as an ISO 8601 duration in days of at least one day, and must be shorter than the agreement duration. WhenLockoutPeriodis also provided, this duration must be at least one day longer, so that the deadline falls before the renewal decision deadline. For example,P60Drequires the seller to finalize the renewal price 60 days before the agreement end date; for an agreement that ends December 31, the seller must finalize by November 1. -
MaxRenewals (integer) (optional) – The maximum number of times the agreement can be renewed. If you omit this field, there is no limit on the number of renewals.
-
PriceIncrease (object) (required for private offers) – Specifies how the price can increase at renewal. Must be one of the following two types, identified by its
Type:-
FixedPercentage – Applies a fixed percentage increase at each renewal.
-
Type (string) (required) – The type of price increase. Must be
FixedPercentage. -
Value (string) (required) – A percentage between
0.00and100.00, with up to two decimal places. Use0.00to renew at the same price.
-
-
PercentageRange – A seller-adjustable range for the renewal price increase.
-
Type (string) (required) – Must be
PercentageRange. -
Range (object) (required) – The
MinValue,MaxValue, andDefaultValuefor the range, each a percentage between0.00and100.00with up to two decimal places.DefaultValueapplies if the seller doesn't finalize a percentage before theAdjustmentDeadline.
-
-
-
TermTemplates (array of structures) (optional) – A list containing at most one
PaymentScheduleTermTemplate. It defines the payment schedule applied to renewed agreements.-
Type (string) – The only supported value is
PaymentScheduleTermTemplate. -
Schedule (array of structures) – A list of
1–86installments. TheChargePercentagevalues must sum to exactly 100.-
ChargeDateOffset (string) – An ISO 8601 duration that offsets the charge from the agreement start date. Only month and day units are supported, and every offset in a schedule must use the same unit.
-
ChargePercentage (string) – A percentage from
0.01to100.00, inclusive, with up to two decimal places. -
DayOfMonth (integer) (optional) – The day of the month (
1–31) on which the charge occurs. Supported only whenChargeDateOffsetuses months.
-
-
-
-
-
Response Syntax
A change set is created for your request. The response to this request gives you
the ChangeSetId and ChangeSetArn for the change set and
looks like the following.
{ "ChangeSetId": "example123456789012abcdef", "ChangeSetArn": "arn:aws:aws-marketplace:us-east-1:123456789012:AWSMarketplace/ChangeSet/example123456789012abcdef" }
The change request is added to a queue and processed. This includes validating information to ensure that it meets the AWS Marketplace guidelines. The validation process can take a few minutes.
You can check the status of the request through the AWS Marketplace Management Portal, or directly through
Catalog API using the DescribeChangeSet API operation.
Synchronous Validations
The following schema validations are specific to UpdateRenewalTerms
actions in the AWS Marketplace Catalog API. These validations are performed when you call
StartChangeSet. If the request doesn't meet the following
requirements, it will fail with an HTTP response.
| Input field | Validation rule | HTTP code |
|---|---|---|
| Terms | Required Can contain at most one renewal term. Provide an empty list to remove all renewal terms from the offer. |
422 |
| Terms[].Type | Required Can only be "RenewalTerm" |
422 |
| Terms[].LockoutPeriod | Optional ISO 8601 duration in days of at least one day, for example "P30D" |
422 |
| Terms[].AdjustmentDeadline | Optional ISO 8601 duration in days of at least one day, for example "P60D" |
422 |
| Terms[].MaxRenewals | Optional Integer greater than or equal to 1 |
422 |
| Terms[].PriceIncrease.Type | Required when PriceIncrease is provided Can only be "FixedPercentage" or "PercentageRange" |
422 |
| Terms[].PriceIncrease.Value | Required when PriceIncrease.Type is "FixedPercentage" A percentage between 0.00 and 100.00, with up to two decimal places |
422 |
| Terms[].PriceIncrease.Range | Required when PriceIncrease.Type is "PercentageRange" Must provide MinValue, MaxValue, and DefaultValue, each a percentage between 0.00 and 100.00 with up to two decimal places. MinValue must be less than or equal to DefaultValue, which must be less than or equal to MaxValue. MinValue and MaxValue must not be equal. |
422 |
| Terms[].TermTemplates | Optional Can contain at most one PaymentScheduleTermTemplate |
422 |
| Terms[].TermTemplates[].Type | Required when TermTemplates is provided Can only be "PaymentScheduleTermTemplate" |
422 |
| Terms[].TermTemplates[].Schedule | Required when TermTemplates is provided Between 1 and 86 items |
422 |
| Terms[].TermTemplates[].Schedule[].ChargeDateOffset | Required ISO 8601 duration in months or days, for example "P6M" or "P30D". All offsets in a schedule must use the same unit. |
422 |
| Terms[].TermTemplates[].Schedule[].ChargePercentage | Required A percentage between 0.01 and 100.00, with up to two decimal places |
422 |
| Terms[].TermTemplates[].Schedule[].DayOfMonth | Optional Integer between 1 and 31. Only supported with a month-based ChargeDateOffset. |
422 |
Asynchronous Errors
The following errors are specific to UpdateRenewalTerms actions in
the AWS Marketplace Catalog API. These errors are returned when you call
DescribeChangeSet after a change set is processing. For more
details about using DescribeChangeSet to get the status of a change
request, see Working with change sets.
| Error code | Error message |
|---|---|
| DUPLICATE_CHARGE_DATE_OFFSETS | Provide unique ChargeDateOffset and DayOfMonth
combinations in PaymentScheduleTermTemplate. |
| INCOMPATIBLE_PRODUCT | RenewalTerm isn't supported for ADX products with the
following fields: [LockoutPeriod, MaxRenewals, AdjustmentDeadline,
PriceIncrease]. |
| INCOMPATIBLE_TERMS | RenewalTerm isn't supported with the
PricingModel. |
| INCOMPATIBLE_TERMS | RenewalTerm isn't supported for public offers with the
following fields: [LockoutPeriod, MaxRenewals, AdjustmentDeadline,
PriceIncrease]. |
| INCOMPATIBLE_TERMS | PaymentScheduleTermTemplate in RenewalTerm isn't
supported without a PaymentScheduleTerm in the
offer. |
| INCOMPATIBLE_TERMS | The requested change can't be performed after the
offer is released. |
| INCOMPATIBLE_TERMS | The requested change can't be performed after the
offer is expired. |
| INVALID_ADJUSTMENT_DEADLINE | AdjustmentDeadline isn't supported with the provided
PriceIncrease. |
| INVALID_ADJUSTMENT_DEADLINE | Provide an AdjustmentDeadline that is at least 1 days
longer than LockoutPeriod in RenewalTerm. |
| INVALID_ADJUSTMENT_DEADLINE | Provide an AdjustmentDeadline in RenewalTerm that is
less than agreement duration. |
| INVALID_CHARGE_DATE_OFFSETS | ChargeDateOffset(s) in PaymentScheduleTermTemplate may
fall beyond AgreementDuration. Provide ChargeDateOffset(s) that
are within AgreementDuration. |
| INVALID_CHARGE_DATE_OFFSETS | ChargeDateOffset(s) in PaymentScheduleTermTemplate may
fall beyond the duration between AgreementStartDate and
AgreementEndDate. Provide ChargeDateOffset(s) that are within
that duration. |
| INVALID_CHARGE_PERCENTAGES | ChargePercentage values in PaymentScheduleTermTemplate
in the RenewalTerm must sum to 100. |
| INVALID_DAY_OF_MONTH | Multiple charges with ChargeDateOffset P0M can't each
specify DayOfMonth in
PaymentScheduleTermTemplate. |
| INVALID_DAY_OF_MONTH | Charges with ChargeDateOffset in the final month of
the agreement can't specify DayOfMonth in
PaymentScheduleTermTemplate. |
| INVALID_LOCKOUT_PERIOD | Provide a LockoutPeriod in RenewalTerm that is less
than agreement duration. |
| INVALID_PERCENTAGE_RANGE | Provide a valid PercentageRange for PriceIncrease in
RenewalTerm. |
| INVALID_PERCENTAGE_RANGE | Use FixedPercentage instead of a PercentageRange with
equal MinValue and MaxValue for PriceIncrease in
RenewalTerm. |
| INVALID_UPDATE_REQUEST | The change type UpdateRenewalTerms isn't supported on a
renewal offer. |
| MISSING_ADJUSTMENT_DEADLINE | Provide an AdjustmentDeadline in RenewalTerm with the
provided PriceIncrease. |
| MISSING_MANDATORY_TERMS | Provide a RenewalTerm for public offers with contract
pricing for the product. |
| MISSING_PAYMENT_SCHEDULE_TERM_TEMPLATE | Provide a PaymentScheduleTermTemplate in RenewalTerm
when the offer contains a
PaymentScheduleTerm. |
| MISSING_PRICE_INCREASE | Provide PriceIncrease in
RenewalTerm. |
Publish an offer
You can use the Catalog API to merge the information collected from all update change types, and then publish the offer.
Offers remain in a Draft state, until ReleaseOffer is
called. After the offer is released, it's discoverable in AWS Marketplace.
To publish your offer, call the StartChangeSet API operation with the
ReleaseOffer change type, as shown in the following example.
Request Syntax
POST /StartChangeSet HTTP/1.1 Content-type: application/json { "Catalog": "AWSMarketplace", "ChangeSet": [ { "ChangeType": "ReleaseOffer", "Entity": { "Type": "Offer@1.0", "Identifier": "offer-123456789" }, "DetailsDocument": {} } ] }
Provide information for the fields to add the ReleaseOffer change
type:
-
Entity (object) – The named type of entity being created. The
Identifieris your offer ID, and theTypeis alwaysOffer@1.0. For more information, see Identifier. -
DetailsDocument (object) – The JSON value of specifics of the request. It must be empty for
ReleaseOffer.
Response Syntax
A change set is created for your request. The response to this request gives you
the ChangeSetId and ChangeSetArn for the change set and
looks like the following.
{ "ChangeSetId": "example123456789012abcdef", "ChangeSetArn": "arn:aws:aws-marketplace:us-east-1:123456789012:AWSMarketplace/ChangeSet/example123456789012abcdef" }
The change request is added to a queue and processed. This includes validating information to ensure that it meets the AWS Marketplace guidelines. The validation process can take a few minutes.
You can check the status of the request through the AWS Marketplace Management Portal, or directly through
Catalog API using the DescribeChangeSet API operation.
Synchronous Validations
The following schema validations are specific to ReleaseOffer actions
in the AWS Marketplace Catalog API. These validations are performed when you call
StartChangeSet. If the request doesn't meet the following
requirements, it will fail with an HTTP response.
| Input field | Validation rule |
|---|---|
| DetailsDocument | Must be empty ({}) |
Asynchronous Errors
The following errors are specific to ReleaseOffer actions in the
AWS Marketplace Catalog API. These errors are returned when you call DescribeChangeSet
after a change set is processing. For more information about using
DescribeChangeSet to get the status of a change request, see Working with change sets.
| Error code | Error message |
|---|---|
| INCOMPATIBLE_PAYMENT_SETTINGS | Update your payment settings to be compatible with the
CurrencyCode. |
| INCOMPATIBLE_PRODUCT | First create a public offer for the
product. |
| INCOMPATIBLE_SELLER_VERIFICATION | Complete all required seller verification
processes. |
| INCOMPATIBLE_TARGETING | PreExistingAgreement is only supported for buyer
targeted offers. |
| INCOMPATIBLE_TARGETING | OfferSetId is only supported for buyer targeted offers. |
| INVALID_TAX_INFORMATION | Your tax information is
incomplete. To sell professional services on AWS Marketplace, you must
complete the DAC7 tax questionnaire. Navigate to the
Payment Information section, and select
the DAC7 tax form. It can take up to two
hours for your tax information to update. |
| INVALID_UPDATE_REQUEST | The requested change can't be performed after the
offer is released. |
| MISSING_AGREEMENT_END_DATE | Provide an AgreementEndDate for replacement
offers. |
| MISSING_AVAILABILITY_END_DATE | Provide an AvailabilityEndDate for private
offer. |
| MISSING_BUYER_ACCOUNTS | Provide PositiveTargeting with BuyersAccounts for
offers created using ResaleAuthorization. |
| MISSING_BUYER_ACCOUNTS | All offers for the product must be private. Provide
PositiveTargeting with BuyersAccounts. |
| MISSING_DESCRIPTION | Set Description before releasing the
offer. |
| MISSING_MANDATORY_TERMS | Add [x] to the offer. |
| MISSING_MANDATORY_TERMS | Provide a FixedUpfrontPricingTerm when the offer
contains a PaymentScheduleTerm. |
| MISSING_NAME | Set Name before releasing the
offer. |
| TOO_MANY_OFFERS | Only one public free trial offer can be created per
product. |
| TOO_MANY_OFFERS | Only one public offer can be created per
product. |
| MISSING_MANDATORY_TERMS | Provide a RenewalTerm for public offers with contract
pricing for the product. |
| MISSING_AGREEMENT_END_DATE | Provide an AgreementEndDate for replacement
offers. |
Note
For an offer created from a subsidiary authorization, AWS Marketplace re-validates the
offer against the current subsidiary authorization when you release it. The
release fails and the offer stays in Draft state if, after you
created the offer, the primary account revoked the authorization or narrowed its
countries, offer types, or dimensions. An offer that was already published
before the authorization was revoked remains valid and can still be accepted by
the buyer.
Describe existing offer details
You can use the Catalog API to describe existing offer details in AWS Marketplace.
To describe existing offer details, call the DescribeEntity API
operation with the Offer@1.0 entity type, as shown in the following
example.
Request Syntax
GET /DescribeEntity?catalog=<Catalog>&entityId=<EntityId> HTTP/1.1
Provide information for the fields to add the DescribeEntity change
type:
-
catalog (string) – The catalog related to the request. Fixed value:
AWSMarketplace. -
entityId (string) – The unique ID of the offer to describe.
Response Syntax
The response to this request gives you the offer details and looks like the following.
{ "EntityType": "Offer@1.0", "EntityIdentifier": "offer-ad8EXAMPLE51@1", "EntityArn": "arn:aws:aws-marketplace:us-east-1:111122223333:AWSMarketplace/Offer/offer-ad8EXAMPLE51", "LastModifiedDate": "2021-03-10T21:57:16Z", "DetailsDocument": { "Id": "offer-3rEXAMPLErn", "State": "Released", "Name": "Test Offer", "Description": "Worldwide offer for Test Product", "PreExistingAgreement": { "AcquisitionChannel": "External", "PricingModel": "Contract" }, "ProductId": "prod-ad8EXAMPLE51", "OfferSetId": "offerset-b3f9EXAMPLE27", "Terms": [ { "Type": "SupportTerm", "RefundPolicy": "If you need to request a refund for software sold by Amazon Web Services, LLC, please contact AWS Customer Service." }, { "Type": "LegalTerm", "Documents": [ { "Type": "CustomEula", "Url": "https://s3.amazonaws.com/EULA/custom-eula-1234.txt" } ] }, { "Type": "FreeTrialPricingTerm", "Duration": "P30D", "Grants": [ { "DimensionKey": "m3.xlarge", "MaxQuantity": 10 }, { "DimensionKey": "m4.xlarge", "MaxQuantity": 10 } ] }, { "Type": "ConfigurableUpfrontPricingTerm", "CurrencyCode": "USD", "RateCards": [ { "Selector": { "Type": "Duration", "Value": "P365D" }, "RateCard": [ { "DimensionKey": "m3.large", "Price": "300.00" }, { "DimensionKey": "m4.xlarge", "Price": "400.00" } ], "Constraints": { "MultipleDimensionSelection": "Allowed", "QuantityConfiguration": "Allowed" } } ] }, { "Type": "UsageBasedPricingTerm", "CurrencyCode": "USD", "RateCards": [ { "RateCard": [ { "DimensionKey": "m3.large", "Price": "0.10" }, { "DimensionKey": "m4.xlarge", "Price": "0.20" } ] } ] }, { "Type": "FixedUpfrontPricingTerm", "CurrencyCode": "USD", "Price": "200.00", "Grants": [ { "DimensionKey": "Users", "MaxQuantity": 10 } ] }, { "Type": "RecurringPaymentTerm", "CurrencyCode": "USD", "BillingPeriod": "Monthly", "Price": "100.0" }, { "Type": "PaymentScheduleTerm", "CurrencyCode": "USD", "Schedule": [ { "ChargeDate": "2020-12-01T00:00:00.000Z", "ChargeAmount": "1000.00" }, { "ChargeDate": "2021-06-15T00:00:00.000Z", "ChargeAmount": "1250.00" } ] }, { "Type": "ByolPricingTerm" }, { "Type": "RenewalTerm" }, { "Type": "NetPaymentTerm", "PaymentDuePeriod": "P30D" } ], "Rules": [ { "Type": "TargetingRule", "PositiveTargeting": { "CountryCodes": [ "US", "CA" ], "BuyerAccounts": [ "444455556666" ] }, "NegativeTargeting": { "CountryCodes": [ "XX" ] } }, { "Type": "AvailabilityRule", "AvailabilityEndDate": "2024-08-30T01:56:03.000Z" } ] } }
The following DescribeEntity response for an offer created from a
subsidiary authorization is trimmed to the relevant fields.
{ "EntityType": "Offer@1.0", "EntityIdentifier": "offer-hrja4qluqqoua@2", "EntityArn": "arn:aws:aws-marketplace:us-east-1:444455556666:AWSMarketplace/Offer/offer-hrja4qluqqoua", "LastModifiedDate": "2026-10-07T19:05:06Z", "DetailsDocument": { "Id": "offer-hrja4qluqqoua", "Name": "Test Subsidiary Offer", "ProductId": "prod-3c4dexample12", "OfferSetId": "offerset-notyefzklyh2k", "State": "Released", "SubsidiaryAuthorizationId": "subauthz-1a2bexample34", "Terms": [ { "Type": "FixedUpfrontPricingTerm", "CurrencyCode": "USD", "Duration": "P3M", "Price": "0", "Grants": [ { "DimensionKey": "subauth_test_seats", "MaxQuantity": 1 } ] }, { "Type": "ValidityTerm", "AgreementDuration": "P3M" } ], "Rules": [ { "Type": "AvailabilityRule", "AvailabilityEndDate": "2026-10-30T23:59:59.999Z" }, { "Type": "TargetingRule", "PositiveTargeting": { "CountryCodes": ["US"], "BuyerAccounts": ["777788889999"] } } ] } }
The following is information about the fields you see in the
DescribeEntity response.
-
EntityType (string) – The named type of the entity, which is
Offer@1.0. -
EntityIdentifier (string) – The identifier of the entity, in the format of
EntityId@RevisionId. -
EntityArn (string) – The ARN associated to the unique identifier for the change set referenced in this request.
-
LastModifiedDate (string) –The last modified date of the entity, in ISO 8601 format (for example:
2018-02-27T13:45:22Z). -
Details (string) – This stringified JSON object includes the following details of the entity:
-
Id (string) – Unique identifier for an offer entity in AWS Marketplace and is generated during the creation of an offer.
-
State (string) – The status of the offer.
-
Name (string) – The name associated with the offer for better readability to you and your customers. It will be displayed as part of Agreement information as well.
-
Description (string) – Description is a free-form text which is meant to be used only by you and will never be exposed to buyers.
-
PreExistingAgreement (string) – Determines if this offer is a renewal for an existing agreement with an existing customer for the same underlying product. The existing agreement can be within or outside AWS Marketplace. AWS may audit and verify your offer is a renewal. If AWS is unable to verify your offer, then AWS may revoke the offer and entitlements from your customer.
-
AcquisitionChannel (string) – Indicates if the existing agreement was signed outside AWS Marketplace or within AWS Marketplace. Possible values:
External,AwsMarketplace. -
PricingModel (string) – Indicates which pricing model the existing agreement uses. Possible values:
Contract,Usage,Byol,Free.
-
-
ProductId (string) – The unique identifier of the product being offered.
-
OfferSetId (string) – The unique identifier of the offer set to associate this offer with.
-
SubsidiaryAuthorizationId (string) (optional) – The ID of the subsidiary authorization used to create the offer. Present only on offers created with the
CreateOfferUsingSubsidiaryAuthorizationorCreateReplacementOfferUsingSubsidiaryAuthorizationchange types. The field is omitted entirely on direct offers, offers created from a resale authorization, and all other offers. Use the presence of this field to identify an offer created from a subsidiary authorization. -
Terms (array of structures) – List of terms.
-
Rules (array of structures) – List of rules.
-