

AWS Marketplace API 참조가 재구성되었습니다. 지원되는 API 작업에 대한 자세한 내용은 [AWS Marketplace API 참조](https://docs.aws.amazon.com/marketplace/latest/APIReference/Welcome.html)를 참조하세요.

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# AWS Marketplace 카탈로그 API 사용
<a name="catalog-apis"></a>

 AWS Marketplace Catalog API 서비스는 조직에 AWS Marketplace 대해 AWS 또는를 관리할 수 있는 API 인터페이스를 제공합니다 AWS 계정. 승인된 판매자의 경우의 셀프 서비스 게시 기능을 포함하여 제품을 프로그래밍 방식으로 관리할 수 있습니다[AWS Marketplace Management Portal](https://aws.amazon.com/marketplace/management). 프라이빗 마켓플레이스 관리자의 경우 프라이빗 마켓플레이스를 프로그래밍 방식으로 관리할 수 있습니다.

카탈로그 API 작업을 사용하면 기존 제품을 프로그래밍 방식으로 보고 업데이트할 수 있습니다. 를 제품 빌드 또는 배포 파이프라인 AWS Marketplace Catalog API 과 통합하여 AWS Marketplace 제품 업데이트 프로세스를 자동화할 수 있습니다. 카탈로그 API를 기반으로 자체 애플리케이션을 생성하여 제품을 관리할 수도 있습니다 AWS Marketplace. AWS 계정 또는 AWS 조직의 사용자가 프라이빗 마켓플레이스를 통해 보고 구매할 수 있는 제품을 관리할 수 있습니다.

 AWS Marketplace Catalog API 서비스는 표준 AWS API 기능을 제공합니다. 작업에 설명된 REST API 작업을 직접 사용하거나 AWS SDK를 사용하여 사용 중인 프로그래밍 언어 또는 플랫폼에 맞는 API에 액세스할 [https://docs.aws.amazon.com/marketplace-catalog/latest/api-reference/API_Operations.html](https://docs.aws.amazon.com/marketplace-catalog/latest/api-reference/API_Operations.html)수 있습니다. AWS 애플리케이션 개발에 대한 자세한 내용은 [시작하기를 참조하세요 AWS](https://aws.amazon.com/getting-started/). AWS SDKs 사용에 대한 자세한 내용은 [AWS SDKs](https://aws.amazon.com/tools/#SDKs).

## 카탈로그 API 엔터티
<a name="catalog-api-entities"></a>

AWS Marketplace 엔터티는 제품 또는 제안과 같이 다양한 비즈니스 목적에 맞는 데이터 컨테이너입니다. 개체는 유형별로 분류됩니다. 각 엔터티 유형은 특정 비즈니스 도메인(예: 제품 또는 판매자 계정)과 관련된 데이터를 캡슐화합니다.

이 패러다임을 단순화하기 위해 개체는 구조에서 일정 수준의 공통성을 갖도록 설계되었습니다. 따라서 새 비즈니스 도메인을 도입하더라도 완전히 새로운 구조를 배울 필요가 없습니다.

### 일반 구조
<a name="general-structure"></a>

개체의 일반적인 구조는 다음과 같습니다.
+ 버전이 있는 명명된 유형
+ 유형의 특정 인스턴스에 대한 식별자입니다.
+ 개체의 속성을 포함하는 하나 이상의 패싯

### 유형 버전 관리
<a name="versioning"></a>

이름이 지정된 모든 유형에는 유형과 버전이 연결되어 있습니다. 예: `{{Entity}}Product@1.0`. *유형*({{엔터티}} 제품)은 콘텐츠의 분류를 나타냅니다. *버전*(1.0)은 {{Entity}} Product의 구조를 나타냅니다.

버전은 개체의 구조에 대한 세부 정보를 제공합니다. 다음은 버전이 변경되는 시기를 설명합니다.
+ 기존 엔터티는 버전을 변경하지 않고 재구성되지 않습니다. 선택 사항인 새 필드를 추가하면 마이너 버전이 업데이트됩니다.
+ 유형의 구조를 근본적으로 변경하는 모든 기능은 메이저 버전 업데이트로 이어집니다. 그러한 예는 다음과 같습니다.
  + 필드 제거
  + 필드 이름 바꾸기(동일한 의미 체계의 다른 이름)
  + 기존 필드의 의미 변경(예: 예상 유형 변경)
+ 메이저 버전 업데이트는 이전 버전의 패싯 하위 집합을 유지할 수 있습니다.
+ 사용자에게 새 버전에 대한 알림 및 설명서가 제공됩니다.

### 식별자
<a name="identifier"></a>

각 개체는 비즈니스 도메인 내의 고유한 *사물*을 나타냅니다. 고유한 사물을 식별하기 위해 {{prod-ad8EXAMPLE651}}@{{3}}과 `RevisionId`같은 `EntityId`와를 연결하는 식별자를 사용합니다. 이 예제에서 `EntityId`는 `prod-ad8EXAMPLE651` 이고는 `RevisionId`입니다`3`. 엔터티에 대한 모든 성공적인 변경 요청은 개정을 업데이트합니다.

다음은 식별자에 대한 중요한 세부 정보입니다.
+ 각 엔터티는 한 엔터티와 다른 엔터티를 전역적으로 구분하는 키`EntityId`인 로 고유하게 식별됩니다.
+ 개체의 게시된 각 개정에는가 있습니다`RevisionId`. 는와 `RevisionId`함께 게시된 개정을 다른 개정과 `EntityId`구분합니다.
+ AWS Marketplace 는 `EntityId`및 `RevisionId`를 생성합니다.

`DescribeEntity` 작업을 사용하여 세부 정보와 가장 최근의 식별자를 찾을 수 있습니다`revisionId`.

`RevisionId`는에 대한 요청의 선택적 부분입니다`StartChangeSet`( 참조[변경 세트 작업](#working-with-change-sets)). 를 포함하면 `RevisionId`가 엔터티의 최신 개정`RevisionId`이 아닌 `ValidationException` 경우에 대한 요청이 `StartChangeSet` 실패합니다. 이를 통해 애플리케이션에서 낙관적 잠금을 구현할 수 있습니다.

**참고**  
최신 개정`RevisionId`이 아닌를 포함하면 `ValidationException` 메시지에 최신이 포함됩니다`RevisionId`.

를 생략하면 엔터티의 최신 개정에서 `RevisionId`요청이 자동으로 수행됩니다.

**주의**  
두 개의 동일한 객체 변경 요청으로 인해 한 요청이 다른 요청의 변경 사항을 덮어쓸 수 있습니다. 두 번째 요청은 첫 번째 요청에 의해 변경된 데이터를 다시 쓰기 때문입니다. 요청에 `RevisionId`를 사용하면 이전 개정을 변경하여 현재 개정을 덮어쓰도록 허용하지 않아이 문제가 방지됩니다.

### 패싯
<a name="facets"></a>

패싯은 속성의 논리적 그룹입니다. 엔터티에는 일반적으로 엔터티의 다양한 측면을 나타내는 여러 패싯이 포함됩니다. 패싯 내의 속성에는 다음과 같은 속성이 있습니다.
+ 각 속성에는 해당 속성이 속한 컨테이너의 범위 내에 고유한 이름이 있습니다.
+ 속성은 간단한 유형(문자열, 정수 또는 부동 소수)일 수 있습니다.
+ 속성은 복잡한 유형(컨테이너/구조 또는 배열)일 수 있습니다.

### 엔터티 유형
<a name="product-entity"></a>

개체 유형은 개체가 나타내는 내용을 정의합니다. 엔터티는 AWS Marketplace 또는 프라이빗 마켓플레이스의 판매자 제품일 수 있습니다. 자세한 내용은 [판매자 제품 작업](https://docs.aws.amazon.com/marketplace-catalog/latest/api-reference/seller-products.html) 및 [프라이빗 마켓플레이스 작업을 참조하세요](https://docs.aws.amazon.com/marketplace-catalog/latest/api-reference/private-marketplace.html).

## 변경 세트 작업
<a name="working-with-change-sets"></a>

카탈로그 API를 사용하는 경우 엔터티를 통해 요청이 생성 및 업데이트되고 변경 요청을 사용하여 완료됩니다. 모든 변경에는 변경할 엔터티, 수행할 변경 유형 및 변경 세부 정보가 지정됩니다. 수행할 변경 유형을 라고 합니다`ChangeType`. 의 모음`ChangeType`을 라고 합니다`ChangeSet`.

 변경 세트로 작업할 수 있는 네 가지 작업이 있습니다.
+  `StartChangeSet` - 변경 세트를 요청합니다. 변경 사항이 대기열에 추가되고 처리됩니다. 자세한 내용은 [판매자 제품 작업](https://docs.aws.amazon.com/marketplace-catalog/latest/api-reference/seller-products.html) 및 [프라이빗 마켓플레이스 작업을 참조하세요](https://docs.aws.amazon.com/marketplace-catalog/latest/api-reference/private-marketplace.html).
+  `DescribeChangeSet` - 요청 상태를 포함하여 변경 사항 세트의 세부 정보를 가져옵니다. 상태는 다음과 같습니다.
  + `PREPARING` - 변경 사항을 적용할 준비를 합니다.
  + `APPLYING` - 요청된 변경을 수행하는 중입니다.
  + `SUCCEEDED` - 요청이 성공적으로 완료되었습니다.
  + `CANCELLED` - 사용자가 요청을 취소했습니다.
  + `FAILED` - 요청이 성공적으로 완료되지 않았습니다. 자세한 내용은 응답에서 확인할 수 있습니다.
+  `ListChangeSets` - 현재 진행 중인 변경 세트 목록을 가져옵니다.
+  `CancelChangeSet` - 변경 세트 취소를 요청합니다. 변경 사항은 `PREPARING` 상태인 동안에만 취소할 수 있습니다.

 일반적인 워크플로는 로 변경을 요청한 다음 `StartChangeSet`반환된를 사용하여 변경이 완료될 때까지 `DescribeChangeSet` 작업을 `ChangeSetId`폴링하는 것입니다.

다음은 `DescribeChangeSet` 응답의 예입니다.

```
{
  "ChangeSet":
  [
    {
      "ChangeName": "myChangeName",
      "ChangeType": "UpdateInformation",
      "Details": "{  \"ProductTitle\": \"My Product Title\",  \"ShortDescription\": \"My product short description.\",  \"LongDescription\": \"My product longer description.\",  \"Sku\": \"123example456\",  \"SupportDescription\": \"Need help? Contact our experts at support@example.com\\n\\nYour purchase includes 24x7 support.\",  \"Categories\": [    \"Operating Systems\",    \"Network Infrastructure\",    \"Application Development\"  ]}",
      "DetailsDocument":
      {
        "ProductTitle": "My Product Title",
        "ShortDescription": "My product short description.",
        "LongDescription": "My product longer description.",
        "Sku": "123example456",
        "SupportDescription": "Need help? Contact our experts at support@example.com\n\nYour purchase includes 24x7 support.",
        "Categories":
        [
          "Operating Systems",
          "Network Infrastructure",
          "Application Development"
        ]
      },
      "Entity":
      {
        "Identifier": "example1-abcd-1234-5ef6-7890abcdef12",
        "Type": "AmiProduct@1.0"
      },
      "ErrorDetailList":
      []
    }
  ],
  "ChangeSetArn": "arn:aws:aws-marketplace:[exampleARN]",
  "ChangeSetId": "example123456789012abcdef",
  "ChangeSetName": "myChangeSetName",
  "EndTime": "2023-03-03T00:00:00Z",
  "FailureCode": null,
  "FailureDescription": null,
  "StartTime": "2023-03-02T00:00:00Z",
  "Status": "SUCCEEDED"
}
```

**참고**  
프로그래밍 방식으로 변경 세트를 폴링하거나 작업할 때는 서비스 제한을 준수해야 합니다. 자세한 내용은 [AWS Marketplace 카탈로그 API의 서비스 할당량](catalog-service-quotas.md) 단원을 참조하십시오.

변경이 완료되면 `ListEntities`를 사용하여 생성하거나 수정한 엔터티(및 연결된 )를 찾을 수 있습니다`EntityID`. 그런 다음와 `DescribeEntity` 함께 `EntityID`를 사용하여 세부 정보를 가져올 수 있습니다.

콘솔에서 판매자를 위한 변경 요청 작업에 대한 자세한 내용은 *AWS Marketplace 판매자 안내서*의 [ 변경 요청 생성을](https://docs.aws.amazon.com/marketplace/latest/userguide/ami-single-ami-products.html#single-ami-creating-change-request) 참조하세요.

### 여러 변경 요청을 동시에 수행
<a name="parallel-requests"></a>

**단일 변경 세트** 내에서 모든 변경 유형을 번들링하고 함께 실행할 수 있습니다. 카탈로그 API는 최상의 성능을 제공하기 위해 동시에 여러 번 변경하도록 구축되었습니다. 판매자와 채널 파트너는에 여러 번들로 `ChangeTypes` 번들링된 변경 사항을 호출할 수 있습니다`ChangeSet`. 동일한의 단일 또는 다른 엔터티에 대해 여러 변경 사항을 호출할 수 있습니다`ChangeSet`. 카탈로그 API는 변경 사항을 적용해야 하는 순서를 평가하고 이러한 변경을 수행합니다.

그러나 요청이 **별도의 변경 세트**로 이루어진 경우는 동일한 제품에서 충돌하는 변경 요청을 시작할 수 AWS Marketplace 없습니다. 이러한 경우는 `ResourceInUseException` 오류를 AWS Marketplace 반환합니다.
+ AMI 및 컨테이너 제품을 수정하는 경우 대부분의 변경은 오류 없이 수행할 수 있습니다. 단, 다음과 같은 경우는 예외입니다.
  + 동일한 제품`ChangeType`에서 두 개의 요청이 동일한 경우 두 번째 요청은 오류를 반환합니다.
  + 한 요청이 버전 정보를 업데이트하는 것이고 다른 요청은 버전을 제한하거나 추가하는 경우 두 번째 요청은 오류를 반환합니다.
  + 요청이 인 경우 동일한 제품에 대해 `PREPARING`다른 요청을 할 수 있습니다. 그러나 현재 로 변경하면 다른 요청이 차단되어 오류가 반환될 `APPLYING` 수 있습니다.
+ 다른 제품 유형 및 프라이빗 마켓플레이스의 경우 한 번에 제품에 대한 단일 요청만 할 수 있습니다. 첫 번째 요청이 진행되는 동안 동일한 제품을 업데이트하기 위한 다른 요청이 이루어진 경우 두 번째 요청은 오류를 반환합니다.
+ 판매자 운영 팀에 보류 AWS Marketplace 중인 제품에 대한 요청이 있는 경우 해당 제품에 대한 다른 요청은 오류를 반환합니다.

변경 요청에 대한 `ResourceInUseException` 오류가 발생하면 나중에 요청을 다시 시도할 수 있습니다. 진행 중인 요청의 상태에 따라 첫 번째 요청을 취소하여 다시 제출된 두 번째 요청을 더 빨리 완료할 수 있습니다.

### 하나의 변경 세트에서 여러 변경 유형 호출
<a name="multiple-change-types"></a>

카탈로그 API를 사용하여 하나 이상의 서로 다른 엔터티를 대상으로 하는 `StartChangeSet` 요청 하나에 최대 20개의 변경 사항을 결합하고 연결할 수 있습니다.

일반적인 사용 사례는 `SaaSProduct@1.0` 초안 제품, `Offer@1.0` 초안 제안을 생성하고 제품 및 제안의 메타데이터 정보를 작성하는 것입니다. 이 작업은 다음과 같은 네 가지 변경 유형을 하나의 변경 세트에 포함시켜 수행됩니다.
+ `SaaSProduct@1.0`​의 `CreateProduct`

  `ChangeName` 파라미터를 지정합니다. 그런 다음이 변경 유형으로 생성된 제품을 후속 변경에 의해 설정된 동일한 변경 세트에서 참조할 수 있습니다.

  예를 들어 `CreateProductChange`입니다.
+ `UpdateInformation` 동일한 변경 세트에서 `SaaSProduct@1.0` 생성된의

  `Entity.Identifier` 필드에서 다음 형식의 `CreateProduct` 변경 이름을 사용하여 변경 유형으로 생성된 제품을 참조할 수 있습니다.

  `${ChangeName}.Entity.Identifier`

  예를 들어 `$CreateProductChange.Entity.Identifier`입니다.
+ `CreateOffer` 동일한 변경 세트에서 `SaaSProduct@1.0` 생성된에 `Offer@1.0` 연결된의

  `ChangeName` 파라미터를 지정합니다. 그런 다음이 변경 유형으로 생성된 제품을 후속 변경에 의해 설정된 동일한 변경 세트에서 참조할 수 있습니다. 예를 들어 `CreateOfferChange`입니다.

  `CreateOffer` 변경 유형의 페이로드에 있는 `ProductId` 파라미터의 경우 `${ChangeName}.Entity.Identifier` 구문을 사용하여 `CreateProduct` 변경 유형으로 생성된 SaaS 제품을 참조할 수도 있습니다.

  예를 들어 `{"ProductId":"$CreateProductChange.Entity.Identifier"}`입니다.
+ `UpdateInformation` 동일한 변경 세트에서 `Offer@1.0` 생성된의

  `Entity.Identifier` 필드에서 다음 형식의 `CreateOffer` 변경 이름을 사용하여 변경 유형으로 생성된 제안을 참조할 수 있습니다.

  `${ChangeName}.Entity.Identifier`

  예를 들어 `$CreateOfferChange.Entity.Identifier`입니다.

다음은 결합된 변경 세트의 예입니다.

```
POST /StartChangeSet HTTP/1.1
Content-type: application/json

{
  "Catalog": "AWSMarketplace",
  "ChangeSet": [
    {
      "ChangeType": "CreateProduct",
      "Entity": {
        "Type": "SaaSProduct@1.0"
      },
      "ChangeName": "CreateProductChange",
      "DetailsDocument": {}
    },
    {
      "ChangeType": "UpdateInformation",
      "Entity": {
        "Type": "SaaSProduct@1.0",
        "Identifier": "$CreateProductChange.Entity.Identifier"
      },
      "ChangeName": "UpdateProductInformationChange",
      "DetailsDocument": {
        "ProductTitle": "My Product Title",
        "ShortDescription": "My product short description.",
        "LongDescription": "My product longer description.",
        "Sku": "123example456",
        "LogoUrl": "https://s3.amazonaws.com/presigned-or-public-url-to-logo-stored-in-s3",
        "VideoUrls": [
          "https://example.com"
        ],
        "Highlights": [
          "123example45"
        ],
        "AdditionalResources": "123example456",
        "SupportDescription": "Need help? Contact our experts at support@example.com \n\nYour purchase includes 24x7 support.",        
        "Categories": [
          "Operating Systems",
          "Network Infrastructure",
          "Application Development"
        ],
        "SearchKeywords": [
          "123example45"
        ],
      }
    },
    {
      "ChangeType": "CreateOffer",
      "Entity": {
        "Type": "Offer@1.0"
      },
      "ChangeName": "CreateOfferChange",
      "DetailsDocument": {
        "ProductId": "$CreateProductChange.Entity.Identifier"
      }
    },
    {
      "ChangeType": "UpdateInformation",
      "Entity": {
        "Type": "Offer@1.0",
        "Identifier": "$CreateOfferChange.Entity.Identifier"
      },
      "DetailsDocument": {
        "Name": "Offer created together with SaaSProduct",
        "Description": "Test offer created together with SaaSProduct in the same Catalog API change set"
      }
    }
  ]
}
```

## `Details` 속성 작업(레거시)
<a name="working-with-details"></a>

**참고**  
이 섹션에서는 변경 요청의 레거시 `Details` 속성에 대해 설명합니다. 여기에는 변경 세부 정보에 대한 추가 형식 지정이 필요합니다. 대체 `DetailsDocument` 속성을 사용하는 것이 좋습니다. 추가 형식이 필요하지 않으며 변경 세부 정보를 변경할 필요가 없습니다. `DetailsDocument` 속성의 예는 [판매자 제품 작업](https://docs.aws.amazon.com/marketplace-catalog/latest/api-reference/seller-products.html) 및 [프라이빗 마켓플레이스 작업을 참조하세요](https://docs.aws.amazon.com/marketplace-catalog/latest/api-reference/private-marketplace.html).

`StartChangeSet` 작업의 `Details` 속성은 문자열 값입니다. 콘텐츠는 JSON 객체입니다. JSON 객체를 문자열 속성에 배치하려면 모든 JSON 제어 문자를 이스케이프하고 줄 바꿈을 제거하여 객체를 한 줄 문자열로 변환해야 합니다.

예를 들어에서 `StartChangeSet` 작업을 사용하여 프라이빗 마켓플레이스에 있는 사용자의 요청을 비활성화`UpdateProcurementPolicy`하는 경우 다음과 같이 요청합니다.

```
POST /StartChangeSet HTTP/1.1
Content-type: application/json

{
   "Catalog": "AWSMarketplace",
   "ChangeSet": [ 
      { 
         "ChangeType": "UpdateProcurementPolicy",
         "Details": "{{<string>}}",
         "Entity": {
            "Type": "Experience@1.0",
            "Identifier" : "{{exp-1234example@5}}"
         }
      }
   ]
}
```

이 경우 `Details` 속성에 사용하는 JSON 객체는 다음과 같습니다(문자열로 변환하기 전).

```
{
    "Configuration": {
        "PolicyResourceRequests": "Deny"
    }
}
```

하지만 `Details` 속성에는 JSON이 아닌 문자열이 필요합니다. 이 JSON 객체를 한 줄 문자열로 변환한 후 다음과 같습니다.

```
"{\"Configuration\" : {\"PolicyResourceRequests\" : \"Deny\"}}"
```

이 문자열을 사용하면 다음과 같이 전체 변경 세트 요청을 생성할 수 있습니다.

```
POST /StartChangeSet HTTP/1.1
Content-type: application/json

{
   "Catalog": "AWSMarketplace",
   "ChangeSet": [ 
      { 
         "ChangeType": "UpdateProcurementPolicy",
         "Details": "{\"Configuration\" : {\"PolicyResourceRequests\" : \"Deny\"}}",
         "Entity": {
            "Type": "Experience@1.0",
            "Identifier" : "{{exp-1234example@5}}"
         }
      }
   ]
}
```

일반적으로이 API 참조의 예제는 이미 문자열로 변환된 JSON 객체를 보여줍니다. 경우에 따라 이해를 높이기 위해 새 줄이 있는 더 복잡한 샘플이 포함됩니다.

**JSON을 문자열로 자동 변환**

경량 명령줄 JSON 프로세서인 [jq](https://stedolan.github.io/jq/)와 같은 도구를 사용하여 JSON 객체를 문자열로 변환할 수 있습니다. 다음 예제에서는 `jq`를 사용하여 JSON 객체를 `Details` 속성에 사용할 수 있는 문자열로 변환하는 방법을 보여줍니다.

```
DETAILS_JSON='{
  "ProductTitle": "My Product Title",
  "ShortDescription": "My product short description.",
  "LongDescription": "My product long description."
}';

DETAILS_JSON_STRING="$(echo "${DETAILS_JSON}" | jq 'tostring';)";
```

 를 에코하면 JSON`"${DETAILS_JSON_STRING}"`이 제대로 이스케이프된 다음 문자열이 결과가 됩니다. `{\"ProductTitle\":\"My Product\",\"ShortDescription\":\"My product short description.\",\"LongDescription\":\"My product long description.\"}` 

## DescribeEntity를 사용하여 엔터티에 대한 정보 가져오기
<a name="using-describe-entity"></a>

카탈로그 API를 통해 제품 및 프라이빗 마켓플레이스를 포함한 기존 엔터티에 대한 정보를 프로그래밍 방식으로 가져올 수 있습니다.

`ListEntities` 작업은 개체 목록을 반환합니다. 그런 다음 `DescribeEntity` 작업을 사용하여 개별 개체에 대한 세부 정보를 가져올 수 있습니다. 이는 예를 들어 판매하는 제품을 카탈로그화하는 데 직접 유용할 수 있습니다. 업데이트하려는 부분만 업데이트하기 전에 개체의 현재 상태를 가져올 수 있으므로 개체를 업데이트할 때도 유용할 수 있습니다.

다음 예제에서는 `ListEntities`를 사용하여 컨테이너 제품 목록을 가져온 다음 `DescribeEntity`를 사용하여 특정 제품 중 하나에 대한 정보를 가져오는 방법을 보여줍니다.

```
POST /ListEntities HTTP/1.1
Content-type: application/json

{
  "Catalog": "AWSMarketplace",
  "EntityType": "ContainerProduct"
}
```

엔터티 유형의 경우 버전 없이 엔터티 유형을 사용해야 합니다. 해당 유형의 모든 엔터티를 반환합니다(버전을 기준으로 필터링하지 않음).

다음은 `ListEntities` 작업에 대한 응답의 샘플입니다.

```
{
    "EntitySummaryList": [
        {
            "Name": "Container Product 1",
            "EntityType": "ContainerProduct",
            "EntityId": "example1-abcd-1234-5ef6-7890abcdef12",
            "EntityArn": "arn:aws:aws-marketplace:[exampleARN]",
            "LastModifiedDate": "2021-03-01T00:00:00Z",
            "Visibility": "Public"
        },
        {
            "Name": "Container Product 2",
            "EntityType": "ContainerProduct",
            "EntityId": "example2-abcd-1234-5ef6-7890abcdef12",
            "EntityArn": "arn:aws:aws-marketplace:[exampleARN]",
            "LastModifiedDate": "2021-03-02T00:00:00Z",
            "Visibility": "Public"
        }
    ],
    "NextToken": "exampleabcdef12345..."
}
```

이러한 제품 중 하나에 대한 세부 정보를 가져오려면 `DescribeEntity` 작업을 사용합니다. 다음 예제에서는 위에서 반환된 첫 번째 제품에 대한 세부 정보를 가져오는 방법을 보여줍니다.

```
GET /DescribeEntity?catalog=AWSMarketplace&entityId={{example1-abcd-1234-5ef6-7890abcdef12}} HTTP/1.1
```

다음은에 대한 응답을 보여줍니다`DescribeEntity`.

```
{
  "EntityType": "ContainerProduct@1.0",
  "EntityIdentifier": "example1-abcd-1234-5ef6-7890abcdef12@9",
  "EntityArn": "arn:aws:aws-marketplace:[exampleARN]",
  "LastModifiedDate": "2021-03-02T20:19:14Z",
  "Details": "{\"Versions\":[{\"Id\":\"example2-0000-aaaa-5ef6-7890abcdef12\",\"ReleaseNotes\":\"My release notes\",\"UpgradeInstructions\":\"N/A\",\"VersionTitle\":\"1.0\",\"CreationDate\":\"2021-03-02T00:00:00.000Z\",\"Sources\":[{\"Type\":\"DockerImages\",\"Id\":\"example3-1111-bbbb-5ef6-7890abcdef12\",\"Images\":[\"111122223333.dkr.ecr.us-east-1.amazonaws.com/some-seller-prefix/my-repo-1:some-tag\"],\"Compatibility\":{\"Platform\":\"Linux\"}}],\"DeliveryOptions\":[{\"Id\":\"example4-2222-cccc-2222-cccccccccccc\",\"Type\":\"ElasticContainerRegistry\",\"SourceId\":\"example3-1111-bbbb-5ef6-7890abcdef12\",\"Title\":\"New delivery option 1\",\"ShortDescription\":\"Delivery option 1\",\"isRecommended\":false,\"Compatibility\":{\"AWSServices\":[\"ECS\",\"EKS\"]},\"Instructions\":{\"Usage\":\"test\"},\"Recommendations\":{\"AdditionalArtifacts\":[]},\"Visibility\":\"Limited\"}]}],\"Description\":{\"Highlights\":[\"Some highlight\"],\"LongDescription\":\"Description of my product\",\"ProductCode\":\"123456789012abcdef1234567\",\"Manufacturer\":null,\"Visibility\":\"Limited\",\"AssociatedProducts\":null,\"Sku\":null,\"SearchKeywords\":[\"some keyword\"],\"ProductTitle\":\"Container Product 1\",\"ShortDescription\":\"Description of my product\",\"Categories\":[\"Operating Systems\"]},\"PromotionalResources\":{\"LogoUrl\":\"https://awsmp-logos.s3.amazonaws.com/PLACEHOLDER_Logo_for_Containers_products.png\",\"AdditionalResources\":[],\"Videos\":[]},\"SupportInformation\":{\"Description\":\"Description of support information.\",\"Resources\":[]},\"RegionAvailability\":{\"Regions\":[\"ap-south-1\",\"eu-west-3\",\"eu-north-1\",\"eu-west-2\",\"eu-west-1\",\"ap-northeast-2\",\"ap-northeast-1\",\"me-south-1\",\"ca-central-1\",\"sa-east-1\",\"ap-east-1\",\"ap-southeast-1\",\"ap-southeast-2\",\"eu-central-1\",\"us-east-1\",\"us-east-2\",\"us-west-1\",\"us-west-2\"],\"FutureRegionSupport\":null},\"Repositories\":[{\"Url\":\"111122223333.dkr.ecr.us-east-1.amazonaws.com/some-seller-prefix/my-repo-1\",\"Type\":\"ECR\"}]}",
  "DetailsDocument":
  {
    "Versions":
    [
      {
        "Id": "example2-0000-aaaa-5ef6-7890abcdef12",
        "ReleaseNotes": "My release notes",
        "UpgradeInstructions": "N/A",
        "VersionTitle": "1.0",
        "CreationDate": "2021-03-02T00:00:00.000Z",
        "Sources":
        [
          {
            "Type": "DockerImages",
            "Id": "example3-1111-bbbb-5ef6-7890abcdef12",
            "Images":
            [
              "111122223333.dkr.ecr.us-east-1.amazonaws.com/some-seller-prefix/my-repo-1:some-tag"
            ],
            "Compatibility":
            {
              "Platform": "Linux"
            }
          }
        ],
        "DeliveryOptions":
        [
          {
            "Id": "example4-2222-cccc-2222-cccccccccccc",
            "Type": "ElasticContainerRegistry",
            "SourceId": "example3-1111-bbbb-5ef6-7890abcdef12",
            "Title": "New delivery option 1",
            "ShortDescription": "Delivery option 1",
            "isRecommended": false,
            "Compatibility":
            {
              "AWSServices":
              [
                "ECS",
                "EKS"
              ]
            },
            "Instructions":
            {
              "Usage": "test"
            },
            "Recommendations":
            {
              "AdditionalArtifacts":
              []
            },
            "Visibility": "Limited"
          }
        ]
      }
    ],
    "Description":
    {
      "Highlights":
      [
        "Some highlight"
      ],
      "LongDescription": "Description of my product",
      "ProductCode": "123456789012abcdef1234567",
      "Manufacturer": null,
      "Visibility": "Limited",
      "AssociatedProducts": null,
      "Sku": null,
      "SearchKeywords":
      [
        "some keyword"
      ],
      "ProductTitle": "Container Product 1",
      "ShortDescription": "Description of my product",
      "Categories":
      [
        "Operating Systems"
      ]
    },
    "PromotionalResources":
    {
      "LogoUrl": "https://awsmp-logos.s3.amazonaws.com/PLACEHOLDER_Logo_for_Containers_products.png",
      "AdditionalResources":
      [],
      "Videos":
      []
    },
    "SupportInformation":
    {
      "Description": "Description of support information.",
      "Resources":
      []
    },
    "RegionAvailability":
    {
      "Regions":
      [
        "ap-south-1",
        "eu-west-3",
        "eu-north-1",
        "eu-west-2",
        "eu-west-1",
        "ap-northeast-2",
        "ap-northeast-1",
        "me-south-1",
        "ca-central-1",
        "sa-east-1",
        "ap-east-1",
        "ap-southeast-1",
        "ap-southeast-2",
        "eu-central-1",
        "us-east-1",
        "us-east-2",
        "us-west-1",
        "us-west-2"
      ],
      "FutureRegionSupport": null
    },
    "Repositories":
    [
      {
        "Url": "111122223333.dkr.ecr.us-east-1.amazonaws.com/some-seller-prefix/my-repo-1",
        "Type": "ECR"
      }
    ]
  }
}
```

**참고**  
`DetailsDocument` 속성에는 개체 세부 정보가 JSON 객체로 포함됩니다. 레거시 `Details` 속성에는 문자열과 동일한 JSON 객체가 포함됩니다.