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 a tu cuenta de Merchant Center, administrar varios proyectos en diferentes entornos o realizar la transición de proyectos cuando migres desde la 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
  • Anula el registro de un proyecto de Google Cloud de una cuenta de Merchant Center y regístralo en otra cuenta de Merchant Center.
  • Elige y ejecuta la estrategia de transición de proyectos de Google Cloud adecuada si migras de la 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 desarrolladores. 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 en ella de forma simultánea. 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 la Content API for Shopping son específicas de cada proyecto: Si recibiste una aprobación de acceso extendido para la Content API for Shopping, esa extensión se aplica solo al ID del proyecto de Google Cloud específico que enviaste en tu solicitud. Las extensiones no se transfieren automáticamente a los proyectos nuevos de Google Cloud.

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

Si ya usas la API de Merchant y necesitas cambiar tu integración a un nuevo proyecto de Google Cloud (por ejemplo, debido a una reestructuración de la organización, 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 de forma simultánea, puedes registrar el proyecto nuevo antes de retirar el anterior.

Paso 1: Crea y configura tu nuevo proyecto 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 nuevo proyecto 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 nuevo proyecto de Google Cloud

Autentica con las credenciales de tu nuevo proyecto de Google Cloud y llama al método accounts.developerRegistration.registerGcp 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 de Google Cloud registrados

Para confirmar que tus proyectos de Google Cloud, tanto el existente como el nuevo, están vinculados a tu cuenta de Merchant Center, llama al método accounts.developerRegistration.getDeveloperRegistration:

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

Reemplaza lo siguiente:

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

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

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

También puedes verificar con qué cuenta de Merchant Center está registrado el proyecto de Google Cloud que realiza la llamada. Para ello, llama al método accounts.developerRegistration.getAccountForGcpRegistration:

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

Reemplaza lo siguiente:

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

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

  1. Actualiza la configuración de tu aplicación para usar las credenciales de tu nuevo proyecto de Google Cloud. Debido a que ambos proyectos están registrados, tus cargas de trabajo se transfieren sin interrupciones.
  2. Una vez que todo el tráfico use el proyecto nuevo, puedes quitar el vínculo del proyecto anterior de forma opcional. Para ello, autentícate con las credenciales del proyecto de Google Cloud anterior y llama al método accounts.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: Es tu ID de Merchant Center.
  • OLD_PROJECT_ACCESS_TOKEN: Es el token de autorización del proyecto de Google Cloud anterior 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 de Google Cloud registrado a otra cuenta de Merchant Center

Debido a que un proyecto de Google Cloud se puede registrar en solo 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 lineamientos sobre cómo elegir la cuenta de Merchant Center en la que registrarás tu proyecto, consulta Consideraciones importantes:

  1. Autentica con las credenciales del proyecto de Google Cloud que tienen acceso a OLD_ACCOUNT_ID y llama a 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 a registerGcp en accounts/NEW_ACCOUNT_ID/developerRegistration con las credenciales del 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.

Transición de proyectos de Google Cloud cuando se migra desde la Content API for Shopping

Cuando migres de la 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 del proyecto original abandonó tu organización.

Según si quieres conservar tu proyecto existente o usar uno nuevo para la API de Merchant y, al mismo tiempo, mantener Content API for Shopping en tu proyecto anterior, elige una de las siguientes dos opciones.

Elige la estrategia de tu 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 se recupera a través de la Atención al cliente 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 habilitada la Content API for Shopping en el proyecto anterior). No (el proyecto anterior conserva su extensión y el nuevo solo llama a la API de Merchant)

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

Elige esta opción si quieres usar tu proyecto de Google Cloud existente para la 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 APIs 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 guía Regístrate como desarrollador para autorizar las solicitudes de tu proyecto existente y llama al método registerGcp para vincular tu proyecto de Google Cloud existente 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 de Google Cloud anterior 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 está ejecutando con credenciales válidas y una extensión aprobada en tu proyecto de Google Cloud anterior, y quieres compilar tu nueva integración de la API de Merchant en un proyecto de Google Cloud independiente y dedicado:

  1. Mantén la integración de Content API for Shopping en el proyecto anterior: Deja los flujos de trabajo y las credenciales existentes de Content API for Shopping en ejecución en el proyecto de Google Cloud anterior. Si se aprobó tu solicitud de extensión para el ID del proyecto antiguo, tu integración actual de Content API for Shopping seguirá funcionando hasta la fecha límite extendida.
  2. Crea un proyecto de Google Cloud nuevo exclusivamente para la API de Merchant: Crea un proyecto de Google Cloud nuevo, habilita merchantapi.googleapis.com y crea credenciales (una cuenta de servicio o un ID de cliente de OAuth 2.0) para tus nuevas cargas de trabajo de la API de Merchant.
  3. Registra el proyecto nuevo: Sigue los pasos que se indican en Regístrate como desarrollador para autorizar las solicitudes de tu proyecto nuevo y llama al método registerGcp 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 gradualmente las llamadas a la API de tu proyecto anterior de Content API for Shopping al nuevo proyecto de la API de Merchant antes de la fecha de baja programada de Content API for Shopping (o antes de que venza la extensión aprobada) y retira el proyecto anterior una vez que se complete la migración.

Caso especial: Se perdió el acceso al proyecto de Google Cloud anterior antes de completar la migración

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

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

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

Próximos pasos