

AWS Marketplace API リファレンスが再構築されました。サポートされている API オペレーションの詳細については、[AWS Marketplace API リファレンス](https://docs.aws.amazon.com/marketplace/latest/APIReference/Welcome.html)を参照してください。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# カタログデータを使用してインターフェイスを構築する
<a name="build-interfaces-with-catalog-data"></a>

 AWS Marketplace Discovery API を使用して、プログラムでカタログにアクセスし、独自のプラットフォームで製品と料金情報を表示できます。このセクションでは、Discovery API を使用して、お客様がナビゲートするためのストアフロント、パートナーポータル、統合販売エクスペリエンスなどのカスタムインターフェイスを構築する方法について説明します。

## アーキテクチャの概要
<a name="discovery-seller-architecture"></a>

一般的な統合は次のパターンに従います。

1. **ブラウズエクスペリエンス** — を呼び出し`SearchListings`て検索テキストとフィルターに基づいてリストの概要を取得し、カテゴリナビゲーションとフィルターオプション`SearchFacets`にカウントを入力します。

1. **製品詳細ページ** — `GetListing`または `GetProduct`を呼び出して、製品の詳細、メディア、レビュー全体を表示します。

1. **料金表示** — `ListPurchaseOptions`、`GetOffer`、および を呼び出し`GetOfferTerms`て料金オプションを表示します。

## ブラウズエクスペリエンスを構築する
<a name="discovery-seller-browse"></a>

を使用して`SearchListings`、検索テキストとフィルターに基づいてリスト概要を取得し、動的フィルターナビゲーションを構築`SearchFacets`します。ファセットには、カテゴリ、フルフィルメントタイプ、料金モデル、料金単位、パブリッシャー、デプロイステータスが含まれます。各ファセット値には一致するリストの数が含まれており、フィルターオプションと一緒に表示できます。

```
import boto3

client = boto3.client('marketplace-discovery', region_name='us-east-1')

# Get facet values for building filter navigation
facets = client.search_facets(
    facetTypes=['CATEGORY', 'FULFILLMENT_OPTION_TYPE', 'PRICING_MODEL']
)

for facet_type, values in facets['listingFacets'].items():
    print(f"\n{facet_type}:")
    for facet in values:
        print(f"  {facet['displayName']} ({facet['count']})")

# Search listings with filters applied from user selections
response = client.search_listings(
    searchText='machine learning',
    filters=[
        {
            'filterType': 'CATEGORY',
            'filterValues': ['Machine Learning']
        },
        {
            'filterType': 'PRICING_MODEL',
            'filterValues': ['USAGE']
        }
    ],
    sortBy='RELEVANCE',
    maxResults=25
)

for listing in response['listingSummaries']:
    print(f"{listing['listingName']} - {listing['shortDescription']}")
```

## 製品詳細ページの構築
<a name="discovery-seller-product-pages"></a>

`GetListing` または `GetProduct`を使用して、製品の詳細、メディア、レビュー全体を表示します。バッジ、カテゴリ、料金概要など、出品の概要`GetListing`が必要な場合は、 を使用します。説明、ハイライト、メディアなどの詳細な製品情報`GetProduct`が必要な場合に使用します。を呼び出し`ListFulfillmentOptions`て、特定の製品のデプロイオプションを取得します。

```
def get_product_page_data(listing_id, product_id):
    """Retrieve data for a product detail page."""

    # Use GetListing for listing-level overview
    listing = client.get_listing(listingId=listing_id)

    # Or use GetProduct for detailed product information
    product = client.get_product(productId=product_id)

    # Get deployment options for the product
    fulfillment = client.list_fulfillment_options(productId=product_id)

    return {
        'listing': listing,
        'product': product,
        'fulfillmentOptions': fulfillment
    }
```

## 料金情報を表示する
<a name="discovery-seller-pricing"></a>

`ListPurchaseOptions` を使用して製品の利用可能なオファーを検索し、 `GetOffer` `GetOfferTerms`を使用して詳細な料金を取得します。料金モデル、レートカード、期間の詳細を表示して、顧客がオプションを評価するのに役立ちます。

```
def get_pricing_for_product(product_id):
    """Retrieve pricing options for display."""
    options = client.list_purchase_options(
        filters=[{
            'filterType': 'PRODUCT_ID',
            'filterValues': [product_id]
        }]
    )

    pricing = []
    for option in options.get('purchaseOptions', []):
        for entity in option['associatedEntities']:
            offer = client.get_offer(
                offerId=entity['offer']['offerId']
            )
            terms = client.get_offer_terms(
                offerId=entity['offer']['offerId']
            )
            pricing.append({
                'option': option,
                'offer': offer,
                'terms': terms
            })

    return pricing
```

## ベストプラクティス
<a name="discovery-seller-best-practices"></a>
+ **キャッシュレスポンス** — 製品と料金データの変更はまれです。API レスポンスを 15～60 分間キャッシュして、API コールを減らし、ページのロード時間を短縮します。
+ **ページ分割の処理** — ページ分割されたオペレーションからすべての結果を取得`nextToken`するために使用します。ページ分割トークンは 24 時間後に期限切れになります。
+ **再試行ロジックの実装** — `ThrottlingException` (HTTP 429) レスポンスにはエクスポネンシャルバックオフを使用します。
+ **表示属性** — プラットフォームに AWS Marketplace データを表示するときは、[AWS 商標ガイドライン](https://aws.amazon.com/trademark-guidelines/)に従ってください。
+ **API コールの最小化** — ユーザーが特定の製品に移動するときに、`SearchListings`サマリーデータおよびコール詳細 APIs (`GetProduct`、`GetOffer`、`GetOfferTerms`) にのみ使用します。

**注記**  
Discovery API は、SaaS AWS Marketplace、AI エージェントとツール、AMI、コンテナ、機械学習モデルなど、 のすべての製品タイプをサポートしています。インターフェイスでは、カタログの全範囲を表示できます。