

Se reestructuró la referencia de API de AWS Marketplace. Para obtener más información sobre las operaciones de API compatibles, consulte la [referencia de API de AWS Marketplace](https://docs.aws.amazon.com/marketplace/latest/APIReference/Welcome.html).

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Uso de AWS Marketplace API del catálogo
<a name="catalog-apis"></a>

El AWS Marketplace Catalog API servicio proporciona una interfaz API que puede administrar AWS Marketplace para su AWS organización o Cuenta de AWS. En el caso de los vendedores autorizados, puedes gestionar tus productos mediante programación, incluidas las funciones de publicación de autoservicio del. [AWS Marketplace Management Portal](https://aws.amazon.com/marketplace/management) En el caso de los administradores de mercados privados, puedes gestionar tu mercado privado mediante programación.

Con las acciones de la API de catálogo, puedes ver y actualizar tu producto existente mediante programación. Puede automatizar el proceso de actualización de sus productos integrándolo AWS Marketplace Catalog API con los procesos de creación o implementación de sus AWS Marketplace productos. También puedes crear tus propias aplicaciones sobre la API del catálogo para gestionar tus productos. AWS Marketplace Puedes gestionar los productos que los usuarios de tu AWS organización Cuenta de AWS o de tu organización pueden ver y comprar a través de tu mercado privado.

El AWS Marketplace Catalog API servicio proporciona una funcionalidad AWS de API estándar. Puedes usar directamente las acciones de la API REST descritas en [Acciones](https://docs.aws.amazon.com/marketplace-catalog/latest/api-reference/API_Operations.html), o puedes usar un AWS SDK para acceder a una API que se adapte al lenguaje de programación o la plataforma que estés usando. Para obtener más información sobre el desarrollo de AWS aplicaciones, consulta [Cómo empezar con AWS](https://aws.amazon.com/getting-started/). Para obtener más información sobre el uso de AWS los SDK, consulte los [SDK de AWS](https://aws.amazon.com/tools/#SDKs).

## Entidades de API de catálogo
<a name="catalog-api-entities"></a>

AWS Marketplace las entidades son contenedores de datos que sirven para diferentes propósitos comerciales, como un producto o una oferta. Las entidades se clasifican por tipos. Cada tipo de entidad encapsula los datos relacionados con un dominio empresarial específico (por ejemplo, un producto o una cuenta de vendedor).

Para simplificar este paradigma, las entidades se diseñan con cierto nivel de similitud en sus estructuras. Como resultado, la introducción de un nuevo dominio empresarial no requiere que aprendas una estructura completamente nueva.

### Estructura general
<a name="general-structure"></a>

La estructura general de cualquier entidad es:
+ Un tipo con nombre y una versión
+ Un identificador para la instancia específica del tipo
+ Una o más facetas que incluyen los atributos de la entidad

### Escriba el control de versiones
<a name="versioning"></a>

Cada tipo nombrado tiene un tipo y una versión asociados, por ejemplo,`{{Entity}}Product@1.0`. El *tipo* ({{Entity}}Producto) representa la clasificación del contenido. La *versión* (1.0) representa la estructura del {{Entity}} Producto.

La versión proporciona detalles sobre la estructura de la entidad. A continuación se describe cuándo se cambiará una versión:
+ Las entidades existentes no se reestructurarán sin cambiar la versión. La adición de nuevos campos opcionales provocará una actualización menor de la versión.
+ Cualquier función que modifique fundamentalmente la estructura de un tipo conlleva una actualización importante de la versión. Entre los ejemplos se incluyen:
  + Eliminar un campo
  + Cambiar el nombre de un campo (nombre diferente para la misma semántica)
  + Cambiar la semántica de un campo existente (por ejemplo, cambiar el tipo esperado)
+ Una actualización importante de una versión puede conservar un subconjunto de facetas de la versión anterior. 
+ Los usuarios reciben notificaciones y documentación sobre las nuevas versiones.

### Identificador
<a name="identifier"></a>

Cada entidad representa *algo* único dentro de un dominio empresarial. Para identificar lo único, utilizamos un identificador que `EntityId` asocia una a`RevisionId`, por ejemplo, una {{prod-ad8EXAMPLE651}} @{{3}}. En este ejemplo, el `EntityId` es `prod-ad8EXAMPLE651` y el `RevisionId` es`3`. Cada solicitud de cambio realizada a la entidad que se realice correctamente actualizará la revisión.

Los siguientes son detalles importantes sobre el identificador:
+ Cada entidad se identifica de forma única por su`EntityId`, que es la clave para distinguir globalmente una entidad de otra.
+ Cada revisión publicada de una entidad tiene un`RevisionId`. Los`RevisionId`, junto con el`EntityId`, distinguen una revisión publicada de otra.
+ AWS Marketplace genera `EntityId` `RevisionId` s y s.

Puede utilizar la `DescribeEntity` acción para buscar los detalles y el identificador más reciente`revisionId`.

`RevisionId`Es una parte opcional de las solicitudes para `StartChangeSet` (ver[Trabajar con conjuntos de cambios](#working-with-change-sets)). Si incluyes una`RevisionId`, la solicitud de `StartChangeSet` será rechazada con una `ValidationException` si no `RevisionId` es la última revisión de la entidad. Esto le permite implementar un bloqueo optimista en su aplicación.

**nota**  
Cuando incluyes una revisión `RevisionId` que no es la más reciente, el `ValidationException` mensaje incluye la más reciente`RevisionId`.

Si omite la`RevisionId`, la solicitud se realizará automáticamente en la última revisión de la entidad.

**aviso**  
Es posible que se produzcan dos solicitudes para cambiar el mismo objeto y que una de ellas sobrescriba los cambios de la otra solicitud, ya que la segunda solicitud reescribe los datos modificados por la primera solicitud. El uso de `RevisionId` s en las solicitudes evita este problema, ya que no permite que un cambio realizado en una revisión anterior sobrescriba la revisión actual.

### Facetas
<a name="facets"></a>

Una faceta es una agrupación lógica de atributos. Por lo general, una entidad incluye varias facetas que representan diferentes aspectos de la entidad. Los atributos de una faceta tienen las siguientes propiedades:
+ Cada atributo tiene un nombre único dentro del ámbito del contenedor al que pertenece. 
+ Los atributos pueden ser de un tipo simple (cadena, entero o número flotante).
+ Los atributos pueden ser de un tipo complejo (container/structure o matriz).

### Tipo de identidad
<a name="product-entity"></a>

El tipo de entidad define lo que representa la entidad. Una entidad puede ser un vendedor de un producto en un mercado privado AWS Marketplace o un mercado privado. Para obtener más información, consulta [Cómo trabajar con productos de vendedores](https://docs.aws.amazon.com/marketplace-catalog/latest/api-reference/seller-products.html) y [Cómo trabajar con un mercado privado](https://docs.aws.amazon.com/marketplace-catalog/latest/api-reference/private-marketplace.html).

## Trabajar con conjuntos de cambios
<a name="working-with-change-sets"></a>

Cuando se utiliza la API de catálogo, las solicitudes se crean y actualizan mediante entidades y se completan mediante solicitudes de cambio. Cada cambio especifica la entidad que se va a cambiar, el tipo de cambio que se va a realizar y los detalles del cambio. El tipo de cambio que se va a realizar se denomina`ChangeType`. Una colección de `ChangeType` s se denomina a`ChangeSet`.

 Hay cuatro acciones que le permiten trabajar con conjuntos de cambios: 
+  `StartChangeSet`— Solicita un conjunto de cambios. Los cambios se añaden a una cola y se procesan. Para obtener más información, consulta Cómo [trabajar con productos de vendedores](https://docs.aws.amazon.com/marketplace-catalog/latest/api-reference/seller-products.html) y Cómo [trabajar con un mercado privado](https://docs.aws.amazon.com/marketplace-catalog/latest/api-reference/private-marketplace.html).
+  `DescribeChangeSet`— Obtiene los detalles de un conjunto de cambios, incluido el estado de la solicitud. Los estados incluyen: 
  + `PREPARING`— Preparándose para aplicar los cambios.
  + `APPLYING`— En proceso de realizar los cambios solicitados.
  + `SUCCEEDED`— La solicitud se completó correctamente.
  + `CANCELLED`— El usuario canceló la solicitud.
  + `FAILED`— La solicitud se completó sin éxito. Encontrará más detalles en la respuesta.
+  `ListChangeSets`— Obtiene una lista de los conjuntos de cambios que están actualmente en proceso. 
+  `CancelChangeSet`— Solicita la cancelación de un conjunto de cambios. Los cambios solo se pueden cancelar mientras estén en ese `PREPARING` estado. 

 Un flujo de trabajo típico consiste en solicitar un cambio y`StartChangeSet`, a continuación, utilizar lo devuelto `ChangeSetId` para sondear la `DescribeChangeSet` acción hasta que se complete el cambio.

A continuación se muestra un ejemplo de la `DescribeChangeSet` respuesta.

```
{
  "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"
}
```

**nota**  
Al sondear o trabajar con conjuntos de cambios mediante programación, debe respetar los límites de servicio. Para obtener más información, consulte [Cuotas de servicio para AWS Marketplace API del catálogo](catalog-service-quotas.md).

Una vez realizado el cambio, podrá utilizarla `ListEntities` para buscar la entidad que creó o modificó (y su entidad asociada`EntityID`). A continuación, puede utilizarla `DescribeEntity` con la `EntityID` para obtener detalles sobre la misma.

Para obtener más información sobre cómo gestionar las solicitudes de cambio en la consola para vendedores, consulta [Cómo crear una solicitud de cambio](https://docs.aws.amazon.com/marketplace/latest/userguide/ami-single-ami-products.html#single-ami-creating-change-request) en la *Guía del AWS Marketplace vendedor*. 

### Realizar varias solicitudes de cambio simultáneamente
<a name="parallel-requests"></a>

En un **único conjunto de cambios**, puede agrupar todos los tipos de cambios y ejecutarlos juntos. La API de catálogo está diseñada para realizar varios cambios simultáneamente a fin de ofrecer el mejor rendimiento. Los vendedores y los socios de canal pueden invocar los cambios `ChangeTypes` agrupando varios en un solo paquete. `ChangeSet` Puedes invocar varios cambios en una o varias entidades de la misma entidad. `ChangeSet` La API de catálogo evalúa en qué orden deben aplicarse los cambios y los realiza.

Sin embargo, si las solicitudes se realizan como **conjuntos de cambios independientes**, no AWS Marketplace se pueden iniciar solicitudes de cambio contradictorias en el mismo producto. En estos casos, AWS Marketplace devuelve un `ResourceInUseException` error.
+ Para modificar los productos de AMI y contenedores, la mayoría de los cambios se pueden realizar sin errores, con las siguientes excepciones:
  + Si dos solicitudes son iguales `ChangeType` en el mismo producto, la segunda solicitud devolverá un error.
  + Si una solicitud es para actualizar la información de la versión y la otra para restringir o añadir una versión, la segunda solicitud devuelve un error.
  + Si se trata de una solicitud`PREPARING`, se puede realizar otra solicitud para el mismo producto. Sin embargo, un cambio que se esté `APPLYING` realizando actualmente puede bloquear otras solicitudes y provocar un error.
+ En el caso de otros tipos de productos y sitios web privados, solo puedes solicitar un producto a la vez. Si se realiza una solicitud diferente para actualizar el mismo producto mientras hay una primera solicitud en curso, la segunda devuelve un error.
+ Si hay una solicitud de algún producto pendiente en el equipo de operaciones AWS Marketplace de venta, cualquier otra solicitud relacionada con ese producto devolverá un error.

Si recibes un `ResourceInUseException` error en una solicitud de cambio, puedes volver a intentarlo más adelante. Según el estado de la solicitud en curso, también puedes cancelar la primera solicitud para que la segunda solicitud que se ha vuelto a enviar se complete antes.

### Invocar varios tipos de cambios en un conjunto de cambios
<a name="multiple-change-types"></a>

Puedes usar la API del catálogo para combinar y encadenar hasta 20 cambios en una `StartChangeSet` solicitud dirigida a una o varias entidades diferentes. 

Un caso de uso típico consiste en crear un `SaaSProduct@1.0` borrador de producto, un `Offer@1.0` borrador de oferta y, además, rellenar la información de los metadatos del producto y la oferta. Para ello, se incluyen los cuatro tipos de cambios siguientes en un conjunto de cambios:
+ `CreateProduct` del `SaaSProduct@1.0`

  Especifique el parámetro `ChangeName`. A continuación, se puede hacer referencia al producto creado en este tipo de cambio en el mismo conjunto de cambios mediante cambios posteriores. 

  Por ejemplo, `CreateProductChange`.
+ `UpdateInformation`en el `SaaSProduct@1.0` creado en el mismo conjunto de cambios

  En el `Entity.Identifier` campo, puede hacer referencia al producto creado por tipo de `CreateProduct` cambio utilizando el nombre del cambio en este formato: 

  `${ChangeName}.Entity.Identifier`

  Por ejemplo, `$CreateProductChange.Entity.Identifier`.
+ `CreateOffer`no `Offer@1.0` está vinculado al `SaaSProduct@1.0` creado en el mismo conjunto de cambios

  Especifique el parámetro `ChangeName`. A continuación, se puede hacer referencia al producto creado en este tipo de cambio en el mismo conjunto de cambios mediante cambios posteriores. Por ejemplo, `CreateOfferChange`.

  Para el `ProductId` parámetro de la carga útil del tipo de `CreateOffer` cambio, también puede hacer referencia al producto SaaS creado `CreateProduct` en el tipo de cambio mediante `${ChangeName}.Entity.Identifier` la sintaxis.

  Por ejemplo, `{"ProductId":"$CreateProductChange.Entity.Identifier"}`.
+ `UpdateInformation`en el `Offer@1.0` creado en el mismo conjunto de cambios

  En el `Entity.Identifier` campo, puede hacer referencia a la oferta creada por el tipo de `CreateOffer` cambio utilizando el nombre del cambio en este formato:

  `${ChangeName}.Entity.Identifier`

  Por ejemplo, `$CreateOfferChange.Entity.Identifier`.

El siguiente es un ejemplo de un conjunto de cambios combinado.

```
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"
      }
    }
  ]
}
```

## Trabajar con el atributo `Detalles` (heredado)
<a name="working-with-details"></a>

**nota**  
En esta sección se describe el `Details` atributo heredado de la solicitud de cambio, que requiere un formato adicional para los detalles del cambio. Te recomendamos usar el `DetailsDocument` atributo alternativo. No requiere ningún formato adicional y no es necesario cambiar los detalles del cambio. Para ver ejemplos del `DetailsDocument` atributo, consulta [Trabajar con productos de vendedores](https://docs.aws.amazon.com/marketplace-catalog/latest/api-reference/seller-products.html) y [Trabajar con un mercado privado](https://docs.aws.amazon.com/marketplace-catalog/latest/api-reference/private-marketplace.html).

El `Details` atributo de la `StartChangeSet` operación es un valor de cadena. Su contenido son objetos JSON. Para colocar un objeto JSON en un atributo de cadena, debes convertir el objeto en una cadena de una sola línea evitando todos los caracteres de control JSON y eliminando los saltos de línea.

Por ejemplo, si utilizas la `StartChangeSet` operación `UpdateProcurementPolicy` para deshabilitar las solicitudes de los usuarios en tu mercado privado, realiza una solicitud como la siguiente.

```
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}}"
         }
      }
   ]
}
```

En este caso, el objeto JSON que utilizas para el `Details` atributo tiene el siguiente aspecto (antes de convertirlo en una cadena).

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

Sin embargo, el `Details` atributo requiere una cadena, no JSON. Tras convertir este objeto JSON en una cadena de una sola línea, tiene el siguiente aspecto.

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

Con esta cadena, puede crear la solicitud de conjunto de cambios completo, de la siguiente manera.

```
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}}"
         }
      }
   ]
}
```

Por lo general, los ejemplos de esta referencia de API muestran que el objeto JSON ya se ha convertido en una cadena. En algunos casos, se incluyen ejemplos más complicados con líneas nuevas para mejorar la comprensión.

**Automatice la conversión de JSON en una cadena**

La conversión de un objeto JSON en una cadena se puede automatizar mediante herramientas como [jq, un procesador JSON](https://stedolan.github.io/jq/) de línea de comandos ligero. En el siguiente ejemplo, se muestra `jq` cómo convertir un objeto JSON en una cadena que se puede utilizar en el atributo. `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';)";
```

 Si haces eco`"${DETAILS_JSON_STRING}"`, el resultado es la siguiente cadena con el JSON correctamente escapado: `{\"ProductTitle\":\"My Product\",\"ShortDescription\":\"My product short description.\",\"LongDescription\":\"My product long description.\"}`

## Se usa DescribeEntity para obtener información sobre sus entidades
<a name="using-describe-entity"></a>

Puedes obtener información sobre tus entidades actuales mediante programación, incluidos los productos y el mercado privado, a través de la API del catálogo.

La `ListEntities` acción devuelve una lista de entidades. A continuación, puede utilizar la `DescribeEntity` acción para obtener detalles sobre una entidad individual. Esto puede resultar directamente útil, por ejemplo, para catalogar los productos que vendes. También puede resultar útil al actualizar entidades, ya que puede obtener el estado actual de la entidad antes de actualizar solo las partes que desee actualizar.

En el siguiente ejemplo, se muestra cómo se usa `ListEntities` para obtener una lista de productos en contenedores y, `DescribeEntity` a continuación, se usa para obtener información sobre uno de los productos específicos.

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

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

Para el tipo de entidad, debe usar el tipo de entidad sin la versión. Devuelve todas las entidades de ese tipo (y no filtra por versión).

Esta es una muestra de la respuesta a la `ListEntities` acción.

```
{
    "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..."
}
```

Para obtener los detalles de uno de estos productos, usa la `DescribeEntity` acción. El siguiente ejemplo muestra cómo obtener detalles sobre el primer producto devuelto anteriormente.

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

A continuación se muestra la respuesta a`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"
      }
    ]
  }
}
```

**nota**  
El `DetailsDocument` atributo contiene los detalles de la entidad como un objeto JSON. El `Details` atributo heredado contiene el mismo objeto JSON que una cadena.