This process is asynchronous and does not require the Product to exist before updating fulfillment information. If the request is valid, the update will be enqueued and processed downstream. As a consequence, when a response is returned, the added place IDs are not immediately manifested in the Product queried by ProductService.GetProduct or ProductService.ListProducts.
The returned Operations will be obsolete after 1 day, and operations.get API will return NOT_FOUND afterwards.
If conflicting updates are issued, the Operations associated with the stale updates will not be marked as done until being obsolete.
HTTP request
POST https://retail.googleapis.com/v2alpha/{product=projects/*/locations/*/catalogs/*/branches/*/products/**}:addFulfillmentPlaces
Required. Full resource name of Product, such as projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/some_product_id.
If the caller does not have permission to access the Product, regardless of whether or not it exists, a PERMISSION_DENIED error is returned.
Request body
The request body contains data with the following structure:
Required. The IDs for this type, such as the store IDs for "pickup-in-store" or the region IDs for "same-day-delivery" to be added for this type. Duplicate IDs will be automatically ignored.
At least 1 value is required, and a maximum of 2000 values are allowed. Each value must be a string with a length limit of 10 characters, matching the pattern [a-zA-Z0-9_-]+, such as "store1" or "REGION-2". Otherwise, an INVALID_ARGUMENT error is returned.
If the total number of place IDs exceeds 2000 for this type after adding, then the update will be rejected.
The time when the fulfillment updates are issued, used to prevent out-of-order updates on fulfillment information. If not provided, the internal system time will be used.
Uses RFC 3339, where generated output will always be Z-normalized and uses 0, 3, 6 or 9 fractional digits. Offsets other than "Z" are also accepted. Examples: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" or "2014-10-02T15:01:23+05:30".
allowMissing
boolean
If set to true, and the Product is not found, the fulfillment information will still be processed and retained for at most 1 day and processed once the Product is created. If set to false, a NOT_FOUND error is returned if the Product is not found.
Response body
If successful, the response body contains an instance of Operation.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-06-27 UTC."],[],[],null,["# Method: projects.locations.catalogs.branches.products.addFulfillmentPlaces\n\n- [HTTP request](#body.HTTP_TEMPLATE)\n- [Path parameters](#body.PATH_PARAMETERS)\n- [Request body](#body.request_body)\n - [JSON representation](#body.request_body.SCHEMA_REPRESENTATION)\n- [Response body](#body.response_body)\n- [Authorization scopes](#body.aspect)\n- [IAM Permissions](#body.aspect_1)\n- [Try it!](#try-it)\n\nWe recommend that you use the [ProductService.AddLocalInventories](/retail/docs/reference/rest/v2alpha/projects.locations.catalogs.branches.products/addLocalInventories#google.cloud.retail.v2alpha.ProductService.AddLocalInventories) method instead of the [ProductService.AddFulfillmentPlaces](/retail/docs/reference/rest/v2alpha/projects.locations.catalogs.branches.products/addFulfillmentPlaces#google.cloud.retail.v2alpha.ProductService.AddFulfillmentPlaces) method. [ProductService.AddLocalInventories](/retail/docs/reference/rest/v2alpha/projects.locations.catalogs.branches.products/addLocalInventories#google.cloud.retail.v2alpha.ProductService.AddLocalInventories) achieves the same results but provides more fine-grained control over ingesting local inventory data.\n\nIncrementally adds place IDs to [Product.fulfillment_info.place_ids](/retail/docs/reference/rest/v2alpha/projects.locations.catalogs.branches.products#Product.FulfillmentInfo.FIELDS.place_ids).\n\nThis process is asynchronous and does not require the [Product](/retail/docs/reference/rest/v2alpha/projects.locations.catalogs.branches.products#Product) to exist before updating fulfillment information. If the request is valid, the update will be enqueued and processed downstream. As a consequence, when a response is returned, the added place IDs are not immediately manifested in the [Product](/retail/docs/reference/rest/v2alpha/projects.locations.catalogs.branches.products#Product) queried by [ProductService.GetProduct](/retail/docs/reference/rest/v2alpha/projects.locations.catalogs.branches.products/get#google.cloud.retail.v2alpha.ProductService.GetProduct) or [ProductService.ListProducts](/retail/docs/reference/rest/v2alpha/projects.locations.catalogs.branches.products/list#google.cloud.retail.v2alpha.ProductService.ListProducts).\n\nThe returned [Operation](/retail/docs/reference/rest/Shared.Types/ListOperationsResponse#Operation)s will be obsolete after 1 day, and [operations.get](/retail/docs/reference/rest/v2/projects.locations.operations/get#google.longrunning.Operations.GetOperation) API will return NOT_FOUND afterwards.\n\nIf conflicting updates are issued, the [Operation](/retail/docs/reference/rest/Shared.Types/ListOperationsResponse#Operation)s associated with the stale updates will not be marked as [done](/retail/docs/reference/rest/Shared.Types/ListOperationsResponse#Operation.FIELDS.done) until being obsolete.\n\n### HTTP request\n\n`POST https://retail.googleapis.com/v2alpha/{product=projects/*/locations/*/catalogs/*/branches/*/products/**}:addFulfillmentPlaces`\n\nThe URL uses [gRPC Transcoding](https://google.aip.dev/127) syntax.\n\n### Path parameters\n\n### Request body\n\nThe request body contains data with the following structure:\n\n### Response body\n\nIf successful, the response body contains an instance of [Operation](/retail/docs/reference/rest/Shared.Types/ListOperationsResponse#Operation).\n\n### Authorization scopes\n\nRequires the following OAuth scope:\n\n- `https://www.googleapis.com/auth/cloud-platform`\n\nFor more information, see the [Authentication Overview](/docs/authentication#authorization-gcp).\n\n### IAM Permissions\n\nRequires the following [IAM](https://cloud.google.com/iam/docs) permission on the `product` resource:\n\n- `retail.products.update`\n\nFor more information, see the [IAM documentation](https://cloud.google.com/iam/docs)."]]