Migrate user and access management
Stay organized with collections
Save and categorize content based on your preferences.
In Content API for Shopping, you managed users and their access rights with a
field in the Account
resource. Merchant API replaces this with the dedicated
resource named
User
and
corresponding methods (create, delete, get, list, path). For more information,
see Control access to your
account.
Key differences
Compared to Content API for Shopping, Merchant API offers the following
advantages for user management:
- Dedicated resource: This provides a more granular and direct way to
control who can access your Merchant Center account and what they can do.
- RESTful resource names: In Merchant API, identify
User
resources by a
full resource name, for example, accounts/12345/users/example@example.com
.
me
alias: You can use the alias me
in place of an email address in
the resource name to refer to the authenticated user, for example,
accounts/12345/users/me
.
- Consolidated access rights: Merchant API consolidates boolean access
fields from Content API (for example,
admin
, reportingManager
) into a
single, repeatableaccess_rights
field.
- User invitation and verification: Merchant API introduces an
explicit user state (
PENDING
or VERIFIED
). When you create a new user,
they are in a PENDING
state until they accept the invitation. This
provides API visibility into the user's status, which was not available in
the Content API for Shopping.
Add
## Requests
Merchant API uses the following request URLs to manage users:
GET /accounts/v1/accounts/{account}/users/{email}
GET /accounts/v1/accounts/{account}/users
POST /accounts/v1/accounts/{account}/users
PATCH /accounts/v1/accounts/{account}/users/{email}
DELETE /accounts/v1/accounts/{account}/users/{email}
The following table compares the request URLs between the Content API for
Shopping and Merchant API.
Request description |
Content API for Shopping |
Merchant API |
Get users for an account |
GET {api_version}/{merchantId}/accounts/{accountId} |
GET {api_version}/accounts/{account}/users |
Create a user |
PATCH {api_version}/{merchantId}/accounts/{accountId} |
POST {api_version}/accounts/{account}/users |
Update a user |
PATCH {api_version}/{merchantId}/accounts/{accountId} |
PATCH {api_version}/accounts/{account}/users/{email} |
Delete a user |
PATCH {api_version}/{merchantId}/accounts/{accountId} |
DELETE {api_version}/accounts/{account}/users/{email} |
Identifiers
The following table compares the identifiers used in requests between the
Content API for Shopping and Merchant API.
Identifier description |
Content API for Shopping |
Merchant API |
Account identifier |
accountId |
account in accounts/{account} |
User identifier |
email_address within the AccountUser object |
email in accounts/{account}/users/{email} |
Methods
The following table compares the methods between the Content API for Shopping
and Merchant API.
Content API for Shopping |
Merchant API |
Availability & notes |
accounts.update |
users.create |
Creates a new user for an account. |
accounts.get |
users.get |
Retrieves a single user. |
accounts.get |
users.list |
Lists all users for an account. |
accounts.update |
users.update |
Updates a user's access rights. |
accounts.update |
users.delete |
Deletes a user from an account. |
Detailed field changes
Update your use of fields as follows:
Content API for Shopping |
Merchant API |
Description |
users (repeated AccountUser ) |
users (repeated User ) |
The User resource is now a top-level resource with its own service. |
AccountUser.email_address |
CreateUserRequest.user_id and part of User.name |
The user's email address is now part of the resource name. Specify it in the user_id field during creation. |
AccountUser.admin |
access_rights: "ADMIN" |
Merchant API replaces the boolean admin field by the ADMIN value in the access_rights enum. |
AccountUser.order_manager , AccountUser.payments_manager , AccountUser.payments_analyst |
access_rights: "STANDARD" |
Merchant API replaces these roles to STANDARD access right. |
AccountUser.reporting_manager |
access_rights: "PERFORMANCE_REPORTING" |
The reporting_manager role is now the PERFORMANCE_REPORTING access right. |
AccountUser.read_only |
access_rights: "READ_ONLY" |
The read_only role is now the READ_ONLY access right. |
Not available |
User.name |
Contains the full resource name of the user, for example, accounts/{account}/users/{email} . |
Not available |
User.state |
Indicates the status of the user's invitation, either PENDING or VERIFIED . |
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2025-08-07 UTC.
[null,null,["Last updated 2025-08-07 UTC."],[],[],null,["# Migrate user and access management\n\nIn Content API for Shopping, you managed users and their access rights with a\nfield in the `Account` resource. Merchant API replaces this with the dedicated\nresource named\n[`User`](/merchant/api/reference/rest/accounts_v1/accounts.users) and\ncorresponding methods (create, delete, get, list, path). For more information,\nsee [Control access to your\naccount](/merchant/api/guides/accounts/control-access).\n\nKey differences\n---------------\n\nCompared to Content API for Shopping, Merchant API offers the following\nadvantages for user management:\n\n- **Dedicated resource**: This provides a more granular and direct way to control who can access your Merchant Center account and what they can do.\n- **RESTful resource names** : In Merchant API, identify `User` resources by a full resource name, for example, `accounts/12345/users/example@example.com`.\n- **`me` alias** : You can use the alias `me` in place of an email address in the resource name to refer to the authenticated user, for example, `accounts/12345/users/me`.\n- **Consolidated access rights** : Merchant API consolidates boolean access fields from Content API (for example, `admin`, `reportingManager`) into a single, repeatable`access_rights` field.\n- **User invitation and verification** : Merchant API introduces an explicit user state (`PENDING` or `VERIFIED`). When you create a new user, they are in a `PENDING` state until they accept the invitation. This provides API visibility into the user's status, which was not available in the Content API for Shopping. Add ## Requests\n\nMerchant API uses the following request URLs to manage users:\n\n- `GET /accounts/v1/accounts/{account}/users/{email}`\n- `GET /accounts/v1/accounts/{account}/users`\n- `POST /accounts/v1/accounts/{account}/users`\n- `PATCH /accounts/v1/accounts/{account}/users/{email}`\n- `DELETE /accounts/v1/accounts/{account}/users/{email}`\n\nThe following table compares the request URLs between the Content API for\nShopping and Merchant API.\n\n| Request description | Content API for Shopping | Merchant API |\n|--------------------------|---------------------------------------------------------|---------------------------------------------------------|\n| Get users for an account | `GET {api_version}/{merchantId}/accounts/{accountId}` | `GET {api_version}/accounts/{account}/users` |\n| Create a user | `PATCH {api_version}/{merchantId}/accounts/{accountId}` | `POST {api_version}/accounts/{account}/users` |\n| Update a user | `PATCH {api_version}/{merchantId}/accounts/{accountId}` | `PATCH {api_version}/accounts/{account}/users/{email}` |\n| Delete a user | `PATCH {api_version}/{merchantId}/accounts/{accountId}` | `DELETE {api_version}/accounts/{account}/users/{email}` |\n\nIdentifiers\n-----------\n\nThe following table compares the identifiers used in requests between the\nContent API for Shopping and Merchant API.\n\n| Identifier description | Content API for Shopping | Merchant API |\n|------------------------|-------------------------------------------------|-----------------------------------------------|\n| Account identifier | `accountId` | `account` in `accounts/{account}` |\n| User identifier | `email_address` within the `AccountUser` object | `email` in `accounts/{account}/users/{email}` |\n\nMethods\n-------\n\nThe following table compares the methods between the Content API for Shopping\nand Merchant API.\n\n| Content API for Shopping | Merchant API | Availability \\& notes |\n|--------------------------|----------------------------------------------------------------------------------|------------------------------------|\n| `accounts.update` | [`users.create`](/merchant/api/reference/rest/accounts_v1/accounts.users/create) | Creates a new user for an account. |\n| `accounts.get` | [`users.get`](/merchant/api/reference/rest/accounts_v1/accounts.users/get) | Retrieves a single user. |\n| `accounts.get` | [`users.list`](/merchant/api/reference/rest/accounts_v1/accounts.users/list) | Lists all users for an account. |\n| `accounts.update` | [`users.update`](/merchant/api/reference/rest/accounts_v1/accounts.users/update) | Updates a user's access rights. |\n| `accounts.update` | [`users.delete`](/merchant/api/reference/rest/accounts_v1/accounts.users/delete) | Deletes a user from an account. |\n\nDetailed field changes\n----------------------\n\nUpdate your use of fields as follows:\n\n| Content API for Shopping | Merchant API | Description |\n|---------------------------------------------------------------------------------------------|-----------------------------------------------------|---------------------------------------------------------------------------------------------------------------|\n| `users` (repeated `AccountUser`) | `users` (repeated `User`) | The `User` resource is now a top-level resource with its own service. |\n| `AccountUser.email_address` | `CreateUserRequest.user_id` and part of `User.name` | The user's email address is now part of the resource name. Specify it in the `user_id` field during creation. |\n| `AccountUser.admin` | `access_rights: \"ADMIN\"` | Merchant API replaces the boolean `admin` field by the `ADMIN` value in the `access_rights` enum. |\n| `AccountUser.order_manager`, `AccountUser.payments_manager`, `AccountUser.payments_analyst` | `access_rights: \"STANDARD\"` | Merchant API replaces these roles to `STANDARD` access right. |\n| `AccountUser.reporting_manager` | `access_rights: \"PERFORMANCE_REPORTING\"` | The `reporting_manager` role is now the `PERFORMANCE_REPORTING` access right. |\n| `AccountUser.read_only` | `access_rights: \"READ_ONLY\"` | The `read_only` role is now the `READ_ONLY` access right. |\n| Not available | `User.name` | Contains the full resource name of the user, for example, `accounts/{account}/users/{email}`. |\n| Not available | `User.state` | Indicates the status of the user's invitation, either `PENDING` or `VERIFIED`. |"]]