Registrarse como desarrollador es un proceso de configuración obligatorio que se realiza una sola vez y que vincula tu proyecto de Google Cloud con tu cuenta de Merchant Center y registra tu información de contacto de desarrollador en Google. Esto permite que Google envíe anuncios del servicio críticos y actualizaciones obligatorias a los contactos técnicos pertinentes que proporciones.
Este documento forma parte de una serie de varias partes sobre cómo comenzar a usar la API de Merchant. Si ya te registraste en la API de Merchant, puedes pasar a la siguiente sección: Inserta tu primer producto
Requisitos previos
Antes de registrarte para usar la API de Merchant, asegúrate de cumplir con los siguientes requisitos:
- Cuenta de Merchant Center: Necesitas una cuenta de Merchant Center existente. El registro solo se admite para cuentas de producción. Las cuentas de prueba no son aptas para el registro de desarrolladores.
- Página principal verificada: Tu cuenta de Merchant Center debe tener un sitio web verificado. Esto demuestra la propiedad del dominio asociado con tu empresa.
- Acceso de administrador en la cuenta de Merchant Center: El correo electrónico o la cuenta de servicio que usas para autorizar la llamada de registro debe tener el tipo de acceso
ADMINen la cuenta de Merchant Center en la que te registras. Para obtener más información, consulta Autoriza solicitudes a la API de Merchant. - ID del proyecto de Google Cloud: Tu aplicación debe estar asociada con un proyecto de Google Cloud dedicado para proporcionar credenciales de autenticación. Para obtener detalles sobre dónde encontrar el ID del proyecto, consulta Busca el nombre, el número y el ID del proyecto.
- Una dirección de correo electrónico válida asociada a una Cuenta de Google que proporciones como el punto de contacto del desarrollador para recibir actualizaciones de Google No debe ser un correo electrónico de cuenta de servicio. Puedes usar una dirección de correo electrónico que ya forme parte de la cuenta de Merchant Center o una nueva.
Cómo registrarse como desarrollador con la API de Merchant
Para usar la API de Merchant, debes registrar tu información de contacto de desarrollador y el proyecto de Google Cloud con tu cuenta de Merchant Center a través del método registerGcp.
Ya sea que trabajes con varias cuentas de comerciante o no, realizas la operación de registro una vez para cada proyecto de Google Cloud que pretendas usar. Si trabajas con varios proyectos de Google Cloud, puedes registrar algunos o todos en la misma cuenta de Merchant Center.
Beneficios del registro
El registro proporciona los siguientes beneficios:
- Creación de contacto técnico: Crea un contacto técnico en Merchant Center. Google envía actualizaciones importantes específicas de la API al contacto técnico, como anuncios del servicio y novedades sobre funciones.
- Administración de varias cuentas de comerciante: Te permite representar el punto de contacto del desarrollador para todas las cuentas de comerciante que administras.
Excepto el registro, se bloquean todas las llamadas a la API de Merchant desde un proyecto de Google Cloud no registrado, lo que devuelve un código de error 401 con el estado UNAUTHENTICATED y el siguiente mensaje de error:
GCP project with id {GCP_ID} and number {GCP_NUMBER} is not registered with the merchant account.
Follow these steps https://developers.google.com/merchant/api/guides/quickstart#register_as_a_developer
to register the GCP project with the merchant account then try calling the API again in 5 minutes.
Consideraciones importantes
- Configuración única para cada proyecto de Google Cloud: El registro es una configuración única para cada proyecto de Google Cloud y se aplica a todos los usuarios y cuentas de servicio dentro del proyecto de Google Cloud. Asegúrate de que la API de Merchant esté habilitada en tu proyecto de Google Cloud.
- Cada proyecto de Google Cloud solo se puede registrar con una sola
cuenta de Merchant Center en un momento determinado: Si intentas registrar un
proyecto de Google Cloud con varias cuentas de Merchant Center
de forma simultánea, recibirás un error
ALREADY_REGISTERED. Usa la misma dirección de correo electrónico de desarrollador para el registro. Ten en cuenta que se pueden registrar varios proyectos de Google Cloud en la misma cuenta de Merchant Center. Para obtener instrucciones sobre cómo cambiar o rotar tu proyecto de Google Cloud registrado, consulta Administra y realiza la transición de proyectos de Google Cloud. Designa la cuenta correcta para los terceros (3P) que administran varios comercios: Para garantizar la estabilidad a largo plazo y evitar interrupciones del servicio, los terceros que representan o administran varios comercios deben usar la estructura de cuentas adecuada dentro del ecosistema de Google. Te recomendamos que registres la cuenta que represente la identidad de tu empresa, según el tipo de empresa:
- Marketplaces con una cuenta avanzada existente: Si tu empresa opera como un marketplace y ya tiene una cuenta avanzada que representa a toda la plataforma, debes usar este ID de cuenta existente.
- Servicios de comparación de productos (CSS): Si eres un CSS, debes usar tu ID de cuenta de CSS o ID de cuenta de grupo de CSS único.
- Agencias, desarrolladores y otros terceros: Si eres una empresa externa, como una agencia o un desarrollador externo, que administra varias cuentas de comerciante y no tienes un solo ID de Merchant Center que represente a tu empresa, debes crear una cuenta de Merchant Center principal nueva y solicitar que se convierta en una cuenta avanzada. Las cuentas avanzadas pueden administrar cuentas secundarias y proporcionar la estructura necesaria para las operaciones de terceros.
En la siguiente tabla, se proporcionan recomendaciones para diferentes tipos de socios:
Tipo de socio Cuenta recomendada para registrar Marketplaces Tu cuenta avanzada principal (o más grande) Agencias de publicidad Una cuenta independiente o una cuenta avanzada que represente a tu empresa Si recién comienzas a usar la API de Merchant, te recomendamos que crees una cuenta independiente. Servicios de comparación de productos (CSS) El ID de cuenta de tu grupo de CSS o el ID de cuenta de CSS específico, según si la cuenta representa a todo el grupo de CSS o solo a un CSS específico dentro de un grupo. No uses una cuenta avanzada de CSS. Comercios o marcas Es la cuenta principal que representa tu marca. Puede ser una cuenta independiente o avanzada. Proveedores de datos de inventario y punto de venta (PdV) Tu cuenta avanzada principal (o más grande) Otros proveedores externos Si tienes una cuenta de Merchant Center, puedes usarla para registrarte. De lo contrario, crea una cuenta independiente de la empresa. Luego, verifica tu sitio web. Realiza el registro solo para tu cuenta principal de Merchant Center: Realizas el registro de desarrollador solo con tu cuenta principal de Merchant Center y te conviertes en el contacto de desarrollador para todas las cuentas secundarias de Merchant Center vinculadas. No realices el registro para cada una de tus cuentas secundarias de Merchant Center.
En el diagrama anterior, se muestra la configuración del registro cuando se usan varios proyectos de Google Cloud y una cuenta principal de Merchant Center con, de manera opcional, varias cuentas secundarias de Merchant Center.
Requisito de autenticación: Cuando realices el registro, la cuenta de Merchant Center autenticada (que es la cuenta en la que residen tus credenciales) debe coincidir con la cuenta de Merchant Center que se está suplantando (que es la cuenta que estás registrando). No puedes registrarte para obtener una cuenta secundaria si te autenticaste con una cuenta principal o de administrador independiente.
Solo cuentas con sitios web verificados: El registro solo se permite para las cuentas de Merchant Center con un sitio web verificado.
No hay registro para cuentas de prueba: No puedes realizar el registro para cuentas de prueba.
Una vez que registres una dirección de correo electrónico de desarrollador, haz lo siguiente:
- Puedes realizar llamadas a la API de Merchant en un plazo de 5 minutos después del registro.
- Si el correo electrónico pertenece a un usuario existente de Merchant Center, se le otorga el rol
API developer. De lo contrario, se creará un usuario nuevo en Merchant Center, quien deberá aceptar una invitación en un plazo de 14 días para evitar que venza y tener que reiniciar el proceso de registro. Solo debes completar el proceso de registro después de que el usuario haga clic en el vínculo de invitación.
Realiza la llamada de registro
Para registrarte, llama al método registerGcp. Tienes dos opciones para realizar la llamada de registro:
- Opción 1: Llamadas directas a la API Realizas solicitudes sin procesar a los extremos de la API directamente, por lo general, a través de HTTP(S). Debes controlar de forma manual aspectos como la formación del cuerpo de la solicitud, la configuración de los encabezados (incluida la autenticación) y el análisis de la respuesta.
- Opción 2: Bibliotecas cliente Usa las bibliotecas compiladas previamente que ofrecen una forma más conveniente y con lenguaje idiomático para interactuar con la API de Merchant. Controlan la autenticación y la autorización, y ofrecen una forma conveniente de abstraer la comunicación HTTP subyacente. Hay muestras de código oficiales disponibles para que puedas comenzar rápidamente.
Autorización para la llamada de registro
Como se describe en el paso Autoriza solicitudes a la API de Merchant, tienes dos situaciones de autenticación distintas:
- OAuth 2.0: para proveedores externos o agencias que administran varias cuentas de comerciante
- Cuentas de servicio: para acceder a tu propia cuenta de Merchant Center
Para obtener más información sobre la autorización de la llamada de registro, consulta ¿Cómo realizo la autenticación y la autorización para la llamada de registro?
Llamada de registro
En los siguientes ejemplos, realizarás la llamada de registro con llamadas directas a la API o bibliotecas cliente.
Realiza la llamada de registro con el método registerGcp.
POST https://merchantapi.googleapis.com/accounts/v1/accounts/{ACCOUNT_ID}/developerRegistration:registerGcp
Content-Type: application/json
Authorization: Bearer {ACCESS_TOKEN}"
{
"developerEmail": "{DEVELOPER_EMAIL}"
}
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.DEVELOPER_EMAIL: Es la dirección de correo electrónico del contacto técnico principal.
Una llamada correcta devuelve un recurso DeveloperRegistration, que confirma el estado de vinculación correcto:
"name": "accounts/{ACCOUNT_ID}/developerRegistration",
"gcpIds": ["{GOOGLE_CLOUD_PROJECT_ID}"]
Python
Descarga las muestras y sigue las instrucciones de las muestras de Python de la API de Google Merchant para configurar las bibliotecas cliente de Python.
from examples.authentication import configuration
from examples.authentication import generate_user_credentials
from google.shopping.merchant_accounts_v1 import DeveloperRegistration
from google.shopping.merchant_accounts_v1 import DeveloperRegistrationServiceClient
from google.shopping.merchant_accounts_v1 import RegisterGcpRequest
def register_gcp(
account_id: str, developer_email: str
) -> DeveloperRegistration:
"""Registers the GCP project used to call the Merchant API with a developer email.
Args:
account_id: The ID of your Merchant Center account.
developer_email: The email address of the developer to register.
Returns:
The created or updated DeveloperRegistration object.
"""
# Get OAuth credentials.
credentials = generate_user_credentials.main()
# Create a client to the Developer Registration Service.
client = DeveloperRegistrationServiceClient(credentials=credentials)
# The name has the format: accounts/{account}/developerRegistration
name = f"accounts/{account_id}/developerRegistration"
# Create the request to register the GCP project.
request = RegisterGcpRequest(
name=name,
developer_email=developer_email,
)
# Make the API call and handle potential errors.
try:
print("Sending RegisterGcp request:")
response = client.register_gcp(request=request)
print("Registered GCP project successfully:")
print(response)
return response
except RuntimeError as e:
print(f"An error occurred: {e}")
raise
if __name__ == "__main__":
# Your Merchant Center account ID.
# This can be found in the Merchant Center UI.
_account_id = configuration.Configuration().read_merchant_info()
# The developer email to associate with the GCP project.
_developer_email = "YOUR_EMAIL_HERE"
register_gcp(_account_id, _developer_email)
Java
Descarga las muestras y sigue las instrucciones de las muestras de Java de la API de Google Merchant para configurar las bibliotecas cliente de Java.
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.accounts.v1.DeveloperRegistration;
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.RegisterGcpRequest;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;
/**
* This class demonstrates how to register the GCP project used to call the Merchant API with a
* developer email.
*/
public class RegisterGcpSample {
public static DeveloperRegistration registerGcp(Config config, String developerEmail) 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 register the GCP project with the developer email.
RegisterGcpRequest request =
RegisterGcpRequest.newBuilder().setName(name).setDeveloperEmail(developerEmail).build();
System.out.println("Sending RegisterGcp request:");
DeveloperRegistration response = developerRegistrationServiceClient.registerGcp(request);
System.out.println(response);
return response;
}
}
public static void main(String[] args) throws Exception {
Config config = Config.load();
String developerEmail = "YOUR_EMAIL_HERE"; // Replace with your email
registerGcp(config, developerEmail);
}
}
PHP
Descarga las muestras y sigue las instrucciones de las muestras de PHP de la API de Google Merchant para configurar las bibliotecas cliente de PHP.
require_once __DIR__ . '/../../../../vendor/autoload.php';
require_once __DIR__ . '/../../../Authentication/Authentication.php';
require_once __DIR__ . '/../../../Authentication/Config.php';
use Google\ApiCore\ApiException;
use Google\Shopping\Merchant\Accounts\V1\Client\DeveloperRegistrationServiceClient;
use Google\Shopping\Merchant\Accounts\V1\RegisterGcpRequest;
/**
* This class demonstrates how to register the GCP project used to call the
* Merchant API with a developer email.
*/
class RegisterGcpSample
{
/**
* A helper function to create the name string for the
* DeveloperRegistration.
*
* @param string $accountId The merchant account ID.
* @return string The name, which has the format:
* `accounts/{account}/developerRegistration`
*/
private static function getName(string $accountId): string
{
return sprintf("accounts/%s/developerRegistration", $accountId);
}
/**
* Registers the GCP project with a developer email.
*
* @param array $config The configuration data for authentication and account ID.
* @param string $developerEmail The email of the developer to register.
*/
public static function registerGcpSample(array $config, string $developerEmail): void
{
// Obtains OAuth credentials from the configuration file.
$credentials = Authentication::useServiceAccountOrTokenFile();
// Creates a configuration object for the client.
$options = ['credentials' => $credentials];
// Creates the DeveloperRegistrationServiceClient.
$developerRegistrationServiceClient = new DeveloperRegistrationServiceClient($options);
// Creates the name of the developer registration to identify it.
$name = self::getName($config['accountId']);
// Calls the API and handles any network failures.
try {
// Creates a request to register the GCP project with the developer email.
$request = new RegisterGcpRequest([
'name' => $name,
'developer_email' => $developerEmail
]);
printf("Sending RegisterGcp request:%s", PHP_EOL);
// The `registerGcp` method returns a `DeveloperRegistration` object
// upon success.
$response = $developerRegistrationServiceClient->registerGcp($request);
print "Successfully registered developer email '$developerEmail' for account {$config['accountId']}.\n";
print_r($response);
} catch (ApiException $e) {
printf("An error occurred: %s%s", $e->getMessage(), PHP_EOL);
}
}
/**
* Helper to execute the sample.
*/
public function callSample(): void
{
$config = Config::generateConfig();
// An email address for a developer to register for the API.
$developerEmail = 'YOUR_EMAIL_HERE'; // Replace with your email
self::registerGcpSample($config, $developerEmail);
}
}
// Executes the sample.
$sample = new RegisterGcpSample();
$sample->callSample();
cURL
curl -X POST "https://merchantapi.googleapis.com/accounts/v1/accounts/{ACCOUNT_ID}/developerRegistration:registerGcp" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {ACCESS_TOKEN}" \
-d '{
"developerEmail": "{DEVELOPER_EMAIL}"
}'
Para completar el registro, debes asegurarte de que, al menos, un usuario de Merchant Center tenga el rol de API developer. Para lograrlo, puedes
realizar una de las siguientes operaciones:
- Proporciona el
developerEmailal métodoregisterGcp. - Agrega un usuario nuevo que tenga el rol
API developeren la IU de Merchant Center. - Asigna el rol
API developera un usuario existente en la IU de Merchant Center. - Llama al método
accounts.users.createpara crear un usuario nuevo y asignarle el rolAPI developer. - Asigna el rol
API developera un usuario existente con el métodoaccounts.users.patch.
Prácticas recomendadas después del registro
Para beneficiarte de una administración de acceso sólida y evitar futuras interrupciones del servicio, te recomendamos que sigas un conjunto de prácticas recomendadas después de completar el registro inicial:
Otorga permisos adicionales a API developer
Cuando registras un contacto de desarrollador, se le asigna automáticamente el rol
API developer. Este rol no incluye otros permisos necesarios
para administrar la cuenta de Merchant Center ni realizar todas las llamadas a la API. Te recomendamos agregar los roles ADMIN o STANDARD a tus desarrolladores para proporcionar un acceso integral.
Para modificar los derechos de acceso de un usuario, usa el método accounts.users.patch. Especifica los derechos de acceso en el campo updateMask del cuerpo de la solicitud para agregar o quitar roles:
PATCH https://merchantapi.googleapis.com/accounts/v1/{ACCOUNT_ID}/users/{DEVELOPER_EMAIL}?update_mask=access_rights
Content-Type: application/json
Authorization: Bearer {ACCESS_TOKEN}"
{
"name": "accounts/{ACCOUNT_ID}/users/{DEVELOPER_EMAIL}",
"access_rights": [ "ADMIN", "API_DEVELOPER" ]
}
Python
from examples.authentication import configuration
from examples.authentication import generate_user_credentials
from google.protobuf import field_mask_pb2
from google.shopping.merchant_accounts_v1 import AccessRight
from google.shopping.merchant_accounts_v1 import UpdateUserRequest
from google.shopping.merchant_accounts_v1 import User
from google.shopping.merchant_accounts_v1 import UserServiceClient
FieldMask = field_mask_pb2.FieldMask
_ACCOUNT = configuration.Configuration().read_merchant_info()
def update_user(user_email, user_access_right):
"""Updates a user to make it an admin of the MC account."""
credentials = generate_user_credentials.main()
client = UserServiceClient(credentials=credentials)
# Create user name string
name = "accounts/" + _ACCOUNT + "/users/" + user_email
user = User(name=name, access_rights=[user_access_right])
field_mask = FieldMask(paths=["access_rights"])
try:
request = UpdateUserRequest(user=user, update_mask=field_mask)
print("Sending Update User request")
response = client.update_user(request=request)
print("Updated User Name below")
print(response.name)
except RuntimeError as e:
print(e)
if __name__ == "__main__":
# Modify this email to update the right user
email = "USER_MAIL_ACCOUNT"
access_right = AccessRight.ADMIN
update_user(email, access_right)
Java
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.protobuf.FieldMask;
import com.google.shopping.merchant.accounts.v1.AccessRight;
import com.google.shopping.merchant.accounts.v1.UpdateUserRequest;
import com.google.shopping.merchant.accounts.v1.User;
import com.google.shopping.merchant.accounts.v1.UserName;
import com.google.shopping.merchant.accounts.v1.UserServiceClient;
import com.google.shopping.merchant.accounts.v1.UserServiceSettings;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;
/** This class demonstrates how to update a user to make it an admin of the MC account. */
public class UpdateUserSample {
public static void updateUser(Config config, String email, AccessRight accessRight)
throws Exception {
GoogleCredentials credential = new Authenticator().authenticate();
UserServiceSettings userServiceSettings =
UserServiceSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(credential))
.build();
// Creates user name to identify user.
String name =
UserName.newBuilder()
.setAccount(config.getAccountId().toString())
.setEmail(email)
.build()
.toString();
// Create a user with the updated fields.
User user = User.newBuilder().setName(name).addAccessRights(accessRight).build();
FieldMask fieldMask = FieldMask.newBuilder().addPaths("access_rights").build();
try (UserServiceClient userServiceClient = UserServiceClient.create(userServiceSettings)) {
UpdateUserRequest request =
UpdateUserRequest.newBuilder().setUser(user).setUpdateMask(fieldMask).build();
System.out.println("Sending Update User request");
User response = userServiceClient.updateUser(request);
System.out.println("Updated User Name below");
System.out.println(response.getName());
} catch (Exception e) {
System.out.println(e);
}
}
public static void main(String[] args) throws Exception {
Config config = Config.load();
String email = "testUser@gmail.com";
// Give the user admin rights. Note that all other rights, like
// PERFORMANCE_REPORTING, would be overwritten in this example
// if the user had those access rights before the update.
AccessRight accessRight = AccessRight.ADMIN;
updateUser(config, email, accessRight);
}
}
PHP
use Google\ApiCore\ApiException;
use Google\Protobuf\FieldMask;
use Google\Shopping\Merchant\Accounts\V1\AccessRight;
use Google\Shopping\Merchant\Accounts\V1\UpdateUserRequest;
use Google\Shopping\Merchant\Accounts\V1\User;
use Google\Shopping\Merchant\Accounts\V1\Client\UserServiceClient;
/**
* Updates a user.
*
* @param array $config The configuration data.
* @param string $email The email address of the user.
* @param int $accessRight The access right to grant the user.
* @return void
*/
function updateUser($config, $email, $accessRights): void
{
// Gets the OAuth credentials to make the request.
$credentials = Authentication::useServiceAccountOrTokenFile();
// Creates options config containing credentials for the client to use.
$options = ['credentials' => $credentials];
// Creates a client.
$userServiceClient = new UserServiceClient($options);
// Creates user name to identify user.
$name = 'accounts/' . $config['accountId'] . "/users/" . $email;
$user = (new User())
->setName($name)
->setAccessRights($accessRights);
$fieldMask = (new FieldMask())->setPaths(['access_rights']);
// Calls the API and catches and prints any network failures/errors.
try {
$request = new UpdateUserRequest([
'user' => $user,
'update_mask' => $fieldMask,
]);
print "Sending Update User request\n";
$response = $userServiceClient->updateUser($request);
print "Updated User Name below\n";
print $response->getName() . "\n";
} catch (ApiException $e) {
print $e->getMessage();
}
}
$config = Config::generateConfig();
$email = "testUser@gmail.com";
$accessRights = [AccessRight::ADMIN];
updateUser($config, $email, $accessRights);
cURL
curl -X PATCH \
"https://merchantapi.googleapis.com/accounts/v1/{ACCOUNT_ID}/users/{USER_EMAIL}?update_mask=access_rights" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {ACCESS_TOKEN}" \
-d '{
"access_rights": [
"ADMIN",
"API_DEVELOPER"
]
}'
Agrega más contactos del desarrollador
Para evitar interrupciones en el negocio si el contacto principal del desarrollador se va o pierde
el acceso, es fundamental tener contactos redundantes. Te recomendamos que tengas, al menos,
un usuario adicional con el rol de API developer en Merchant Center para
que sirva de respaldo.
Puedes agregar un usuario o actualizar uno existente con el servicio accounts.users en la API de Merchant o en la página Acceso y servicios de la IU de Merchant Center. Si agregas desarrolladores de respaldo de forma proactiva, creas una integración más resiliente que no depende de una sola persona.
PATCH https://merchantapi.googleapis.com/products/v1/accounts/{ACCOUNT_ID}/users
Content-Type: application/json
Authorization: Bearer {ACCESS_TOKEN}"
{
"user_id": {USER_EMAIL},
"user": { "access_rights": [ "API_DEVELOPER", "ADMIN" ] }
}
Python
from examples.authentication import configuration
from examples.authentication import generate_user_credentials
from google.shopping.merchant_accounts_v1 import AccessRight
from google.shopping.merchant_accounts_v1 import CreateUserRequest
from google.shopping.merchant_accounts_v1 import User
from google.shopping.merchant_accounts_v1 import UserServiceClient
_ACCOUNT = configuration.Configuration().read_merchant_info()
def get_parent(account_id):
return f"accounts/{account_id}"
def create_user(user_email):
"""Creates a user for a Merchant Center account."""
# Get OAuth credentials
credentials = generate_user_credentials.main()
# Create a UserServiceClient
client = UserServiceClient(credentials=credentials)
# Create parent string
parent = get_parent(_ACCOUNT)
# Create the request
request = CreateUserRequest(
parent=parent,
user_id=user_email,
user=User(
access_rights=[AccessRight.ADMIN, AccessRight.PERFORMANCE_REPORTING]
),
)
try:
print("Sending Create User request")
response = client.create_user(request=request)
print("Inserted User Name below")
print(response.name)
except RuntimeError as e:
print(e)
if __name__ == "__main__":
# Modify this email to create a new user
email = "USER_MAIL_ACCOUNT"
create_user(email)
Java
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.accounts.v1.AccessRight;
import com.google.shopping.merchant.accounts.v1.CreateUserRequest;
import com.google.shopping.merchant.accounts.v1.User;
import com.google.shopping.merchant.accounts.v1.UserServiceClient;
import com.google.shopping.merchant.accounts.v1.UserServiceSettings;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;
/** This class demonstrates how to create a user for a Merchant Center account. */
public class CreateUserSample {
private static String getParent(String accountId) {
return String.format("accounts/%s", accountId);
}
public static void createUser(Config config, String email) throws Exception {
// Obtains OAuth token based on the user's configuration.
GoogleCredentials credential = new Authenticator().authenticate();
// Creates service settings using the credentials retrieved above.
UserServiceSettings userServiceSettings =
UserServiceSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(credential))
.build();
// Creates parent to identify where to insert the user.
String parent = getParent(config.getAccountId().toString());
// Calls the API and catches and prints any network failures/errors.
try (UserServiceClient userServiceClient = UserServiceClient.create(userServiceSettings)) {
CreateUserRequest request =
CreateUserRequest.newBuilder()
.setParent(parent)
// This field is the email address of the user.
.setUserId(email)
.setUser(
User.newBuilder()
.addAccessRights(AccessRight.ADMIN)
.addAccessRights(AccessRight.PERFORMANCE_REPORTING)
.build())
.build();
System.out.println("Sending Create User request");
User response = userServiceClient.createUser(request);
System.out.println("Inserted User Name below");
// The last part of the user name will be the email address of the user.
// Format: `accounts/{account}/user/{user}`
System.out.println(response.getName());
} catch (Exception e) {
System.out.println(e);
}
}
public static void main(String[] args) throws Exception {
Config config = Config.load();
// The email address of this user.
String email = "testUser@gmail.com";
createUser(config, email);
}
}
PHP
use Google\ApiCore\ApiException;
use Google\Shopping\Merchant\Accounts\V1\AccessRight;
use Google\Shopping\Merchant\Accounts\V1\CreateUserRequest;
use Google\Shopping\Merchant\Accounts\V1\User;
use Google\Shopping\Merchant\Accounts\V1\Client\UserServiceClient;
/**
* Creates a user.
*
* @param array $config The configuration data.
* @param string $email The email address of the user.
* @return void
*/
function createUser($config, $email): void
{
// Gets the OAuth credentials to make the request.
$credentials = Authentication::useServiceAccountOrTokenFile();
// Creates options config containing credentials for the client to use.
$options = ['credentials' => $credentials];
// Creates a client.
$userServiceClient = new UserServiceClient($options);
// Creates parent to identify where to insert the user.
$parent = sprintf("accounts/%s", $config['accountId']);
// Calls the API and catches and prints any network failures/errors.
try {
$request = new CreateUserRequest([
'parent' => $parent,
'user_id' => $email,
'user' => (new User())
->setAccessRights([AccessRight::ADMIN,AccessRight::PERFORMANCE_REPORTING])
]);
print "Sending Create User request\n";
$response = $userServiceClient->createUser($request);
print "Inserted User Name below\n";
print $response->getName() . "\n";
} catch (ApiException $e) {
print $e->getMessage();
}
}
$config = Config::generateConfig();
$email = "testUser@gmail.com";
createUser($config, $email);
cURL
curl -X PATCH \
"https://merchantapi.googleapis.com/products/v1/accounts/{ACCOUNT_ID}/users/{USER_EMAIL}?update_mask=access_rights" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {ACCESS_TOKEN}" \
-d '{
"access_rights": [
"ADMIN",
"API_DEVELOPER"
]
}'