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 removed 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/v2/{product=projects/*/locations/*/catalogs/*/branches/*/products/**}:removeFulfillmentPlaces
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 removed for this type.
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.
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.removeFulfillmentPlaces\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.RemoveLocalInventories](/retail/docs/reference/rest/v2/projects.locations.catalogs.branches.products/removeLocalInventories#google.cloud.retail.v2.ProductService.RemoveLocalInventories) method instead of the [ProductService.RemoveFulfillmentPlaces](/retail/docs/reference/rest/v2/projects.locations.catalogs.branches.products/removeFulfillmentPlaces#google.cloud.retail.v2.ProductService.RemoveFulfillmentPlaces) method. [ProductService.RemoveLocalInventories](/retail/docs/reference/rest/v2/projects.locations.catalogs.branches.products/removeLocalInventories#google.cloud.retail.v2.ProductService.RemoveLocalInventories) achieves the same results but provides more fine-grained control over ingesting local inventory data.\n\nIncrementally removes place IDs from a [Product.fulfillment_info.place_ids](/retail/docs/reference/rest/v2/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/v2/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 removed place IDs are not immediately manifested in the [Product](/retail/docs/reference/rest/v2/projects.locations.catalogs.branches.products#Product) queried by [ProductService.GetProduct](/retail/docs/reference/rest/v2/projects.locations.catalogs.branches.products/get#google.cloud.retail.v2.ProductService.GetProduct) or [ProductService.ListProducts](/retail/docs/reference/rest/v2/projects.locations.catalogs.branches.products/list#google.cloud.retail.v2.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/v2/{product=projects/*/locations/*/catalogs/*/branches/*/products/**}:removeFulfillmentPlaces`\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)."]]