Llamar a la API de REST

En esta guía, aprenderás a llamar a la API de REST del productor del catálogo privado.

Antes de comenzar

  1. Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  3. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

  4. En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  5. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

  6. Habilita las API de Deployment Manager and Compute Engine.

    Habilita las API

Configura la autenticación

Como administrador de la nube, puedes realizar llamadas de REST para realizar acciones en el catálogo privado. Para comenzar, configura tus credenciales de acceso:

  1. Obtén tu ID de cliente y tu Secret.
  2. Obtén el token de acceso.
  3. Asegúrate de enviar https://www.googleapis.com/auth/cloud-platform en el parámetro de permiso.

Crea un catálogo

Para crear un catálogo, ejecuta el siguiente comando y reemplaza <token> por tu token de acceso de OAuth2 y <organization-ID> con tu ID de organización:

curl -s -X POST -H "Content-Type: application/json" -H "Authorization: Bearer <token>" -d "{parent:"//cloudresourcemanager.googleapis.com/organizations/<organization-ID>", display_name:"Mobile catalog", description: "description"}" https://cloudprivatecatalogproducer.googleapis.com/v1beta1/catalogs

El cuerpo de la respuesta contiene datos similares al siguiente resultado:

{
  "name": "operations/ccb.515502c5-81ad-4226-8037-1b802eed8f69"
}

Este es el nombre de la operación. Puedes derivar el ID de la operación desde el nombre de la operación si quitas el prefijo operation/. En la respuesta del ejemplo anterior, el ID de operación es ccb.515502c5-81ad-4226-8037-1b802eed8f69. Puedes usar el ID de operación para verificar el estado de la creación del catálogo.

Verifica el estado de una operación de creación de catálogos

Para crear un catálogo, ejecuta el siguiente comando y reemplaza <operation-ID> por el ID de operación de la respuesta anterior:

curl -s -H "Authorization: Bearer <token>" https://cloudprivatecatalogproducer.googleapis.com/v1beta1/operations/<operation-ID>

Enumera los catálogos de tu organización

Para enumerar los catálogos a los que tienes acceso, dentro del permiso de una organización, ejecuta el siguiente comando y reemplaza <organization-number> por el número de organización:

curl -s -H "Authorization: Bearer <token>" https://cloudprivatecatalogproducer.googleapis.com/v1beta1/catalogs?parent=//cloudresourcemanager.googleapis.com/organizations/<organization-number>

El cuerpo de la respuesta contiene datos similares al siguiente resultado:

{
  "catalogs": [
    {
      "name": "catalogs/<catalog-ID>",
      "parent": "//cloudresourcemanager.googleapis.com/organizations/<organization-ID>",
      "displayName": "Mobile catalog",
      "description": "Mobile-related applications",
      "createTime": "2019-01-01T22:05:19.541Z",
      "updateTime": "2019-01-01T22:05:26.097Z"
    },
    {
      "name": "catalogs/<catalog ID>",
      "parent": "//cloudresourcemanager.googleapis.com/organizations/<organization-ID>",
      "displayName": "Development tools",
      "description": "Applications and tools for developers",
      "createTime": "2019-01-06T00:08:06.090Z",
      "updateTime": "2019-01-06T00:08:08.069Z"
    },
    {
      "name": "catalogs/<catalog ID>",
      "parent": "//cloudresourcemanager.googleapis.com/organizations/<organization-ID>",
      "displayName": "Data science catalog",
      "description": "Applications for data scientists",
      "createTime": "2019-01-06T00:09:45.319Z",
      "updateTime": "2019-01-06T00:09:48.050Z"
    },
    {
      "name": "catalogs/<catalog ID>",
      "parent": "//cloudresourcemanager.googleapis.com/organizations/<organization-ID>",
      "displayName": "Training catalog",
      "description": "Training applications and software",
      "createTime": "2019-01-06T22:13:38.261Z",
      "updateTime": "2019-01-06T22:13:46.291Z"
    },
    {
      "name": "catalogs/<catalog-ID>",
      "parent": "//cloudresourcemanager.googleapis.com/organizations/<organization-ID>",
      "displayName": "Media catalog",
      "description": "Applications for handling audio and visual media",
      "createTime": "2019-01-07T00:15:11.949Z",
      "updateTime": "2019-01-07T00:15:15.426Z"
    }
  ]
}

Obtén información sobre un catálogo en particular

A fin de obtener información sobre un catálogo, ejecuta el siguiente comando y reemplaza <catalog-ID> por el ID del catálogo desde la respuesta de una llamada a la API para enumerar los catálogos de la organización:

curl -s -H "Authorization: Bearer <token>" https://cloudprivatecatalogproducer.googleapis.com/v1beta1/catalogs/<catalog-ID>

El cuerpo de la respuesta contiene datos similares al siguiente resultado:

{
  "name": "catalogs/<catalog-ID>",
  "parent": "//cloudresourcemanager.googleapis.com/organizations/<organizaton-ID>",
  "displayName": "Data science catalog",
  "description": "Applications for data scientists",
  "createTime": "2019-01-01T22:05:19.541Z",
  "updateTime": "2019-01-01T22:05:26.097Z"
}

Crea un producto

Para crear un producto, ejecuta el siguiente comando y reemplaza <catalog-ID> por el ID de catálogo a partir de la respuesta de una llamada a la API para enumerar los catálogos de tu organización:

curl -s -X POST -H "Content-Type: application/json" -H "Authorization: Bearer <token>" -d @/tmp/rest_create_product_request https://cloudprivatecatalogproducer.googleapis.com/v1beta1/catalogs/<catalog-ID>/products

En el siguiente ejemplo, se ilustra el contenido del archivo /tmp/rest_create_product_request:

{
  name:"catalogs/<catalog-ID>/products/<product-name>",
  asset_type:"google.deploymentmanager.Template",
  display_metadata:{
    name:"<product-name>",
    description:"Sample Description"
  }
}

Enumera los productos de un catálogo

Para enumerar productos en un catálogo, ejecuta el siguiente comando y reemplaza <catalog-ID> por el ID del catálogo desde la respuesta de una llamada a la API a fin de enumerar los catálogos de tu organización:

curl -s -H "Authorization: Bearer <token>" https://cloudprivatecatalogproducer.googleapis.com/v1beta1/catalogs/<catalog-ID>/products

El cuerpo de la respuesta contiene datos similares al siguiente resultado:

{
  "products": [
    {
      "name": "catalogs/<catalog-ID>/products/dm-product",
      "assetType": "google.deploymentmanager.Template",
      "displayMetadata": {
        "name": "sample-metadata-name",
        "description": "sample-metadata-description",
        "tagline": "sample-metadata-tagline",
        "support_info": "sample-metadata-support-info"
      },
      "createTime": "2019-01-04T19:36:02.573Z"
    },
    {
      "name": "catalogs/<catalog-ID>/products/listingonly",
      "assetType": "google.private-catalog.ListingOnly",
      "displayMetadata": {
        "name": "listing-based product",
        "description": "description",
        "tagline": "tagline",
        "support_info": "support_info",
        "signup_url": "https://cloud.google.com/launcher",
        "documentations": [
          {
            "url": "https://cloud.google.com/launcher"
          }
        ]
      },
      "createTime": "2019-01-06T00:25:44.722Z"
    }
  ]
}

Crea una versión del producto

A fin de crear una versión del producto, ejecuta el siguiente comando y reemplaza <catalog-ID> por un ID de catálogo y <product-name> por el nombre del producto para el que deseas crear una versión:

curl -s -X POST -H "Content-Type: application/json" -H "Authorization: Bearer <token>" -d @/tmp/rest_create_version_request https://cloudprivatecatalogproducer.googleapis.com/v1beta1/catalogs/<catalog-ID>/products/<product-name>/versions

En el siguiente ejemplo, se ilustra el contenido del archivo /tmp/rest_create_version_request:

{
  name: "catalogs/<catalog-ID>/products/<product-name>/versions/v1",
  description: "v1",
  original_asset: {
        imports: [
                {
                  name: "my-template",
                  content: "resources:\n name: \'awesome template\'\n  properties:\n",
                },
                {
                  name: "my-template.schema",
                  content: ""
                }
        ],
        mainTemplate: "my-template",
        templateFileType: "JINJA"
  }
}

El cuerpo de la respuesta contiene datos sobre la operación resultante, similar al siguiente resultado:

{
  "name": "operations/cvb.efcd831d-257d-43f7-8650-f7016c7469cb"
}

Enumera las versiones de un producto

Para mostrar una lista de las versiones de un producto, ejecuta el siguiente comando y reemplaza <catalog-ID> por el ID del catálogo y <product-name> por el nombre del producto para el que deseas enumerar las versiones:

curl -s -H "Authorization: Bearer <token>" https://cloudprivatecatalogproducer.googleapis.com/v1beta1/catalogs/<catalog-ID>/products/<product-name>/versions

El cuerpo de la respuesta contiene datos similares al siguiente resultado:

{
  "versions": [
    {
      "name": "catalogs/<catalog-ID>/products/<product-name>/versions/v1",
      "createTime": "2019-01-04T19:37:47.519Z",
      "updateTime": "2019-01-04T19:37:47.519Z"
    }
  ]
}

Sube un ícono de producto

Para subir un ícono de producto, ejecuta el siguiente comando y reemplaza <catalog-ID> por el ID del catálogo y <product-name> por el nombre del producto para el que deseas subir un ícono:

curl -s -X POST -H "Content-Type: application/json" -H "Authorization: Bearer <token>" -d @/tmp/rest_upload_icon_request https://cloudprivatecatalogproducer.googleapis.com/v1beta1/catalogs/<catalog-id>/products/<product-name>/icons:upload

En el siguiente ejemplo, se ilustra el contenido del archivo /tmp/rest_upload_icon_request:

{
  icon_bytes: "iVBORw0KGgoA...Jggg=="
}