I tried retrieving Opportunity information from AWS Partner Central using the AWS CLI

I tried retrieving Opportunity information from AWS Partner Central using the AWS CLI

I tried retrieving Opportunity information from AWS Partner Central using the AWS CLI. I will introduce the information that can be retrieved and the differences between the two commands, get-opportunity and get-aws-opportunity-summary, as well as examples of performing batch operations on multiple Opportunities.
2026.09.02

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

https://docs.aws.amazon.com/ja_jp/partner-central/latest/getting-started/what-is-partner-central.html

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 of get-opportunity
  • summary: Result of get-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:

OppIds.txt
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:

  • Title
  • ExpectedCustomerSpend.Amount
  • LifeCycle.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).

References

Share this article

AWSのお困り事はクラスメソッドへ