Administra y realiza la transición de proyectos de Google Cloud

Para usar la API de Merchant, debes vincular tu proyecto de Google Cloud a tu cuenta principal de Merchant Center a través del registro de desarrollador. Durante el ciclo de vida de tu integración, es posible que debas cambiar el ID del proyecto de Google Cloud asociado con tu cuenta de Merchant Center, administrar varios proyectos en diferentes entornos o realizar la transición de proyectos cuando migres de Content API for Shopping.

En esta guía, se explica cómo hacer lo siguiente:

  • Cambiar o rotar el ID del proyecto de Google Cloud para una integración existente de la API de Merchant sin tiempo de inactividad
  • Anular el registro de un proyecto de Google Cloud de una cuenta de Merchant Center y registrarlo en otra cuenta de Merchant Center
  • Elegir y ejecutar la estrategia de transición de proyectos de Google Cloud adecuada si migras de Content API for Shopping a la API de Merchant

Requisitos previos

Antes de administrar o realizar la transición de proyectos de Google Cloud, verifica que cumplas con los requisitos previos de registro de desarrollador. Para obtener más detalles, consulta la sección Requisitos previos de la guía Regístrate como desarrollador.

Reglas y limitaciones clave

Cuando planifiques cambios en tus proyectos de Google Cloud, ten en cuenta las siguientes reglas:

  • Registro de proyectos de uno a varios: Una sola cuenta principal de Merchant Center puede tener varios proyectos de Google Cloud registrados simultáneamente. Sin embargo, cada proyecto de Google Cloud solo se puede registrar en una cuenta principal de Merchant Center en un momento determinado. Si intentas registrar un proyecto que ya está vinculado a otra cuenta de Merchant Center, se muestra un error ALREADY_EXISTS (409 Conflict) con el motivo DUPLICATE_PROJECT_REGISTRATION.
  • Privacidad de la propiedad del proyecto: Por motivos de seguridad y privacidad, la Asistencia de Google Shopping y la API de Merchant no pueden divulgar las direcciones de correo electrónico del propietario o administrador de un proyecto de Google Cloud. Si pierdes el acceso a un proyecto, comunícate con la Atención al Cliente de Google Cloud.
  • Las extensiones de cierre de Content API for Shopping son específicas del proyecto: Si recibiste una aprobación de acceso extendido para Content API for Shopping, esa extensión solo se aplica al ID del proyecto de Google Cloud específico que se envió en tu solicitud. Las extensiones no se transfieren automáticamente a proyectos nuevos de Google Cloud.

Cambia el ID del proyecto de Google Cloud para una cuenta de la API de Merchant

Si ya usas la API de Merchant y necesitas cambiar tu integración a un proyecto nuevo de Google Cloud (por ejemplo, debido a una reestructuración organizacional, políticas de rotación de credenciales o pérdida de acceso de administrador a un proyecto anterior), puedes realizar la transición de proyectos sin tiempo de inactividad. Debido a que una cuenta de Merchant Center admite varios proyectos de Google Cloud registrados simultáneamente, puedes registrar el proyecto nuevo antes de retirar el anterior.

Paso 1: Crea y configura tu proyecto nuevo de Google Cloud

  1. Crea un proyecto nuevo en la consola de Google Cloud. Para obtener instrucciones detalladas, consulta Crea un proyecto de Google Cloud.
  2. Habilita la API de Merchant (merchantapi.googleapis.com) en el proyecto nuevo. Consulta la sección Habilita la API de Merchant en Crea un proyecto de Google Cloud.
  3. Crea credenciales de autenticación (una cuenta de servicio o un ID de cliente de OAuth 2.0) en el proyecto nuevo de Google Cloud.
  4. Agrega la dirección de correo electrónico de autenticación (como el correo electrónico de la cuenta de servicio nueva) como usuario con el rol ADMIN en tu cuenta principal de Merchant Center.

Paso 2: Registra el proyecto nuevo de Google Cloud

Autentica con las credenciales de tu proyecto nuevo de Google Cloud y llama al accounts.developerRegistration.registerGcp método para vincular el proyecto nuevo a tu cuenta principal de Merchant Center. Para obtener instrucciones detalladas, consulta la sección Realiza la llamada de registro en Regístrate como desarrollador.

Paso 3: Verifica tus proyectos registrados de Google Cloud

Para confirmar que tus proyectos existentes y nuevos de Google Cloud estén vinculados a tu cuenta de Merchant Center, llama al accounts.developerRegistration.getDeveloperRegistration método:

GET https://merchantapi.googleapis.com/accounts/v1/accounts/ACCOUNT_ID/developerRegistration
Authorization: Bearer ACCESS_TOKEN

Reemplaza lo siguiente:

  • ACCOUNT_ID: tu ID de Merchant Center
  • ACCESS_TOKEN: el token de autorización para realizar la llamada a la API

La respuesta muestra el DeveloperRegistration recurso con los números numéricos del proyecto de Google Cloud de todos los proyectos vinculados en el gcpIds campo:

{
  "name": "accounts/ACCOUNT_ID/developerRegistration",
  "gcpIds": [
    "123456789012",
    "987654321098"
  ]
}

También puedes verificar en qué cuenta de Merchant Center está registrado el proyecto de Google Cloud que llama llamando al accounts.developerRegistration.getAccountForGcpRegistration método:

GET https://merchantapi.googleapis.com/accounts/v1/accounts:getAccountForGcpRegistration
Authorization: Bearer ACCESS_TOKEN

Reemplaza lo siguiente:

  • ACCESS_TOKEN: el token de autorización generado con las credenciales del proyecto de Google Cloud que deseas verificar

Paso 4: Cambia el tráfico y anula el registro del proyecto anterior de Google Cloud

  1. Actualiza la configuración de tu aplicación para usar las credenciales de tu proyecto nuevo de Google Cloud. Debido a que ambos proyectos están registrados, tus cargas de trabajo realizan la transición sin interrupciones.
  2. Una vez que todo el tráfico use el proyecto nuevo, puedes quitar el vínculo del proyecto anterior. Para ello, autentica con las credenciales del proyecto anterior de Google Cloud y llama al métodoaccounts.developerRegistration.unregisterGcp:
POST https://merchantapi.googleapis.com/accounts/v1/accounts/ACCOUNT_ID/developerRegistration:unregisterGcp
Content-Type: application/json
Authorization: Bearer OLD_PROJECT_ACCESS_TOKEN

Reemplaza lo siguiente:

  • ACCOUNT_ID: tu ID de Merchant Center
  • OLD_PROJECT_ACCESS_TOKEN: el token de autorización del proyecto anterior de Google Cloud para realizar la llamada a la API

Java

import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.accounts.v1.DeveloperRegistrationName;
import com.google.shopping.merchant.accounts.v1.DeveloperRegistrationServiceClient;
import com.google.shopping.merchant.accounts.v1.DeveloperRegistrationServiceSettings;
import com.google.shopping.merchant.accounts.v1.UnregisterGcpRequest;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;

/**
 * This class demonstrates how to unregister the GCP project currently used to call the Merchant API
 * for a specific account.
 */
public class UnregisterGcpSample {

  public static void unregisterGcp(Config config) throws Exception {

    // Obtains OAuth token based on the user's configuration.
    GoogleCredentials credential = new Authenticator().authenticate();

    // Creates service settings using the credentials retrieved above.
    DeveloperRegistrationServiceSettings developerRegistrationServiceSettings =
        DeveloperRegistrationServiceSettings.newBuilder()
            .setCredentialsProvider(FixedCredentialsProvider.create(credential))
            .build();

    // Creates DeveloperRegistration name to identify the DeveloperRegistration.
    // The name has the format: accounts/{account}/developerRegistration
    String name =
        DeveloperRegistrationName.newBuilder()
            .setAccount(config.getAccountId().toString())
            .build()
            .toString();

    // Calls the API and propagates any network failures/errors.
    try (DeveloperRegistrationServiceClient developerRegistrationServiceClient =
        DeveloperRegistrationServiceClient.create(developerRegistrationServiceSettings)) {

      // Creates a request to unregister the GCP project.
      UnregisterGcpRequest request = UnregisterGcpRequest.newBuilder().setName(name).build();

      System.out.println("Sending UnregisterGcp request for: " + name);
      developerRegistrationServiceClient.unregisterGcp(request);
      System.out.println("Unregister GCP successful.");
    }
  }

  public static void main(String[] args) throws Exception {
    Config config = Config.load();
    unregisterGcp(config);
  }
}

cURL

curl -X POST \
  "https://merchantapi.googleapis.com/accounts/v1/accounts/ACCOUNT_ID/developerRegistration:unregisterGcp" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer OLD_PROJECT_ACCESS_TOKEN"

Reasigna un proyecto registrado de Google Cloud a otra cuenta de Merchant Center

Debido a que un proyecto de Google Cloud solo se puede registrar en una cuenta principal de Merchant Center a la vez, sigue estos pasos para reasignar un proyecto existente de una cuenta de Merchant Center (OLD_ACCOUNT_ID) a otra (NEW_ACCOUNT_ID). Para obtener instrucciones sobre cómo elegir la cuenta de Merchant Center en la que registrar tu proyecto, consulta Consideraciones importantes:

  1. Autentica con las credenciales del proyecto de Google Cloud que tienen acceso a OLD_ACCOUNT_ID y llama unregisterGcp en accounts/OLD_ACCOUNT_ID/developerRegistration.
  2. Verifica que la identidad de autenticación tenga el rol ADMIN en NEW_ACCOUNT_ID y que NEW_ACCOUNT_ID tenga un sitio web verificado.
  3. Llama registerGcp en accounts/NEW_ACCOUNT_ID/developerRegistration con las credenciales de l mismo proyecto de Google Cloud. Si NEW_ACCOUNT_ID aún no tiene un usuario con el rol API_DEVELOPER, pasa un correo electrónico de usuario válido en el campo de solicitud developerEmail. Los correos electrónicos de cuentas de servicio que terminan en .gserviceaccount.com no se pueden usar como developerEmail.

Realiza la transición de proyectos de Google Cloud cuando migres de Content API for Shopping

Cuando migres de Content API for Shopping a la API de Merchant, es posible que encuentres limitaciones de acceso en tu proyecto heredado de Google Cloud, por ejemplo, si tus claves de API originales se configuraron directamente a través del flujo de trabajo de autenticación heredado de Merchant Center o si el propietario original del proyecto abandonó tu organización.

Según si deseas conservar tu proyecto existente o usar un proyecto nuevo para la API de Merchant mientras mantienes Content API for Shopping en tu proyecto anterior, elige una de las siguientes dos opciones.

Elige tu estrategia de proyecto de migración

Situación ¿Se requiere acceso de administrador al proyecto anterior? APIs que se habilitarán ¿Se requiere la extensión de Content API for Shopping en el proyecto nuevo?
Opción 1: Conserva tu proyecto existente Sí (o recupera el acceso a través de la Asistencia de Google Cloud) Habilita la API de Merchant en el proyecto existente (Content API for Shopping ya está habilitada). No (la extensión existente en el ID del proyecto anterior sigue siendo válida).
Opción 2: Conserva el proyecto anterior para Content API for Shopping y usa un proyecto nuevo para la API de Merchant No Habilita la API de Merchant en el proyecto nuevo (mantén Content API for Shopping habilitada en el proyecto anterior). No (el proyecto anterior conserva su extensión; el proyecto nuevo solo llama a la API de Merchant).

Opción 1: Conserva tu proyecto existente de Google Cloud

Elige esta opción si quieres usar tu proyecto existente de Google Cloud para Content API for Shopping y la API de Merchant.

Antes de comenzar, verifica o recupera el acceso a tu proyecto existente. Accede a la consola de Google Cloud y confirma que tu cuenta tenga cualquiera de los siguientes roles en tu proyecto existente:

  • Propietario (roles/owner)
  • Editor (roles/editor)
  • Administrador de Service Usage (roles/serviceusage.serviceUsageAdmin)
  1. Habilita la API de Merchant: Habilita merchantapi.googleapis.com en la biblioteca de la API de Google Cloud o con el comando gcloud. Para obtener instrucciones paso a paso, consulta Configura la autenticación de la API desde Merchant Center.
  2. Registra el proyecto de Google Cloud en Merchant Center: Sigue los pasos de la Regístrate como desarrollador guía para autorizar solicitudes de tu proyecto existente y llama al registerGcp método para vincular tu proyecto existente de Google Cloud a tu cuenta principal de Merchant Center. Tus claves de cuenta de servicio existentes y la extensión aprobada de Content API for Shopping seguirán funcionando sin cambios.

Opción 2: Usa el proyecto anterior de Google Cloud para Content API for Shopping y un proyecto nuevo para la API de Merchant

Elige esta opción si tu integración heredada de Content API for Shopping ya se ejecuta con credenciales válidas y una extensión aprobada en tu proyecto anterior de Google Cloud, y deseas compilar tu nueva integración de la API de Merchant en un proyecto de Google Cloud independiente y dedicado:

  1. Mantén tu integración de Content API for Shopping en el proyecto anterior: Deja tus flujos de trabajo y credenciales existentes de Content API for Shopping ejecutándose en el proyecto anterior de Google Cloud. Si se aprobó tu solicitud de extensión para el ID del proyecto anterior, tu integración actual de Content API for Shopping seguirá funcionando hasta la fecha límite extendida.
  2. Crea un proyecto nuevo de Google Cloud exclusivamente para la API de Merchant: Crea un proyecto nuevo de Google Cloud, habilita merchantapi.googleapis.com y crea credenciales (una cuenta de servicio o un ID de cliente de OAuth 2.0) para tus cargas de trabajo nuevas de la API de Merchant.
  3. Registra el proyecto nuevo: Sigue los pasos de Regístrate como desarrollador para autorizar solicitudes de tu proyecto nuevo y llama al registerGcp método con un correo electrónico de contacto de desarrollador válido. Los correos electrónicos de cuentas de servicio (que terminan en .gserviceaccount.com) no se pueden usar como developerEmail.
  4. Migra las cargas de trabajo de forma incremental: Cambia las llamadas a la API de tu proyecto anterior de Content API for Shopping a tu proyecto nuevo de la API de Merchant de forma gradual, antes de la fecha de baja programada de Content API for Shopping (o antes de que venza tu extensión aprobada) y retira el proyecto anterior una vez que se complete la migración.

Caso especial: Pérdida de acceso a tu proyecto anterior de Google Cloud antes de completar la migración

Debido a que Content API for Shopping dejó de estar disponible, ya no aparece en la biblioteca de la API de Google Cloud y no se puede habilitar en proyectos de Google Cloud recién creados. Como resultado, no puedes mover las cargas de trabajo existentes de Content API for Shopping a un proyecto nuevo de Google Cloud por tu cuenta.

Si ya no puedes realizar llamadas a Content API for Shopping desde tu proyecto anterior (por ejemplo, debido a credenciales revocadas o acceso al proyecto irrecuperable), haz lo siguiente:

  1. Comunícate con la Atención al Cliente de Google Cloud para recuperar el acceso a tu proyecto existente de Google Cloud (opción 1).
  2. Sigue la opción 2 para crear y registrar un proyecto nuevo de Google Cloud y migrar los flujos de trabajo afectados directamente a la API de Merchant. Si encuentras un bloqueo de migración crítico, comunícate con la asistencia de la API de Merchant.

Próximos pasos