
I tried retrieving Opportunity information from AWS Partner Central using the 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," allowing information to be shared and managed 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 time-consuming when you want to review a large volume at once.
This time, I tried an approach to retrieve Opportunity information using the AWS CLI.
What We'll Do
I'll run 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 a deal and AI insights (quality scores, recommended actions, etc.)
I'll check what kind of information each can retrieve, and what differences exist between the two.
At the end, I'll also cover example commands for bulk retrieval of a large number of records.
The prerequisites are as follows:
- Registration with AWS Partner Central is complete
- Access is available via an IAM identity with the necessary permissions
Retrieving Deal Information with aws partnercentral-selling get-opportunity
aws partnercentral-selling get-opportunity is a command that retrieves detailed information about deals that a partner has registered themselves (customer company information, deal content, sales activity history, stage, etc.).
An example of the 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 + numbers, pattern O[0-9]{1,19}) |
--region |
- | Explicitly specify us-east-1 |
An example of the command output is as follows:
{
"Catalog": "<Catalog type (AWS or Sandbox)>",
"PrimaryNeedsFromAws": [
"<Request content for AWS (Co-Sell type. e.g.: 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 person's email address>",
"FirstName": "<End customer contact person's first name>",
"LastName": "<End customer contact person's last name>",
"BusinessTitle": "<End customer contact person's job title>",
"Phone": "<End customer contact person'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 as 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 challenges and partner's solution (20–2000 characters)>",
"CustomerUseCase": "<Expected use case/workload type>",
"SalesActivities": [
"<Completed sales activities. 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 uniquely identifying 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 associated AWS Marketplace solution>"
]
},
"LifeCycle": {
"Stage": "<Deal progression 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 person's email address>",
"FirstName": "<Contact person's first name>",
"LastName": "<Contact person's last name>",
"BusinessTitle": "<Role. OpportunityOwner or PartnerAccountManager>",
"Phone": "<Contact person'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 contacts, AWS's own stage understanding, AI-based deal quality scores and improvement suggestions).
An example of the 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 |
An example of the output is as follows:
{
"RelatedOpportunityId": "<Partner-side deal ID. Pattern: O[0-9]{1,19}>",
"Origin": "<Source of the deal. 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 completeness score. Integer from 0 to 100>",
"Trend": "<Trend from previous score. Improving / Declining / No Change>"
},
"Recommendations": [
{
"Type": "<Type of recommendation source. OpportunityQuality / SolutionRecommendation / SpecialistRecommendation>",
"Details": "<Body of the AI improvement suggestion>"
}
]
},
"RelatedEntityIds": {
"Solutions": [
"<Associated partner solution ID>"
],
"AwsMarketplaceSolutions": [
"<ARN of associated AWS Marketplace solution>"
]
},
"Customer": {
"Contacts": []
},
"Project": {
"ExpectedCustomerSpend": [
{
"Amount": "<Estimated amount (numeric string)>",
"CurrencyCode": "<Currency code>",
"Frequency": "<Frequency. Fixed as 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's the Difference Between get-opportunity and get-aws-opportunity-summary?
I compared the information that can be retrieved with each command. 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 uniquely identifying the deal |
| PartnerOpportunityIdentifier | ○ | × | Partner CRM-side identifier |
| PrimaryNeedsFromAws | ○ | × | Request content for AWS (Co-Sell type) |
| NationalSecurity | ○ | × | Whether this is a national security-related deal |
| OpportunityType | ○ | × | New/renewal/expansion classification |
| Marketing (CampaignName, etc.) | ○ | × | Information originating from marketing initiatives |
| LastModifiedDate / CreatedDate | ○ | × | Update and creation dates of the deal itself |
| 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 exclusive 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-side contact information |
Project
| Item | opp | summary | Notes |
|---|---|---|---|
| ExpectedCustomerSpend | ○ | ○ | Same name, but the calculating entity differs |
| AwsPartition | ○ | ○ | Classification such as aws-eusc |
| DeliveryModels / Title / CustomerBusinessProblem / CustomerUseCase / SalesActivities / ApnPrograms / CompetitorName, etc. | ○ | × | Group of items describing the deal content itself |
| ExpectedContractDuration | ○ | × | Contract duration used to convert 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 partner-registered value; 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's deal review |
While Stage has the same name, it does not refer to the same value. From a quick review, cases where "AWS side is blank" or "the two contain different values" were common.
OpportunityTeam
| Item | opp | summary | Notes |
|---|---|---|---|
| Email / FirstName / LastName | ○ | ○ | opp: partner-side contacts; summary: AWS-side contacts |
| BusinessTitle | ○ | ○ | Different value options |
| Phone | ○ | × | Contact person's phone number |
RelatedEntityIdentifiers / RelatedEntityIds
| Item | opp | summary | Notes |
|---|---|---|---|
| Solutions | ○ | ○ | Associated partner solution ID (S- + numbers) |
| AwsProducts | ○ | ○ | Associated AWS product name |
| AwsMarketplaceSolutions | ○ | ○ | ARN of associated AWS Marketplace solution |
| AwsMarketplaceProducts | ○ | ○ | ARN of associated AWS Marketplace product |
| AwsMarketplaceOffers / AwsMarketplaceOfferSets | ○ | × | Associations 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, items that exist in only one, and items with similar names that refer to different things.
Retrieving Information for Multiple Opportunities at Once
Since we're using the AWS CLI, it would be great to retrieve information for multiple Opportunities in bulk. I'll introduce a pattern for retrieving the full set of information, and a pattern for retrieving specific fields across all records.
The list of target Opportunities is assumed to be saved in a text file in the following format:
O11111111
O22222222
O33333333
O44444444
O55555555
The following environment was used for verification:
- 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 Information for Multiple Opportunities into JSON Files
Retrieve the results of both commands together. Save the results to one JSON file per Opportunity and per command.
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 output would look 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 Fields Across All Records
There may be cases where you want to quickly check only specific fields. The exact fields to check depend entirely on your requirements, so the command can't be used as-is, but I'll include an example here.
In this case, I want to retrieve the following fields from get-opportunity:
TitleExpectedCustomerSpend.AmountLifeCycle.Stage
Here is an example command for that purpose:
{
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 output would look 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
That was a look at retrieving AWS Partner Central Opportunity information using the AWS CLI.
I think this is a good fit for one-off cases where you want to check specific fields across multiple Opportunities. Please refer to it in situations where checking them one by one in the AWS Management Console is too tedious, but writing a full script seems like overkill.
That's a wrap from Chibayuki (@batchicchi).
