
I tried retrieving Opportunity information from AWS Partner Central using AWS CLI
This page has been translated by machine translation. View original
Good evening, this is Chiba (Yuki).
AWS Partner Central is a hub for AWS partners to manage their collaboration with AWS. It provides features such as co-selling, product/solution sales on AWS Marketplace, and application for program benefits like MDF (Marketing Development Funds).
Regarding co-selling, deals that partners are responsible for are registered in this portal as "Opportunities", enabling information sharing and management with the AWS sales team.
These Opportunities can be viewed from AWS Partner Central on the AWS Management Console, but checking them one by one can be cumbersome when you want to review a large volume all at once.
This time, I tried an approach to retrieve Opportunity information using the AWS CLI.
What We'll Do
I'll execute the following two commands:
aws partnercentral-selling get-opportunity- A command to retrieve detailed information about deals registered by a partner
aws partnercentral-selling get-aws-opportunity-summary- A command to retrieve AWS-side status for deals and AI insights (quality scores, recommended actions, etc.)
I'll check what kind of information can be obtained from each, and what differences exist between them.
At the end, I'll also cover an example command for bulk retrieval of a large volume of data.
The prerequisites are as follows:
- Registration with AWS Partner Central is complete
- Access is possible with an IAM identity that has the necessary permissions
Retrieving Deal Information with aws partnercentral-selling get-opportunity
aws partnercentral-selling get-opportunity is a command that retrieves detailed information (customer company information, deal content, sales activity history, stage, etc.) about deals that partners have registered themselves.
An example of options to specify when running the command is as follows:
aws partnercentral-selling get-opportunity \
--catalog AWS \
--identifier <Opportunity ID> \
--region us-east-1
| Option | Required | Description |
|---|---|---|
--catalog |
○ | AWS or Sandbox. Use AWS to view production deals |
--identifier |
○ | The Opportunity ID of the deal (O + digits, pattern O[0-9]{1,19}) |
--region |
- | Explicitly specify us-east-1 |
An image of the command output is as follows:
{
"Catalog": "<Catalog type (AWS or Sandbox)>",
"PrimaryNeedsFromAws": [
"<Request content to AWS (Co-Sell type. Example: Co-Sell - Deal Support)>"
],
"NationalSecurity": "<Whether this is a national security-related deal (Yes/No)>",
"PartnerOpportunityIdentifier": "<Identifier for this deal in the partner's CRM>",
"Customer": {
"Account": {
"Industry": "<End customer's industry>",
"CompanyName": "<End customer's company name>",
"WebsiteUrl": "<End customer's company website URL>",
"AwsAccountId": "<End customer's AWS account ID (12 digits)>",
"Address": {
"PostalCode": "<End customer's postal code>",
"CountryCode": "<End customer's country code (ISO, e.g.: JP)>"
}
},
"Contacts": [
{
"Email": "<End customer contact's email address>",
"FirstName": "<End customer contact's first name>",
"LastName": "<End customer contact's last name>",
"BusinessTitle": "<End customer contact's job title>",
"Phone": "<End customer contact's phone number>"
}
]
},
"Project": {
"DeliveryModels": [
"<Delivery model. SaaS or PaaS / BYOL or AMI / Managed Services / Professional Services / Resell / Other>"
],
"ExpectedCustomerSpend": [
{
"Amount": "<Estimated amount (numeric string)>",
"CurrencyCode": "<Currency code (USD/JPY, etc.)>",
"Frequency": "<Frequency. Fixed to Monthly>",
"TargetCompany": "<Aggregation target. AWS=MRR estimate calculated by AWS / Self=Partner's own TCV input>"
}
],
"Title": "<Deal title/name>",
"CustomerBusinessProblem": "<Description of customer's challenge and partner's solution (20–2000 characters)>",
"CustomerUseCase": "<Expected use case/workload type>",
"SalesActivities": [
"<Sales activities conducted. Options such as Initialized discussions with customer>"
]
},
"OpportunityType": "<Deal type. Net New Business (new) / Flat Renewal (renewal) / Expansion (expansion)>",
"Marketing": {
"CampaignName": "<AWS marketing campaign code>",
"Source": "<Whether it originates from AWS marketing activity. Marketing Activity / None>",
"AwsFundingUsed": "<Whether MDF (Marketing Development Funds) was used. Yes/No>"
},
"Id": "<Unique identifier for the deal. Pattern: O[0-9]{1,19}>",
"Arn": "<ARN that uniquely identifies the deal. Format: arn:aws:partnercentral:<region>:<AWS account ID>:catalog/<Catalog>/opportunity/<Id>>",
"LastModifiedDate": "<Last modified date and time>",
"CreatedDate": "<Creation date and time>",
"RelatedEntityIdentifiers": {
"Solutions": [
"<Associated partner solution ID. Pattern: S-[0-9]{1,19}>"
],
"AwsProducts": [
"<Associated AWS product name>"
],
"AwsMarketplaceSolutions": [
"<ARN of the associated AWS Marketplace solution>"
]
},
"LifeCycle": {
"Stage": "<Deal progress stage. Prospect / Qualified / Technical Validation / Business Validation / Committed / Launched / Closed Lost>",
"TargetCloseDate": "<Target date for billing start/go-live>",
"ReviewStatus": "<AWS review status. Pending Submission / Submitted / In review / Approved / Rejected / Action Required>"
},
"OpportunityTeam": [
{
"Email": "<Contact's email address>",
"FirstName": "<Contact's first name>",
"LastName": "<Contact's last name>",
"BusinessTitle": "<Role. OpportunityOwner or PartnerAccountManager>",
"Phone": "<Contact's phone number>"
}
]
}
Retrieving AWS-Side Information with aws partnercentral-selling get-aws-opportunity-summary
aws partnercentral-selling get-aws-opportunity-summary is a command that retrieves how AWS views a registered Opportunity (AWS-side personnel, AWS's own stage understanding, AI-based deal quality scores and improvement suggestions).
An example of options to specify when running the command is as follows:
aws partnercentral-selling get-aws-opportunity-summary \
--catalog AWS \
--related-opportunity-identifier <Opportunity ID> \
--region us-east-1
| Option | Required | Description |
|---|---|---|
--catalog |
○ | AWS or Sandbox |
--related-opportunity-identifier |
○ | The Opportunity ID of the deal to associate |
--region |
- | Explicitly specify us-east-1 |
The output image is as follows:
{
"RelatedOpportunityId": "<Partner-side deal ID. Pattern: O[0-9]{1,19}>",
"Origin": "<Deal origin. AWS Referral (originated from AWS) / Partner Referral (originated from partner)>",
"InvolvementType": "<AWS involvement type. For Visibility Only / Co-Sell (co-selling)>",
"Visibility": "<Visibility level. Full / Limited (for special programs or confidential deals)>",
"LifeCycle": {
"TargetCloseDate": "<Target date for billing start/go-live>",
"Stage": "<Deal stage as understood by AWS. Empty if not yet evaluated>",
"NextSteps": "<Immediate next steps based on AWS guidance>"
},
"OpportunityTeam": [
{
"Email": "<AWS contact's email address>",
"FirstName": "<AWS contact's first name>",
"LastName": "<AWS contact's last name>",
"BusinessTitle": "<AWS contact's role. AWSSalesRep / AWSAccountOwner / WWPSPDM / PDM / PSM / ISVSM / Signatory>"
}
],
"Insights": {
"OpportunityQuality": {
"Score": "<Deal content richness score. Integer from 0 to 100>",
"Trend": "<Trend from previous score. Improving / Declining / No Change>"
},
"Recommendations": [
{
"Type": "<Type of suggestion source. OpportunityQuality / SolutionRecommendation / SpecialistRecommendation>",
"Details": "<Body of AI improvement suggestion>"
}
]
},
"RelatedEntityIds": {
"Solutions": [
"<Associated partner solution ID>"
],
"AwsMarketplaceSolutions": [
"<ARN of the associated AWS Marketplace solution>"
]
},
"Customer": {
"Contacts": []
},
"Project": {
"ExpectedCustomerSpend": [
{
"Amount": "<Estimated amount (numeric string)>",
"CurrencyCode": "<Currency code>",
"Frequency": "<Frequency. Fixed to Monthly>",
"TargetCompany": "<Aggregation target. AWS=MRR estimate calculated by AWS>"
}
]
},
"CosellMotion": "<Engagement classification. AWS Field-engaged / Agent-engaged / Partner-led>",
"Catalog": "<Catalog type (AWS or Sandbox)>"
}
What Is the Difference Between get-opportunity and get-aws-opportunity-summary?
I compared the information retrievable from both commands. The column names represent the following:
opp: Result ofget-opportunitysummary: Result ofget-aws-opportunity-summary
Top-Level Items
| Item | opp | summary | Notes |
|---|---|---|---|
| Catalog | ○ | ○ | Common. AWS/Sandbox classification |
| Id / RelatedOpportunityId | ○ | ○ | Different names but refer to the same deal ID |
| Arn | ○ | × | ARN that uniquely identifies the deal |
| PartnerOpportunityIdentifier | ○ | × | Partner CRM-side identifier |
| PrimaryNeedsFromAws | ○ | × | Request content to AWS (Co-Sell type) |
| NationalSecurity | ○ | × | Whether it is a national security-related deal |
| OpportunityType | ○ | × | New/renewal/expansion classification |
| Marketing (CampaignName, etc.) | ○ | × | Information originating from marketing initiatives |
| LastModifiedDate / CreatedDate | ○ | × | Deal's own update and creation date/time |
| Origin | × | ○ | AWS Referral / Partner Referral |
| InvolvementType | × | ○ | For Visibility Only / Co-Sell |
| InvolvementTypeChangeReason | × | ○ | Reason for InvolvementType change |
| Visibility | × | ○ | Full / Limited |
| CosellMotion | × | ○ | AWS Field-engaged / Agent-engaged / Partner-led |
| Insights (quality score, AI recommendations, spend insights) | × | ○ | AI insights unique to summary |
Customer
| Item | opp | summary | Notes |
|---|---|---|---|
| Customer.Account (company name, industry, address, AWS account ID, etc.) | ○ | × | End customer's company information |
| Customer.Contacts | ○ | ○ | Customer contact information |
Project
| Item | opp | summary | Notes |
|---|---|---|---|
| ExpectedCustomerSpend | ○ | ○ | Same name but calculated by different parties |
| AwsPartition | ○ | ○ | Classifications such as aws-eusc |
| DeliveryModels / Title / CustomerBusinessProblem / CustomerUseCase / SalesActivities / ApnPrograms / CompetitorName, etc. | ○ | × | Group of items describing the deal content itself |
| ExpectedContractDuration | ○ | × | Contract duration used for converting TCV (total contract value) to MRR |
For ExpectedCustomerSpend, get-opportunity contains the estimated spend amount entered by the partner, while get-aws-opportunity-summary contains the MRR (≈ monthly AWS usage fee) estimate calculated by AWS AI insights.
LifeCycle
| Item | opp | summary | Notes |
|---|---|---|---|
| Stage | ○ | ○ | opp is the value registered by the partner, summary is AWS's understanding. Empty if not yet evaluated |
| TargetCloseDate | ○ | ○ | Target date for billing start/go-live |
| NextSteps / NextStepsHistory | ○ | ○ | Immediate next steps and their history |
| ClosedLostReason | ○ | ○ | Reason code for Closed Lost |
| ReviewStatus / ReviewComments / ReviewStatusReason | ○ | × | Status of AWS deal review |
Although Stage shares the same name, it does not refer to the same value. From a quick check, cases where "AWS side is blank" or "different values are entered by both parties" were common.
OpportunityTeam
| Item | opp | summary | Notes |
|---|---|---|---|
| Email / FirstName / LastName | ○ | ○ | opp has partner-side contacts, summary has AWS-side contacts |
| BusinessTitle | ○ | ○ | Different option values |
| Phone | ○ | × | Contact's phone number |
RelatedEntityIdentifiers / RelatedEntityIds
| Item | opp | summary | Notes |
|---|---|---|---|
| Solutions | ○ | ○ | Associated partner solution ID (S- + digits) |
| AwsProducts | ○ | ○ | Associated AWS product name |
| AwsMarketplaceSolutions | ○ | ○ | ARN of the associated AWS Marketplace solution |
| AwsMarketplaceProducts | ○ | ○ | ARN of the associated AWS Marketplace product |
| AwsMarketplaceOffers / AwsMarketplaceOfferSets | ○ | × | Association at the offer level |
SoftwareRevenue
| Item | opp | summary | Notes |
|---|---|---|---|
| Value (Amount, CurrencyCode) | ○ | ○ | Contract amount for PARC, etc. |
| EffectiveDate / ExpirationDate | ○ | ○ | Contract start and end dates |
| DeliveryModel | ○ | × | Contract / Pay-as-you-go / Subscription classification |
| Discount | × | ○ | Discount rate (e.g.: 15.00 = 15%) |
I gained a better understanding of the differences, including information that can be retrieved from both, information that exists only in one, and items with similar names that refer to different things.
Retrieving Multiple Opportunities' Information at Once
Since we're using the AWS CLI, it would be great to retrieve information for multiple Opportunities in bulk. I'll introduce patterns for retrieving the full set of information and for cross-cutting retrieval of specific items.
The prerequisite is that the list of target Opportunities is saved in a text file in the following format:
O11111111
O22222222
O33333333
O44444444
O55555555
The operation was verified in the following environment:
- macOS
- Zsh version:
zsh 5.9 (arm64-apple-darwin25.0) - AWS CLI version:
aws-cli/2.36.19 Python/3.14.6 Darwin/25.5.0 exe/arm64 - Jq version:
jq-1.6
Consolidating Multiple Opportunities' Information into JSON Files
Retrieve the results of both commands together. Save the results for each Opportunity and each command into one JSON file.
ts=$(date +%Y%m%d_%H%M%S)
while read -r id; do
[ -z "$id" ] && continue
aws partnercentral-selling get-opportunity \
--catalog AWS \
--identifier "$id" \
--region us-east-1
> "${id}_get-opportunity_${ts}.json"
echo "saved: ${id}_get-opportunity_${ts}.json"
sleep 0.3
aws partnercentral-selling get-aws-opportunity-summary \
--catalog AWS \
--related-opportunity-identifier "$id" \
--region us-east-1
> "${id}_get-aws-opportunity-summary_${ts}.json"
echo "saved: ${id}_get-aws-opportunity-summary_${ts}.json"
sleep 0.3
done < OppIds.txt
The execution image looks like this:
saved: O11111111_get-opportunity_20260902_113612.json
saved: O11111111_get-aws-opportunity-summary_20260902_113612.json
saved: O22222222_get-opportunity_20260902_113612.json
saved: O22222222_get-aws-opportunity-summary_20260902_113612.json
saved: O33333333_get-opportunity_20260902_113612.json
saved: O33333333_get-aws-opportunity-summary_20260902_113612.json
saved: O44444444_get-opportunity_20260902_113612.json
saved: O44444444_get-aws-opportunity-summary_20260902_113612.json
saved: O55555555_get-opportunity_20260902_113612.json
saved: O55555555_get-aws-opportunity-summary_20260902_113612.json
Checking Specific Items Across Multiple Records
There may be cases where you want to quickly check only specific items. Since which items to check depends entirely on requirements, the command cannot be used as-is, but I'll include it as an example.
This time, I want to retrieve the following items from get-opportunity:
TitleExpectedCustomerSpend.AmountLifeCycle.Stage
Here is an example command based on those assumptions:
{
printf "OppID\tTitle\tExpectedCustomerSpend.Amount\tLifeCycle.Stage\n"
while read -r id; do
[ -z "$id" ] && continue
result=$(aws partnercentral-selling get-opportunity \
--catalog AWS \
--identifier "$id" \
--region us-east-1)
title=$(echo "$result" | jq -r '.Project.Title // "-"')
amount=$(echo "$result" | jq -r '[.Project.ExpectedCustomerSpend[]? | select(.TargetCompany=="AWS")][0].Amount // "-"')
stage=$(echo "$result" | jq -r '.LifeCycle.Stage // "-"')
printf "%s\t%s\t%s\t%s\n" "$id" "$title" "$amount" "$stage"
sleep 0.3
done < OppIds.txt
} | column -t -s$'\t'
The execution image looks like this:
OppID Title ExpectedCustomerSpend.Amount LifeCycle.Stage
O11111111 Technical Support Deal A 1500 Launched
O22222222 Technical Support Deal B 2200 Qualified
O33333333 Technical Support Deal C 800 Technical Validation
O44444444 Technical Support Deal D 3000 Business Validation
O55555555 Technical Support Deal E 1200 Committed
Closing
This was a look at retrieving AWS Partner Central Opportunity information using the AWS CLI.
It should be a good fit for cases where you want to check specific items across multiple Opportunities in one go. Please use this as a reference for situations where checking them one by one from the AWS Management Console is too painful, but it's not quite worth writing a full script.
That's all from Chiba Yuki (@batchicchi).
