View a markdown version of this page

Work with resale authorizations using the AWS Marketplace APIs - AWS Marketplace

The AWS Marketplace API Reference was restructured. For more information about the supported API operations, see the AWS Marketplace API Reference.

Work with resale authorizations using the AWS Marketplace APIs

You can use the AWS Marketplace Catalog API to automate tasks for working with Resale Authorizations.

While the product describes what is being sold in AWS Marketplace, the Resale Authorization (also known as an opportunity) describes the terms and rules regarding how this product is authorized to be resold in AWS Marketplace. The CPPO is the target of the Resale Authorization.

A Resale Authorization has a collection of terms and rules to be accepted for a reseller agreement between manufacturers and resellers. Accepting the terms of the Resale Authorization allows the reseller to create offers for the product per the conditions expressed in the terms.

There are two types of rules in a Resale Authorization:

  • AvailabilityRule – Controls the lifecycle of the Resale Authorization in AWS Marketplace.

  • PartnerTargetingRule – Specifies the single reseller that the Resale Authorization is accessible to, and that reseller's role.

See the following resources:

The following topics describe how to use the Catalog API to create and update Resale Authorizations:

Resale Authorization prerequisites

To use Resale Authorization, both independent software vendors (ISVs) and AWS Marketplace resellers must create a service-linked role that provides resource-sharing permissions to AWS. If both groups don't perform this prerequisite, AWS can't share the authorization resource from the ISV to the reseller. For more information, see Using roles for Resale Authorization for AWS Marketplace in the AWS Marketplace Seller Guide.

Create a new Resale Authorization

You can use the Catalog API to create a new Resale Authorization in AWS Marketplace.

If your request is processed successfully, AWS Marketplace Catalog API generates a Resale Authorization in Draft state for you. It's an incomplete Resale Authorization and not visible to resellers in AWS Marketplace.

Use the Update change types to complete the Resale Authorization. After the Resale Authorization is completed, use the ReleaseResaleAuthorization change type to complete the Resale Authorization creation process and release the Resale Authorization, which will validate the entire Resale Authorization and make it visible to resellers in AWS Marketplace.

To create a Resale Authorization in Draft state, call the StartChangeSet API operation with the CreateResaleAuthorization change type, as shown in the following example.

Request Syntax

POST /StartChangeSet HTTP/1.1 Content-type: application/json { "Catalog": "AWSMarketplace", "ChangeSet": [ { "ChangeType": "CreateResaleAuthorization", "ChangeName": "xyz", "Entity": { "Type": "ResaleAuthorization@1.0" }, "DetailsDocument": { "ProductId": "prod-ad8EXAMPLE51", "Name": "Test ResaleAuthorization", "Description": "Worldwide ResaleAuthorization for Test Product", "ResellerAccountId": "777788889999", "ResellerRole": "ChannelPartner" } } ] }

Provide information for the input fields to add the CreateResaleAuthorization change type:

  • Entity (object) (required) – Your Resale Authorization.

    • Type (string) (required) – The Type is always ResaleAuthorization@1.0.

  • DetailsDocument (object) (required) – Specifics of the request.

    • ProductId (string) (required) – Product ID for which to create the resale authorization.

    • Name (string) (required) – Name associated with the ResaleAuthorization for better readability to you and your resellers.

    • Description (string) (optional) – A free-form text field available to add details about the ResaleAuthorization.

    • ResellerAccountId (string) (required) – Add targeted reseller's AWS account who can describe and use this ResaleAuthorization to create a private offer.

    • ResellerRole (string) (required) – The role of the targeted reseller. Valid values are ChannelPartner and Distributor. If you don't specify a value, ChannelPartner is used.

      The Distributor value is currently available only for Brazil 2P. For more information, see Brazil 2P Authorizations.

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.

When the request is complete (if the Status is SUCCEEDED), a new ResaleAuthorization is generated. Although the SUCCEEDED status indicates that the CreateResaleAuthorization change type call is completed, the ResaleAuthorization status is still in Draft state.

The following shows the response from the DescribeChangeSet API operation.

{ "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": "CreateResaleAuthorization", "Entity": { "Type": "ResaleAuthorization@1.0", "Identifier": "resaleauthz-123456789" }, "DetailsDocument": { "ProductId": "prod-ad8EXAMPLE51", "Name": "Test ResaleAuthorization", "Description": "Worldwide ResaleAuthorization for Test Product", "ResellerAccountId": "777788889999" }, "ErrorDetailList": [] } ] }

Synchronous Validations

The schema validations are specific to CreateResaleAuthorization actions in the AWS Marketplace Catalog API. The 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

Must not be null or empty

Length must be between 1 and 50 characters

422
ProductId User must be authorized to create ResaleAuthorization for the given product 403
ProductId Must be an existing product in the catalog and not in Draft state

Product should be supported to resell

404
Name

Required

Must not be null or empty

Length must be between 1 and 100 characters

No special characters allowed

422
Description

Optional

Length must be between 1 and 255 characters

No special characters allowed

422
ResellerAccountId

Required

Must not be empty

AWS account IDs must be in valid format (12-digit number)

422
ResellerRole

Required

Must be either ChannelPartner or Distributor

Defaults to ChannelPartner if omitted

422
An unknown property No additional properties are allowed 422

Asynchronous Errors

The following errors are specific to CreateResaleAuthorization 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_RESELLER_ACCOUNT Provide a valid reseller account.
INCOMPATIBLE_PRODUCT Managing ResaleAuthorizations for the product isn't currently supported in the AWS Marketplace Catalog API.

Update Resale Authorization details

You can use the Catalog API to update Resale Authorization details in AWS Marketplace.

To update Resale Authorization details, call the StartChangeSet API operation with the UpdateInformation change type, as shown in the following example.

Note

The UpdateInformation change type only updates the sections provided in the request; all other information remains unchanged.

Request Syntax

POST /StartChangeSet HTTP/1.1 Content-type: application/json { "Catalog": "AWSMarketplace", "ChangeSet": [ { "ChangeType": "UpdateInformation", "Entity": { "Type": "ResaleAuthorization@1.0", "Identifier": "resaleauthz-123456789" }, "DetailsDocument": { "Name": "TestResaleAuthorization", "Description": "Worldwide ResaleAuthorization for Test Product", "PreExistingBuyerAgreement": { "AcquisitionChannel": "AwsMarketplace", "PricingModel": "Contract" } } } ] }

Provide information for the fields to add the UpdateInformation change type:

  • Entity (object) (required) – Your Resale Authorization.

    • Type (string) (required) – The Type is always ResaleAuthorization@1.0.

    • Identifier (string) (required) – Your Resale Authorization ID. For more information, see Identifier.

  • DetailsDocument (object) (required) – Details of the request, including the information you want to update information for the Resale Authorization.

    • Name (string) (optional) – The name associated with the ResaleAuthorization for better readability to you and your resellers.

    • Description (string) (optional) – The description is free-form text where you can add details about the ResaleAuthorization.

    • PreExistingBuyerAgreement (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 buyer agreement was signed outside AWS Marketplace or in AWS Marketplace.

        Possible values: External, AwsMarketplace

      • PricingModel (string) (required) – Indicates which pricing model the exiting 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 anywhere from a few minutes to a few hours.

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, and the request will fail with an HTTP error if the input does not meet the following requirements.

Input field Validation rule HTTP code
Name

Optional

Must not be null or empty

Length must be between 1 and 100 characters

Must not begin with a white space character

Must not end with a backslash

422
Description

Optional

Can be set to null to remove the existing description

Length must be between 1 and 255 characters

Must not begin with a white space character

Must not end with a backslash

422
PreExistingBuyerAgreement

Optional

Can be set to null to remove the existing agreement

When provided, both AcquisitionChannel and PricingModel are required

AcquisitionChannel allowed values: AwsMarketplace, External

PricingModel allowed values: Byol, Free, Usage, Contract

422
DetailsDocument

Must include at least one of Name, Description, or PreExistingBuyerAgreement

422
An unknown property No additional properties are allowed 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. or more information about using DescribeChangeSet to get the status of a change request, see Working with change sets.

Error code Error message
INCOMPATIBLE_BUYER_TARGETING At least one Buyer account must be present for ResaleAuthorization with PreExistingBuyerAgreement.

Update buyer targeting

You can use the Catalog API to update buyers targeting your Resale Authorization in AWS Marketplace.

Any existing targeting options that aren't included in the latest request are removed from the Resale Authorization. This change type is optional for release of the Resale Authorization.

To update buyers targeting your Resale Authorization, call the StartChangeSet API operation with the UpdateBuyerTargetingTerms change type, as shown in the following example.

Request Syntax

POST /StartChangeSet HTTP/1.1 Content-type: application/json { "Catalog": "AWSMarketplace", "ChangeSet": [ { "ChangeType":"UpdateBuyerTargetingTerms", "Entity":{ "Type": "ResaleAuthorization@1.0", "Identifier": "resaleauthz-123456789" }, "DetailsDocument": { "Terms": [ { "Type": "BuyerTargetingTerm", "PositiveTargeting": { "BuyerAccounts": [ "123456789012" ] } } ] } } ] }

Provide information for the fields to add the UpdateBuyerTargetingTerms change type:

  • Entity (object) (required) – Your Resale Authorization.

    • Type (string) (required) – The Type is always ResaleAuthorization@1.0.

    • Identifier (string) (required) – Your Resale Authorization ID. For more information, see Identifier.

  • DetailsDocument (object) (required) – Specifics of the request.

    • Terms (array of structures) (required) – List of buyers targeting terms that you want to update. If the intentions aren't to target the ResaleAuthorization to any specific buyer, then pass an empty list. By default, ResaleAuthorization is targeted to all buyers. Supported terms are:

      • BuyerTargetingTerms (object) (optional) – Define buyer-specific targeting to your ResaleAuthorization.

        • Type (string) (required) – Category of the term being updated.

        • PositiveTargeting (object) (required) – Defines the criteria that any buyer's profile should fulfill to be allowed access to the ResaleAuthorization.

          • BuyerAccounts (array of strings) (optional) – List as optional. You can add the targeted buyer's AWS accounts. If the intention isn't to target ResaleAuthorization to specific buyers, then this field should be omitted. By default, all buyers are targeted. Targeted resellers can choose to create a private offer and target a subset of buyers, if specified.

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 with the AWS Marketplace Seller Operations team to ensure it meets the AWS Marketplace guidelines. The validation process can take anywhere from a few minutes to a few hours.

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 schema validations are specific to UpdateBuyerTargetingTerms 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
Terms

Required

Only "BuyerTargetingTerm" is allowed in the list

List size must be at most 1 (there is no use case today that requires multiple buyer terms)

Pass an empty list to remove buyer targeting

BuyerTargetingTerm.PositiveTargeting

Required

Must not be empty

BuyerTargetingTerm.PositiveTargeting.BuyerAccounts

Optional

AWS account IDs must be in valid format (12-digit number)

Must not contain more than 25 accounts

An unknown property No additional properties are allowed

Asynchronous Errors

The following errors are specific to UpdateBuyerTargetingTerms 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_BUYER_TARGETING At least one Buyer account must be present for ResaleAuthorization with PreExistingBuyerAgreement.

Update availability

You can use the Catalog API to limit the availability of how many private offers are created or until what specific time a private offer can be created.

By default, the value is unlimited usage of this Resale Authorization, although you can check the availability under the rule list.

To control the availability and usability of your Resale Authorization, 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": "ResaleAuthorization@1.0", "Identifier": "resaleauthz-123456789" }, "DetailsDocument": { "AvailabilityEndDate": "2022-05-31", "OffersMaxQuantity": 1 } } ] }

Provide information for the fields to add the UpdateAvailability change type:

  • Entity (object) (required) – Your Resale Authorization.

    • Type (string) (required) – The Type is always ResaleAuthorization@1.0.

    • Identifier (string) (required) – Your Resale Authorization ID. For more information, see Identifier.

  • DetailsDocument (object) (required) – Specifics of the request.

    • AvailabilityEndDate (string) (optional) – Define the end date until resellers can leverage the ResaleAuthorization to create an offer. Resellers can use this ResaleAuthorization multiple times until the specified end date. Dates are represented in ISO_8601 format.

    • OffersMaxQuantity (integer) (optional) – Define the maximum number of private offers that can be created using the ResaleAuthorization. This doesn't define the number of subscriptions.

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 with the AWS Marketplace Seller Operations team to ensure it meets the AWS Marketplace guidelines. The validation process can take anywhere from a few minutes to a few hours.

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 schema validations are specific to UpdateAvailability actions in the AWS Marketplace Catalog API. The 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
OffersMaxQuantity

Optional

Must be non-negative integer

Allowed value only "1" (Currently no use case to support multiple quantity)

AvailabilityEndDate

Optional

Must be ISO_8601 formatted

Must be date in the future

Must be within 10 years from the current date

Availability Provide either OffersMaxQuantity or AvailabilityEndDate.
An unknown property No additional properties are allowed

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 information about using DescribeChangeSet to get the status of a change request, see Working with change sets.

Error code Error message
INVALID_AVAILABILITY_END_DATE Provide an AvailabilityEndDate that is before all the ChargeDate in ResalePaymentScheduleTerms.
INVALID_AVAILABILITY_END_DATE Provide a future AvailabilityEndDate.

Update the validity of a future dated agreement

You can use the Catalog API to modify and control a future dated service start date in AWS Marketplace.

This change set is not mandatory to release a Resale Authorization.

To modify and control the product agreement duration of your Resale Authorization, call the StartChangeSet API operation with the UpdateBuyerValidityTerms change type, as shown in the following example.

Note

Future-dated agreements are only supported for SaaS product types.

Request Syntax

POST /StartChangeSet HTTP/1.1 Content-type: application/json { "Catalog": "AWSMarketplace", "ChangeSet": [ { "ChangeType": "UpdateBuyerValidityTerms", "Entity": { "Type": "ResaleAuthorization@1.0", "Identifier": "resaleauthz-123456789" }, "DetailsDocument": { "Terms": [ { "Type": "BuyerValidityTerm", "MaximumAgreementStartDate": "2024-05-31" } ] } } ] }

Provide information for the input fields to add the UpdateBuyerValidityTerms change type:

  • Entity (object) (required) – Your Resale Authorization.

    • Type (string) (required) – The Type is always ResaleAuthorization@1.0.

    • Identifier (string) (required) – Your Resale Authorization ID. For more information, see Identifier.

  • DetailsDocument (object) (required) – Specifics of the request.

    • Terms (array of structures) – List of agreement validity terms that you want to update. Supported terms are:

      • BuyerValidityTerm (object) – Defines the availabilities of a service for a product in your ResaleAuthorization.

        • Type (string) – Category of term being updated.

        • MaximumAgreementStartDate (string) (required) – Define the agreement start date for the product offered. Future dated offers can't exceed this service start date. Dates are represented in 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 with the AWS Marketplace Seller Operations team to ensure it meets the AWS Marketplace guidelines. The validation process can take anywhere from a few minutes to a few hours.

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 schema validations are specific to UpdateBuyerValidityTerms actions in the AWS Marketplace Catalog API. The 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
Terms

Required

Only "BuyerValidityTerm" is allowed in the list

List size must be at most 1 (there's no use case today that requires multiple service availability terms)

Pass an empty list to remove the agreement validity term

MaximumAgreementStartDate

Required

Must not be null or empty

Must be future date and shouldn't exceed more than 3 years from now

Must be ISO_8601 formatted

An unknown property No additional properties are allowed

Asynchronous Errors

The following errors are specific to UpdateBuyerValidityTerms 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 BuyerValidityTerm isn't supported for the product.
INVALID_MAXIMUM_AGREEMENT_START_DATE Provide a future MaximumAgreementStartDate with in allowed limit.

You can use the Catalog API to replace the existing legal terms completely in AWS Marketplace.

The legal terms that aren't included in the latest request will be removed from the Resale Authorization. BuyerLegalTerm contains the EULA which will be included on the final buyer agreement and LegalTerm includes the Reseller Contract which will be included in the reseller agreement between the reseller and the ISV.

To update legal terms of your ResaleAuthorization, 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": "ResaleAuthorization@1.0", "Identifier": "resaleauthz-123456789" }, "DetailsDocument": { "Terms": [ { "Type": "BuyerLegalTerm", "Documents": [ { "Type": "CustomEula", "Url": "https://my-public-bucket.s3.amazonaws.com/eula-example12345.txt" } ] }, { "Type": "ResaleLegalTerm", "Documents": [ { "Type": "CustomResellerContract", "Url": "https://my-public-bucket.s3.amazonaws.com/reseller-example12345.txt" } ] } ] } } ] }

Provide information for the fields to add the UpdateLegalTerms change type:

  • Entity (object) (required) – Your Resale Authorization.

    • Type (string) (required) – The Type is always ResaleAuthorization@1.0.

    • Identifier (string) (required) – Your Resale Authorization ID. For more information, see Identifier.

  • DetailsDocument (object) (required) – Specifics of the request.

    • Terms (array of structures) (required) – List of legal terms. Each entry must be one of the following term types, and each term type can be present only one time. To remove all legal terms, pass an empty list. Supported legal terms are:

      • BuyerLegalTerm (object) (optional) – Defines the list of text agreements to be proposed to acceptors. For example, the end user license agreement (EULA).

      • Type (string) (required) – Category of the term being updated.

      • Documents (array of structures) (required) – List of references to legal resources to be proposed to the buyers. For example, the EULA. Each reference is made up of a Type and a URL:

        • Type (string) (required) – Type of document. Available document types are:

          • StandardEula – Standard Contract for AWS Marketplace. For more information, see SCMP in the AWS Marketplace Seller Guide. You don't need to provide a URL for this type because it's managed by AWS Marketplace.

          • EnterpriseEula – Enterprise Contract for AWS Marketplace. For more information, see DSA in the AWS Marketplace Seller Guide. You don't need to provide a URL for this type because it's managed by AWS Marketplace.

          • CustomEula – Custom EULA provided by you as a manufacturer. A URL for the EULA stored in an accessible S3 bucket is required for this document type.

        • Url (string) (conditionally required) – A URL to the legal document for buyers to read. This is required when category Type is CustomEula.

      • ResaleLegalTerm (object) (optional) – Defines the list of text agreements to propose only to resellers. This term won't be available to buyers.

        • Type (string) (required) – Category of term being updated.

        • Documents (array of structures) (required) – List of references to the reseller legal resources to be proposed to the resellers.

          • Type (string) (required) – Category of the document. Available document types are:

            • StandardResellerContract – Standard Reseller Contract for AWS Marketplace. You don't need to provide a URL for this type because it's managed by AWS Marketplace.

            • CustomResellerContract – A custom reseller contract by you as a manufacturer. A URL for the reseller contract is stored in an accessible S3 bucket and is required for this document type.

          • Url (string) (conditionally required) – URL to the reseller contract document for resellers to read. It's required when the Type is CustomResellerContract.

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 anywhere from a few minutes to a few hours.

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 schema validations are specific to UpdateLegalTerms actions in the AWS Marketplace Catalog API. The 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

Each entry must be either a BuyerLegalTerm or a ResaleLegalTerm

Each term type can be present only one time

Pass an empty list to remove all legal terms

422
Terms[].BuyerLegalTerm

Optional

Must not be null or empty if present

422
Terms[].ResaleLegalTerm

Optional

Must not be null or empty if present

422
Terms[].BuyerLegalTerm.Documents

Required

Must not be null or empty

422
Terms[].BuyerLegalTerm.Documents[].Type

Required

Must not be null or empty

Allowed values:

  • StandardEula

  • EnterpriseEula

  • CustomEula

422
Terms[].BuyerLegalTerm.Documents[].Url Required and must be a valid URL when "Type" is "CustomEula"

Must not be provided when "Type" is one of ["StandardEula", "EnterpriseEula"]

422
Terms[].ResaleLegalTerm.Documents

Required

Must not be null or empty

422
Terms[].ResaleLegalTerm.Documents[].Type

Required

Must not be null or empty Allowed values:

  • StandardEula

  • CustomResellerContract

422
Terms[].ResaleLegalTerm.Documents[].Url

Required and must be a valid URL when "Type" is "CustomResellerContract"

Must not be provided when "Type" is one of ["StandardContract"]

422
An unknown property No additional properties are allowed 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
INVALID_BUYER_LEGAL_DOCUMENTS Provide URLs for buyer legal documents stored in accessible S3 buckets.
INVALID_RESALE_LEGAL_DOCUMENTS Provide URLs for resale legal documents stored in accessible S3 buckets.
INVALID_BUYER_LEGAL_DOCUMENTS Provide legal documents in the supported file formats.
LIMIT_EXCEEDED_BUYER_LEGAL_DOCUMENT_SIZE Provide legal documents within the allowed size limits.
LIMIT_EXCEEDED_RESALE_LEGAL_DOCUMENT_SIZE Provide legal documents within the allowed size limits.
MISSING_MANDATORY_TERMS Provide a BuyerLegalTerm.

Update pricing

You can use the Catalog API to replace the existing pricing terms completely in AWS Marketplace.

Pricing terms that aren't included in the latest request will be removed from the Resale Authorization. You can update the discounted pricing for your product through this API.

To update pricing details for your Resale Authorizations, call the StartChangeSet API operation with the UpdatePricingTerms change type, as shown in the following example.

Request Syntax

POST /StartChangeSet HTTP/1.1 Content-type: application/json { "Catalog": "AWSMarketplace", "ChangeSet": [ { "ChangeType": "UpdatePricingTerms", "Entity": { "Type": "ResaleAuthorization@1.0", "Identifier": "resaleauthz-123456789" }, "DetailsDocument": { "PricingModel": "Contract", "Terms": [ { "Type": "ResaleUsageBasedPricingTerm", "CurrencyCode": "USD", "RateCards": [ { "RateCard": [ { "DimensionKey": "m3.large", "Price": "0.10" }, { "DimensionKey": "m4.xlarge", "Price": "0.20" } ] } ] }, { "Type": "ResaleConfigurableUpfrontPricingTerm", "CurrencyCode": "USD", "RateCards": [ { "Selector": { "Type": "Duration", "Value": "P12M" }, "RateCard": [ { "DimensionKey": "m3.large", "Price": "300" }, { "DimensionKey": "m4.xlarge", "Price": "400" } ], "Constraints": { "MultipleDimensionSelection": "Allowed", "QuantityConfiguration": "Allowed" } } ] }, { "Type": "ResaleFixedUpfrontPricingTerm", "CurrencyCode": "USD", "Duration": "P2M", "Price": "200.0", "Grants": [ { "DimensionKey": "Users", "MaxQuantity": 10 } ] } ] } } ] }

Provide information for the fields to add the UpdatePricingTerms change type:

  • Entity (object) (required) – Your Resale Authorization.

    • Type (string) (required) – The Type is always ResaleAuthorization@1.0.

    • Identifier (string) (required) – Your Resale Authorization ID. For more information, see Identifier.

  • DetailsDocument (object) (required) – 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 – In the contract-based pricing model, buyers are either billed in advance for the use of your product or offered a flexible payment schedule. Buyers can also pay for additional usage above their contract. Resellers can add their markup to this payment schedule and pricing for each dimension.

    • Terms (array of structures) (required) – List of pricing terms that you want to update. Supported pricing terms are:

      • ResaleUsageBasedPricingTerm (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.

        • 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 for which 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 which is used for calculating the amount to be charged.

          • Constraints (object) (optional) – Defines limits on how the term can be configured by acceptors.

            • MultipleDimensionSelection (string) (optional) – Determines if buyers are allowed to select multiple dimensions in the rate card. Possible values are Allowed and Disallowed. Default value is Allowed.

            • QuantityConfiguration (string) (optional) – Determines if acceptors are allowed to configure quantity for each dimension in rate card. Possible values are Allowed and Disallowed. Default value is Allowed.

      • ResaleFixedUpfrontPricingTerm (object) – Defines a pre-paid pricing model where the customers are charged a fixed upfront amount.

        • Type (string) (required) – Category of the term being updated.

        • CurrencyCode (string) – Defines the currency for prices mentioned in this term. Defines the currency for the prices mentioned in this term. USD, AUD, EUR, GBP, and JPY are supported.

        • Price (string) (required) – Fixed amount to be charged to the customer when this term is accepted.

        • Duration (string) (required) – Contract duration of the ResaleAuthorization. This field supports the ISO 8601 format.

        • Grants (array of structures) (required) – Entitlements that will be granted to the acceptor of fixed upfront pricing 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 MaxQuantity is not provided, the buyer will be able to use an unlimited amount of the given dimension.

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 anywhere from a few minutes to a few hours.

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. The 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
Terms

Required

Each term can be present only one time. Allowed terms are:

  • ResaleUsageBasedPricingTerm

  • ResaleConfigurableUpfrontPricingTerm

  • ResaleFixedUpfrontPricingTerm

PricingModel

Required

Allowed values: Free, Contract, Usage

When PricingModel is Free, Terms must be an empty list. Otherwise, Terms must contain at least one term.

Terms[].ResaleUsageBasedPricingTerm.CurrencyCode

Required

Allowed values: ["USD", "AUD", "CAD", "EUR", "GBP", "INR", "JPY"]

Terms[].ResaleUsageBasedPricingTerm.RateCards

Required

Must not be null or empty

Terms[].ResaleUsageBasedPricingTerm.RateCards[].DimensionKey

Required

Must not be null or empty

Terms[].ResaleUsageBasedPricingTerm.RateCards[].Price

Required

Must not be null or empty

Data type is "String"

Must be non-negative

Support up to 8 Decimal

Maximum value is 100,000,000

No special characters supported

Terms[].ResaleConfigurableUpfrontPricingTerm.CurrencyCode

Required

Allowed values: ["USD", "AUD", "CAD", "EUR", "GBP", "INR", "JPY"]

Terms[].ResaleConfigurableUpfrontPricingTerm.RateCards[].Selector.Type

Required

Must not be null or empty

Allowed values: Duration

Terms[].ResaleConfigurableUpfrontPricingTerm.RateCards[].Selector.Value

Required

Must not be null or empty

Expected format: ISO 8601 duration

Terms[].ResaleConfigurableUpfrontPricingTerm.RateCards[].RateCard.DimensionKey

Required

Must not be null or empty

Terms[].ResaleConfigurableUpfrontPricingTerm.RateCards[].RateCard.Price

Required

Must not be null or empty

Data type is "String"

Must be non-negative

Support up to 3 Decimal

No special characters supported

Terms[].ResaleConfigurableUpfrontPricingTerm.RateCards[].Constraints

Optional
Terms[].ResaleFixedUpfrontPricingTerm.CurrencyCode Required

Allowed values: ["USD", "AUD", "CAD", "EUR", "GBP", "INR", "JPY"]

Terms[].ResaleFixedUpfrontPricingTerm.Price

Required

Must not be null or empty

Data type is "String"

Must be non-negative

Support up to 3 Decimal

No special characters supported

Maximum value is 100,000,000,000

Terms[].ResaleFixedUpfrontPricingTerm.Duration

Required

Must not be null or empty

Expected format: ISO 8601 duration

Terms[].ResaleFixedUpfrontPricingTerm.Grants[].DimensionKey

Required

Must not be null or empty

Terms[].ResaleFixedUpfrontPricingTerm.Grants[].MaxQuantity

Required

Must not be null or empty

Must be between 1 and 2,147,483,646

An unknown property No additional properties are allowed

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
INVALID_CURRENCY_CODE Provide the same CurrencyCode across all pricing and payment terms.
INCOMPATIBLE_PRODUCT Use existing, available dimensions in the product in [x].
DUPLICATE_DIMENSION_KEYS Provide rate card with a unique list of dimension keys in [x]
INVALID_RATE_CARD Provide dimensions that have the same unit in [x]
INVALID_RATE_CARD Provide a rate card for only metered dimensions in ResaleUsageBasedPricingTerm.
INVALID_RATE_CARD Provide usage based rates for all available metered dimensions in ResaleUsageBasedPricingTerm.
TOO_MANY_RATES Provide RateCards within the allowed limits in ResaleUsageBasedPricingTerm.
DUPLICATE_SELECTORS Provide a unique list of Selectors in ResaleConfigurableUpfrontPricingTerm.
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 either all metered or all entitled dimensions in [x].
INCOMPATIBLE_RATE_CARD_CONSTRAINTS Set MultipleDimensionSelection and QuantityConfiguration to Disallowed in ResaleConfigurableUpfrontPricingTerm for the PricingModel.
TOO_MANY_RATE_CARDS Only one rate card in ConfigurableUpfrontPricingTerm is allowed for the product.
INCOMPATIBLE_TERMS The following terms aren't compatible with the PricingModel: [x,y,z].
TOO_MANY_RATES Provide RateCards within the allowed limits in [x term].
TOO_MANY_GRANTS Provide up to [N] grants in [x term].
INVALID_SELECTOR_DURATION_VALUE Provide duration between 1 and 144 months in ResaleConfigurableUpfrontPricingTerm
INVALID_DURATION Provide duration between 1 and 144 months in ResaleFixedUpfrontPricingTerm
INVALID_SELECTOR_DURATION_VALUE Ensure duration granularity is at the day level for metered dimensions in ResaleConfigurableUpfrontPricingTerm.
INVALID_DURATION Ensure duration granularity is at the day level for metered dimensions in ResaleFixedUpfrontPricingTerm.
INVALID_RATE_CARD Provide only entitled dimensions in [x].
MISSING_DURATION Provide a Duration in [x].
DUPLICATE_DIMENSION_KEYS Provide Grants with a unique list of dimension keys in [x].
INCOMPATIBLE_PAYMENT_SETTINGS Update your payment settings to be compatible with the CurrencyCode.
INVALID_CURRENCY_CODE Provide a supported CurrencyCode.
INVALID_CURRENCY_CODE Provide the same CurrencyCode across all pricing and payment terms.
INVALID_PRICE Price value cannot have decimal for provided CurrencyCode in [x].

Update payment schedule

You can use the Catalog API to change payment-associated details, such as a flexible payment schedule, in AWS Marketplace.

To update payment-associated details for your Resale Authorization, 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": "ResaleAuthorization@1.0", "Identifier": "resaleauthz-123456789" }, "DetailsDocument": { "Terms": [ { "Type": "ResalePaymentScheduleTerm", "CurrencyCode": "USD", "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 Resale Authorization.

    • Type (string) (required) – The Type is always ResaleAuthorization@1.0.

    • Identifier (string) (required) – Your Resale Authorization ID. For more information, see Identifier.

  • DetailsDocument (object) (required) – Specifics of the request.

    • Terms (array of structures) – List of payment terms that you want to update. Supported payment terms are:

      • ResalePaymentScheduleTerm (object) – Defines an installment-based pricing model where the customers are charged a fixed price on different dates during the agreement validity period.

        • Type (string) – Category of the term being updated.

        • CurrencyCode (string) (required) – Defines the currency for the payment mentioned in the schedule. USD, AUD, EUR, GBP, and JPY are supported.

        • 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) (required) – The date the customer would pay the price defined in this payment schedule term. This field supports the ISO 8601 format.

          • ChargeAmount (string) (required) – The price the customer would pay on a 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 anywhere from a few minutes to a few hours.

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 schema validations are specific to UpdatePaymentScheduleTerms actions in the AWS Marketplace Catalog API. The 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

List size must be at most 1

Pass an empty list to remove all payment schedule terms

422
Terms.Type

Required

Not supported for [x] product

Allowed terms: ResalePaymentScheduleTerm

422
Terms[].CurrencyCode

Required

Allowed values: ["USD", "AUD", "CAD", "EUR", "GBP", "INR", "JPY"]

422
Terms[].ResalePaymentScheduleTerm.Schedule

Required

Length must be between 1 and 86

422
Terms[].ResalePaymentScheduleTerm.Schedule.ChargeDate

Required

Must be in ISO 8601 format

Date must be in the future

422
Terms[].ResalePaymentScheduleTerm.Schedule.ChargeAmount

Required

Must be greater than 0

Support up to 2 Decimal

Maximum value is 100,000,000,000

422
An unknown property No additional properties are allowed 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. or more information about using DescribeChangeSet to get the status of a change request, see Working with change sets.

Error code Error message
INCOMPATIBLE_TERMS OffersMaxQuantity and AvailabilityEndDate must be present with ResalePaymentScheduleTerm.
TOO_MANY_SCHEDULED_PAYMENTS Provide up to 86 scheduled payments in ResalePaymentScheduleTerm.
DUPLICATE_CHARGE_DATES Provide unique charge dates in ResalePaymentScheduleTerm.
INVALID_CHARGE_DATES Provide a future ChargeDate.
INVALID_CHARGE_DATES Provide a last charge date that is before [x].
MISSING_MANDATORY_TERMS Provide a ResaleFixedUpfrontPricingTerm and ResalePaymentScheduleTerm together.
INVALID_CURRENCY_CODE Provide the same CurrencyCode across all pricing and payment terms.
INCOMPATIBLE_PAYMENT_SETTINGS Update your payment settings to be compatible with the CurrencyCode.
INVALID_CURRENCY_CODE Provide a supported CurrencyCode.
INVALID_CURRENCY_CODE Provide the same CurrencyCode across all pricing and payment terms.
INVALID_CHARGE_AMOUNT ChargeAmount value cannot have decimal for provided CurrencyCode in ResalePaymentScheduleTerm.

Update net payment terms

You can use the Catalog API to set the net payment terms of your Resale Authorization 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.

The net payment term that you set on a Resale Authorization is the maximum term that the reseller can offer to a buyer in the resulting private offer. The reseller can offer the same period or a shorter one, but not a longer one. For more information, see Create a CPPO.

Note

Net payment terms only apply to buyers who have a pay-by-invoice payment method with AWS. If you don't set net payment terms on your Resale Authorization, the reseller can't set net payment terms on their private offer, and the buyer's payment terms with AWS apply.

To set the net payment term of your Resale Authorization, 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": "ResaleAuthorization@1.0", "Identifier": "resaleauthz-123456789" }, "DetailsDocument": { "Terms": [ { "Type": "ResaleNetPaymentTerm", "PaymentDuePeriod": "P60D" } ] } } ] }

Provide information for the fields to add the UpdateNetPaymentTerms change type:

  • Entity (object) (required) – Your Resale Authorization.

    • Type (string) (required) – The Type is always ResaleAuthorization@1.0.

    • Identifier (string) (required) – Your Resale Authorization 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. A Resale Authorization can contain at most one net payment term. To remove the net payment term, provide an empty list. Supported terms are:

      • ResaleNetPaymentTerm (object) – Defines the maximum net payment term that the reseller can offer to a buyer.

        • Type (string) – Type of the term being updated. This is the object value: "ResaleNetPaymentTerm".

        • 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, and P120D.

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 code
Terms

Required

Only ResaleNetPaymentTerm is allowed

List size must be at most 1

Pass an empty list to remove all net payment terms

422
Terms[].Type

Required

Can only be ResaleNetPaymentTerm

422
Terms[].ResaleNetPaymentTerm.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
INCOMPATIBLE_STATUS UpdateNetPaymentTerms request can't be performed after the resale authorization is released.
INCOMPATIBLE_TERMS ResaleNetPaymentTerm is not supported for the seller account [x].

Restrict a Resale Authorization

You can use the Catalog API to set restrict rules to a Resale Authorization in AWS Marketplace.

A restricted Resale Authorization can no longer be used by a reseller to create a private offer. An existing private offer won't be impacted.

To restrict your Resale Authorization, call the StartChangeSet API operation with the RestrictResaleAuthorization change type, as shown in the following example.

Important

This is a non-reversible operation. After the Resale Authorization is marked as Restricted, it can't be in an Active state again.

Request Syntax

POST /StartChangeSet HTTP/1.1 Content-type: application/json { "Catalog": "AWSMarketplace", "ChangeSet": [ { "ChangeType": "RestrictResaleAuthorization", "Entity": { "Type": "ResaleAuthorization@1.0", "Identifier": "resaleauthz-123456789" }, "DetailsDocument": {} } ] }

Provide information for the fields to add the RestrictResaleAuthorization change type:

  • Entity (object) (required) – Your Resale Authorization.

    • Type (string) (required) – The Type is always ResaleAuthorization@1.0.

    • Identifier (string) (required) – Your Resale Authorization ID. For more information, see Identifier.

  • DetailsDocument (object) (required) – Specifics of the request. It must be an empty object for RestrictResaleAuthorization.

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 anywhere from a few minutes to a few hours.

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 schema validations are specific to RestrictResaleAuthorization 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
DetailsDocument Must be empty 422
RestrictResaleAuthorization

Expired ResaleAuthorization can't be marked as Restricted

422
An unknown property No additional properties are allowed 422

Asynchronous Errors

The following errors are specific to RestrictResaleAuthorization actions in the AWS Marketplace Catalog API. These errors are returned when you call DescribeChangeSet after a change set is processing. or more information about using DescribeChangeSet to get the status of a change request, see Working with change sets.

Error code Error message
INCOMPATIBLE_STATUS Expired ResaleAuthorization can't be marked as restricted.

Release a Resale Authorization

You can use the Catalog API to initiate your ResaleAuthorization to an Active state.

ReleaseResaleAuthorization makes your Resale Authorization active so that a reseller can use your Resale Authorization to create private offers.

To release your Resale Authorization, call the StartChangeSet API operation with the ReleaseResaleAuthorization change type, as shown in the following example.

Request Syntax

POST /StartChangeSet HTTP/1.1 Content-type: application/json { "Catalog": "AWSMarketplace", "ChangeSet": [ { "ChangeType": "ReleaseResaleAuthorization", "Entity": { "Type": "ResaleAuthorization@1.0", "Identifier": "resaleauthz-123456789" }, "DetailsDocument": {} } ] }

Provide information for the fields to add the ReleaseResaleAuthorization change type:

  • Entity (object) (required) – Your Resale Authorization.

    • Type (string) (required) – The Type is always ResaleAuthorization@1.0.

    • Identifier (string) (required) – Your Resale Authorization ID. For more information, see Identifier.

  • DetailsDocument (object) (required) – Specifics of the request. It must be empty for ReleaseResaleAuthorization.

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 anywhere from a few minutes to a few hours.

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 schema validations are specific to ReleaseResaleAuthorization actions in the AWS Marketplace Catalog API. The 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
An unknown property No additional properties are allowed 422

Asynchronous Errors

When you release a Resale Authorization, AWS Marketplace revalidates the entire Resale Authorization as a final check. This includes the validations for every change type you used to build it, so any error described earlier in this topic can be returned again at release time.

The following errors are specific to validations that run only when the Resale Authorization is evaluated as a whole. 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
MISSING_MANDATORY_TERMS Provide a BuyerLegalTerm.
MISSING_MANDATORY_TERMS Provide a PricingTerm.
INCOMPATIBLE_PRODUCT Use an active product in limited or public state.
MISSING_MANDATORY_TERMS Provide a ResaleFixedUpfrontPricingTerm and ResalePaymentScheduleTerm together.
INCOMPATIBLE_BUYER_TARGETING At least one Buyer account must be present for ResaleAuthorization with PreExistingBuyerAgreement.
MISSING_MANDATORY_TERMS Provide at least one of [x,y,z].
INCOMPATIBLE_TERMS OffersMaxQuantity and AvailabilityEndDate must be present with ResalePaymentScheduleTerm.
DUPLICATE_TERM_TYPES Provide a unique list of term types.
INCOMPATIBLE_TERMS [x] is not supported together with the following terms: [y].
INVALID_AVAILABILITY_END_DATE Provide an AvailabilityEndDate that is before all the ChargeDate in ResalePaymentScheduleTerms.
INVALID_CHARGE_DATE Provide a last charge date that is before [date].
INVALID_RESELLER_ACCOUNT Provide a valid reseller account.
INCOMPATIBLE_STATUS [x] request can't be performed after the resale authorization is released.

Describe an existing Resale Authorization

To describe Resale Authorization details, call the DescribeEntity API operation with the ResaleAuthorization@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 ResaleAuthorization to describe.

Response Syntax

The response to this request gives you the offer details and looks like the following.

{ "EntityType": "ResaleAuthorization@1.0", "EntityIdentifier": "resaleauthz-123456789", "EntityArn": "arn:aws:aws-marketplace:us-east-1:111122223333:AWSMarketplace/ResaleAuthorization/resaleauthz-123456789", "LastModifiedDate": "2021-03-10T21:57:16Z", "DetailsDocument": { "Name": "TestResaleAuthorization", "Description": "ResaleAuthorization for Test Product", "ProductId": "prod-ad8EXAMPLE51", "ProductArn": "arn:aws:aws-marketplace:us-east-1:123456789012:AWSMarketplace/SaaSProduct/prod-ad8EXAMPLE51", "ProductName": "TestProduct", "Status": "Active", /*Draft, Active, Restricted*/ "SourceAuthorization": "resaleauthz-987654321", "PreExistingBuyerAgreement": { "AcquisitionChannel": "Unknown", "PricingModel": "Unknown" }, "CreatedDate": "2023-07-18T16:39:31.335Z", "ManufacturerLegalName": "ChannelCAPI.Inc", "ManufacturerAccountId": "123456789012", /* The manufacturer and the issuer can be the same entity */ "IssuerLegalName": "ChannelCAPI.Inc", "IssuerAccountId": "123456789012", "Dimensions": [ { "Name": "Protected Resources", "Description": "Additional 100 protected resources", "Key": "hundredresources", "Unit": "Units", "Types": [ "Entitled" ] } ], "OfferDetails": { "OfferExtendedStatus": "Not Started", /* Not Started, Completed-Used, Completed-Usable*/ "OfferCreatedCount": 0 }, "Terms": [ { "Type": "ResaleNetPaymentTerm", "Id": "term_id_placeholder", "PaymentDuePeriod": "P60D" }, { "Type": "ResaleUsageBasedPricingTerm", "Id": "term_id_placeholder", "CurrencyCode": "USD", "RateCards": [ { "RateCard": [ { "DimensionKey": "resource_number", "Price": "0.05" }, { "DimensionKey": "scanned_data", "Price": "0.05" } ] } ] }, { "Type": "ResaleConfigurableUpfrontPricingTerm", "Id": "term_id_placeholder", "CurrencyCode": "USD", "RateCards": [ { "Selector": { "Type": "Duration", "Value": "P24M" }, "RateCard": [ { "DimensionKey": "hundredresources", "Price": "0.04" }, { "DimensionKey": "tenTBData", "Price": "0.03" }, { "DimensionKey": "channel_custom", "Price": "0.02" } ], "Constraints": { "MultipleDimensionSelection": "Allowed", "QuantityConfiguration": "Allowed" } } ] }, { "Type": "ResaleFixedUpfrontPricingTerm", "Id": "term-sdh27fb2", "CurrencyCode": "USD", "Duration": "P180D", "Price": "0.0", "Grants": [ { "DimensionKey": "sdf73rbns93nl120d10xm1", "MaxQuantity": 1 } ] }, { "Type": "ResalePaymentScheduleTerm", "Id": "term-sdh27fb2", "CurrencyCode": "USD", "Schedule": [ { "ChargeDate": "2018-07-01T00:00:00.000Z", "ChargeAmount": "200.00" }, { "ChargeDate": "2019-05-01T00:00:00.000Z", "ChargeAmount": "200.00" } ] }, { "Type": "BuyerLegalTerm", "Id": "term_id_placeholder", "Documents": [ { "Type": "StandardEula", "Url": "https://resale-auth-legal-terms-iad-beta.s3.us-east-1.amazonaws.com/09ae57d6-c75a-3a4c-aadf-9b866bae64ab/a85cace8-6d9d-40ca-a053-78fc265479bf?isSigned=yes" } ] }, { "Type": "ResaleLegalTerm", "Id": "term_id_placeholder", "Documents": [ { "Type": "StandardResellerContract", "Url": "https://resale-auth-legal-terms-iad-beta.s3.us-east-1.amazonaws.com/09ae57d6-c75a-3a4c-aadf-9b866bae64ab/bed55b56-7ab4-4c4c-b633-3bf4f6efcb98?isSigned=yes" } ] }, { "Type": "BuyerValidityTerm", "Id": "term_id_placeholder", "MaximumAgreementStartDate": "2023-09-25T23:59:59.000Z" }, { "Type": "BuyerTargetingTerm", "Id": "term_id_placeholder", "PositiveTargeting": { "BuyerAccounts": [ { "AwsAccountId": "444455556666" } ] } } ], "Rules": [ { "Type": "AvailabilityRule", "Id": "availability_rule_id_placeholder", /* If the AvailabilityEndDate and OffersMaxQuantity not present Usage will be Unlimited*/ "Usage": "Limited", "AvailabilityEndDate": "2022-05-31T23:59:59Z", "OffersMaxQuantity": 1 }, { "Type": "PartnerTargetingRule", "Id": "partner_targeting_rule_id_placeholder", "ResellerAccountId": "777777777777", "ResellerLegalName": "ChannelCAPICP.Inc", "ResellerRole": "ChannelPartner" } ] } }

The following is information about the fields you see in the DescribeEntity response.

  • EntityType (string) – The named type of the entity, which is ResaleAuthorization@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 (2018-02-27T13:45:22Z).

  • DetailsDocument (object) (required) – This JSON string includes the details of the entity.

    • Name (string) – Name associated with the ResaleAuthorization for better readability to you and your resellers. It's displayed as part of the Agreement information.

    • Description (string) – Description is a free-form text which is meant to be used only by you and will never be exposed to buyers.

    • ProductId (string) – Description is a free-form text which is meant to be used only by you and will never be exposed to buyers.

    • AgreementToken (string) – Generated from content in ResaleAuthorization. It contains information about terms, rules, and proposer while creating an agreement. It's used for authorization checks and validations during procurement.

    • Terms (array of structures) – List of terms presented for acceptance.

    • Rules (array of structures) – List of rules or set of instructions.

    • IssuerAccountId (string) – The AWS account of the party that issued the Resale Authorization.

    • IssuerLegalName (string) – The legal name of the party that issued the Resale Authorization.

    Note

    When a Resale Authorization has no separate issuer, IssuerAccountId and IssuerLegalName return the same values as ManufacturerAccountId and ManufacturerLegalName.