google-cloud-retail-v2 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/AUTHENTICATION.md +8 -8
  3. data/LICENSE.md +188 -190
  4. data/README.md +3 -3
  5. data/lib/google/cloud/retail/v2.rb +2 -0
  6. data/lib/google/cloud/retail/v2/catalog_pb.rb +2 -0
  7. data/lib/google/cloud/retail/v2/catalog_service/client.rb +211 -15
  8. data/lib/google/cloud/retail/v2/catalog_service/paths.rb +21 -0
  9. data/lib/google/cloud/retail/v2/catalog_service_pb.rb +16 -0
  10. data/lib/google/cloud/retail/v2/catalog_service_services_pb.rb +46 -0
  11. data/lib/google/cloud/retail/v2/common_pb.rb +46 -0
  12. data/lib/google/cloud/retail/v2/completion_service.rb +54 -0
  13. data/lib/google/cloud/retail/v2/completion_service/client.rb +546 -0
  14. data/lib/google/cloud/retail/v2/completion_service/credentials.rb +51 -0
  15. data/lib/google/cloud/retail/v2/completion_service/operations.rb +655 -0
  16. data/lib/google/cloud/retail/v2/completion_service/paths.rb +52 -0
  17. data/lib/google/cloud/retail/v2/completion_service_pb.rb +50 -0
  18. data/lib/google/cloud/retail/v2/completion_service_services_pb.rb +61 -0
  19. data/lib/google/cloud/retail/v2/import_config_pb.rb +32 -0
  20. data/lib/google/cloud/retail/v2/prediction_service/client.rb +41 -43
  21. data/lib/google/cloud/retail/v2/product_pb.rb +21 -0
  22. data/lib/google/cloud/retail/v2/product_service/client.rb +643 -18
  23. data/lib/google/cloud/retail/v2/product_service/operations.rb +11 -11
  24. data/lib/google/cloud/retail/v2/product_service_pb.rb +56 -0
  25. data/lib/google/cloud/retail/v2/product_service_services_pb.rb +75 -0
  26. data/lib/google/cloud/retail/v2/search_service.rb +53 -0
  27. data/lib/google/cloud/retail/v2/search_service/client.rb +541 -0
  28. data/lib/google/cloud/retail/v2/search_service/credentials.rb +51 -0
  29. data/lib/google/cloud/retail/v2/search_service/paths.rb +54 -0
  30. data/lib/google/cloud/retail/v2/search_service_pb.rb +131 -0
  31. data/lib/google/cloud/retail/v2/search_service_services_pb.rb +53 -0
  32. data/lib/google/cloud/retail/v2/user_event_pb.rb +11 -0
  33. data/lib/google/cloud/retail/v2/user_event_service/client.rb +12 -15
  34. data/lib/google/cloud/retail/v2/user_event_service/operations.rb +11 -11
  35. data/lib/google/cloud/retail/v2/user_event_service/paths.rb +19 -0
  36. data/lib/google/cloud/retail/v2/version.rb +1 -1
  37. data/proto_docs/google/api/field_behavior.rb +7 -1
  38. data/proto_docs/google/api/httpbody.rb +4 -3
  39. data/proto_docs/google/cloud/retail/v2/catalog.rb +6 -6
  40. data/proto_docs/google/cloud/retail/v2/catalog_service.rb +53 -4
  41. data/proto_docs/google/cloud/retail/v2/common.rb +272 -4
  42. data/proto_docs/google/cloud/retail/v2/completion_service.rb +162 -0
  43. data/proto_docs/google/cloud/retail/v2/import_config.rb +122 -6
  44. data/proto_docs/google/cloud/retail/v2/prediction_service.rb +32 -31
  45. data/proto_docs/google/cloud/retail/v2/product.rb +266 -10
  46. data/proto_docs/google/cloud/retail/v2/product_service.rb +362 -2
  47. data/proto_docs/google/cloud/retail/v2/purge_config.rb +1 -1
  48. data/proto_docs/google/cloud/retail/v2/search_service.rb +820 -0
  49. data/proto_docs/google/cloud/retail/v2/user_event.rb +95 -3
  50. data/proto_docs/google/type/date.rb +53 -0
  51. metadata +32 -10
@@ -61,17 +61,14 @@ module Google
61
61
  parent_config = while namespace.any?
62
62
  parent_name = namespace.join "::"
63
63
  parent_const = const_get parent_name
64
- break parent_const.configure if parent_const&.respond_to? :configure
64
+ break parent_const.configure if parent_const.respond_to? :configure
65
65
  namespace.pop
66
66
  end
67
67
  default_config = Client::Configuration.new parent_config
68
68
 
69
69
  default_config.timeout = 60.0
70
70
  default_config.retry_policy = {
71
- initial_delay: 0.1,
72
- max_delay: 60.0,
73
- multiplier: 1.3,
74
- retry_codes: [14, 4]
71
+ initial_delay: 0.1, max_delay: 60.0, multiplier: 1.3, retry_codes: [14, 4]
75
72
  }
76
73
 
77
74
  default_config
@@ -140,9 +137,9 @@ module Google
140
137
  enable_self_signed_jwt = @config.scope == Client.configure.scope &&
141
138
  @config.endpoint == Client.configure.endpoint &&
142
139
  !@config.endpoint.split(".").first.include?("-")
143
- credentials ||= Credentials.default scope: @config.scope,
140
+ credentials ||= Credentials.default scope: @config.scope,
144
141
  enable_self_signed_jwt: enable_self_signed_jwt
145
- if credentials.is_a?(String) || credentials.is_a?(Hash)
142
+ if credentials.is_a?(::String) || credentials.is_a?(::Hash)
146
143
  credentials = Credentials.new credentials, scope: @config.scope
147
144
  end
148
145
  @quota_project_id = @config.quota_project
@@ -331,6 +328,144 @@ module Google
331
328
  raise ::Google::Cloud::Error.from_error(e)
332
329
  end
333
330
 
331
+ ##
332
+ # Gets a list of {::Google::Cloud::Retail::V2::Product Product}s.
333
+ #
334
+ # @overload list_products(request, options = nil)
335
+ # Pass arguments to `list_products` via a request object, either of type
336
+ # {::Google::Cloud::Retail::V2::ListProductsRequest} or an equivalent Hash.
337
+ #
338
+ # @param request [::Google::Cloud::Retail::V2::ListProductsRequest, ::Hash]
339
+ # A request object representing the call parameters. Required. To specify no
340
+ # parameters, or to keep all the default parameter values, pass an empty Hash.
341
+ # @param options [::Gapic::CallOptions, ::Hash]
342
+ # Overrides the default settings for this call, e.g, timeout, retries, etc. Optional.
343
+ #
344
+ # @overload list_products(parent: nil, page_size: nil, page_token: nil, filter: nil, read_mask: nil)
345
+ # Pass arguments to `list_products` via keyword arguments. Note that at
346
+ # least one keyword argument is required. To specify no parameters, or to keep all
347
+ # the default parameter values, pass an empty Hash as a request object (see above).
348
+ #
349
+ # @param parent [::String]
350
+ # Required. The parent branch resource name, such as
351
+ # `projects/*/locations/global/catalogs/default_catalog/branches/0`. Use
352
+ # `default_branch` as the branch ID, to list products under the default
353
+ # branch.
354
+ #
355
+ # If the caller does not have permission to list
356
+ # {::Google::Cloud::Retail::V2::Product Product}s under this branch, regardless of
357
+ # whether or not this branch exists, a PERMISSION_DENIED error is returned.
358
+ # @param page_size [::Integer]
359
+ # Maximum number of {::Google::Cloud::Retail::V2::Product Product}s to return. If
360
+ # unspecified, defaults to 100. The maximum allowed value is 1000. Values
361
+ # above 1000 will be coerced to 1000.
362
+ #
363
+ # If this field is negative, an INVALID_ARGUMENT error is returned.
364
+ # @param page_token [::String]
365
+ # A page token
366
+ # {::Google::Cloud::Retail::V2::ListProductsResponse#next_page_token ListProductsResponse.next_page_token},
367
+ # received from a previous
368
+ # {::Google::Cloud::Retail::V2::ProductService::Client#list_products ProductService.ListProducts}
369
+ # call. Provide this to retrieve the subsequent page.
370
+ #
371
+ # When paginating, all other parameters provided to
372
+ # {::Google::Cloud::Retail::V2::ProductService::Client#list_products ProductService.ListProducts}
373
+ # must match the call that provided the page token. Otherwise, an
374
+ # INVALID_ARGUMENT error is returned.
375
+ # @param filter [::String]
376
+ # A filter to apply on the list results. Supported features:
377
+ #
378
+ # * List all the products under the parent branch if
379
+ # {::Google::Cloud::Retail::V2::ListProductsRequest#filter filter} is unset.
380
+ # * List {::Google::Cloud::Retail::V2::Product::Type::VARIANT Product.Type.VARIANT}
381
+ # {::Google::Cloud::Retail::V2::Product Product}s sharing the same
382
+ # {::Google::Cloud::Retail::V2::Product::Type::PRIMARY Product.Type.PRIMARY}
383
+ # {::Google::Cloud::Retail::V2::Product Product}. For example:
384
+ # `primary_product_id = "some_product_id"`
385
+ # * List {::Google::Cloud::Retail::V2::Product Product}s bundled in a
386
+ # {::Google::Cloud::Retail::V2::Product::Type::COLLECTION Product.Type.COLLECTION}
387
+ # {::Google::Cloud::Retail::V2::Product Product}.
388
+ # For example:
389
+ # `collection_product_id = "some_product_id"`
390
+ # * List {::Google::Cloud::Retail::V2::Product Product}s with a partibular type.
391
+ # For example:
392
+ # `type = "PRIMARY"`
393
+ # `type = "VARIANT"`
394
+ # `type = "COLLECTION"`
395
+ #
396
+ # If the field is unrecognizable, an INVALID_ARGUMENT error is returned.
397
+ #
398
+ # If the specified
399
+ # {::Google::Cloud::Retail::V2::Product::Type::PRIMARY Product.Type.PRIMARY}
400
+ # {::Google::Cloud::Retail::V2::Product Product} or
401
+ # {::Google::Cloud::Retail::V2::Product::Type::COLLECTION Product.Type.COLLECTION}
402
+ # {::Google::Cloud::Retail::V2::Product Product} does not exist, a NOT_FOUND error
403
+ # is returned.
404
+ # @param read_mask [::Google::Protobuf::FieldMask, ::Hash]
405
+ # The fields of {::Google::Cloud::Retail::V2::Product Product} to return in the
406
+ # responses. If not set or empty, the following fields are returned:
407
+ #
408
+ # * {::Google::Cloud::Retail::V2::Product#name Product.name}
409
+ # * {::Google::Cloud::Retail::V2::Product#id Product.id}
410
+ # * {::Google::Cloud::Retail::V2::Product#title Product.title}
411
+ # * {::Google::Cloud::Retail::V2::Product#uri Product.uri}
412
+ # * {::Google::Cloud::Retail::V2::Product#images Product.images}
413
+ # * {::Google::Cloud::Retail::V2::Product#price_info Product.price_info}
414
+ # * {::Google::Cloud::Retail::V2::Product#brands Product.brands}
415
+ #
416
+ # If "*" is provided, all fields are returned.
417
+ # {::Google::Cloud::Retail::V2::Product#name Product.name} is always returned no
418
+ # matter what mask is set.
419
+ #
420
+ # If an unsupported or unknown field is provided, an INVALID_ARGUMENT error
421
+ # is returned.
422
+ #
423
+ # @yield [response, operation] Access the result along with the RPC operation
424
+ # @yieldparam response [::Gapic::PagedEnumerable<::Google::Cloud::Retail::V2::Product>]
425
+ # @yieldparam operation [::GRPC::ActiveCall::Operation]
426
+ #
427
+ # @return [::Gapic::PagedEnumerable<::Google::Cloud::Retail::V2::Product>]
428
+ #
429
+ # @raise [::Google::Cloud::Error] if the RPC is aborted.
430
+ #
431
+ def list_products request, options = nil
432
+ raise ::ArgumentError, "request must be provided" if request.nil?
433
+
434
+ request = ::Gapic::Protobuf.coerce request, to: ::Google::Cloud::Retail::V2::ListProductsRequest
435
+
436
+ # Converts hash and nil to an options object
437
+ options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h
438
+
439
+ # Customize the options with defaults
440
+ metadata = @config.rpcs.list_products.metadata.to_h
441
+
442
+ # Set x-goog-api-client and x-goog-user-project headers
443
+ metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \
444
+ lib_name: @config.lib_name, lib_version: @config.lib_version,
445
+ gapic_version: ::Google::Cloud::Retail::V2::VERSION
446
+ metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id
447
+
448
+ header_params = {
449
+ "parent" => request.parent
450
+ }
451
+ request_params_header = header_params.map { |k, v| "#{k}=#{v}" }.join("&")
452
+ metadata[:"x-goog-request-params"] ||= request_params_header
453
+
454
+ options.apply_defaults timeout: @config.rpcs.list_products.timeout,
455
+ metadata: metadata,
456
+ retry_policy: @config.rpcs.list_products.retry_policy
457
+ options.apply_defaults metadata: @config.metadata,
458
+ retry_policy: @config.retry_policy
459
+
460
+ @product_service_stub.call_rpc :list_products, request, options: options do |response, operation|
461
+ response = ::Gapic::PagedEnumerable.new @product_service_stub, :list_products, request, response, operation, options
462
+ yield response, operation if block_given?
463
+ return response
464
+ end
465
+ rescue ::GRPC::BadStatus => e
466
+ raise ::Google::Cloud::Error.from_error(e)
467
+ end
468
+
334
469
  ##
335
470
  # Updates a {::Google::Cloud::Retail::V2::Product Product}.
336
471
  #
@@ -344,7 +479,7 @@ module Google
344
479
  # @param options [::Gapic::CallOptions, ::Hash]
345
480
  # Overrides the default settings for this call, e.g, timeout, retries, etc. Optional.
346
481
  #
347
- # @overload update_product(product: nil, update_mask: nil)
482
+ # @overload update_product(product: nil, update_mask: nil, allow_missing: nil)
348
483
  # Pass arguments to `update_product` via keyword arguments. Note that at
349
484
  # least one keyword argument is required. To specify no parameters, or to keep all
350
485
  # the default parameter values, pass an empty Hash as a request object (see above).
@@ -356,8 +491,10 @@ module Google
356
491
  # {::Google::Cloud::Retail::V2::Product Product}, regardless of whether or not it
357
492
  # exists, a PERMISSION_DENIED error is returned.
358
493
  #
359
- # If the {::Google::Cloud::Retail::V2::Product Product} to update does not exist,
360
- # a NOT_FOUND error is returned.
494
+ # If the {::Google::Cloud::Retail::V2::Product Product} to update does not exist
495
+ # and
496
+ # {::Google::Cloud::Retail::V2::UpdateProductRequest#allow_missing allow_missing}
497
+ # is not set, a NOT_FOUND error is returned.
361
498
  # @param update_mask [::Google::Protobuf::FieldMask, ::Hash]
362
499
  # Indicates which fields in the provided
363
500
  # {::Google::Cloud::Retail::V2::Product Product} to update. The immutable and
@@ -366,6 +503,10 @@ module Google
366
503
  #
367
504
  # If an unsupported or unknown field is provided, an INVALID_ARGUMENT error
368
505
  # is returned.
506
+ # @param allow_missing [::Boolean]
507
+ # If set to true, and the {::Google::Cloud::Retail::V2::Product Product} is not
508
+ # found, a new {::Google::Cloud::Retail::V2::Product Product} will be created. In
509
+ # this situation, `update_mask` is ignored.
369
510
  #
370
511
  # @yield [response, operation] Access the result along with the RPC operation
371
512
  # @yieldparam response [::Google::Cloud::Retail::V2::Product]
@@ -442,6 +583,17 @@ module Google
442
583
  # If the {::Google::Cloud::Retail::V2::Product Product} to delete does not exist,
443
584
  # a NOT_FOUND error is returned.
444
585
  #
586
+ # The {::Google::Cloud::Retail::V2::Product Product} to delete can neither be a
587
+ # {::Google::Cloud::Retail::V2::Product::Type::COLLECTION Product.Type.COLLECTION}
588
+ # {::Google::Cloud::Retail::V2::Product Product} member nor a
589
+ # {::Google::Cloud::Retail::V2::Product::Type::PRIMARY Product.Type.PRIMARY}
590
+ # {::Google::Cloud::Retail::V2::Product Product} with more than one
591
+ # {::Google::Cloud::Retail::V2::Product::Type::VARIANT variants}. Otherwise, an
592
+ # INVALID_ARGUMENT error is returned.
593
+ #
594
+ # All inventory information for the named
595
+ # {::Google::Cloud::Retail::V2::Product Product} will be deleted.
596
+ #
445
597
  # @yield [response, operation] Access the result along with the RPC operation
446
598
  # @yieldparam response [::Google::Protobuf::Empty]
447
599
  # @yieldparam operation [::GRPC::ActiveCall::Operation]
@@ -506,7 +658,7 @@ module Google
506
658
  # @param options [::Gapic::CallOptions, ::Hash]
507
659
  # Overrides the default settings for this call, e.g, timeout, retries, etc. Optional.
508
660
  #
509
- # @overload import_products(parent: nil, input_config: nil, errors_config: nil, update_mask: nil)
661
+ # @overload import_products(parent: nil, request_id: nil, input_config: nil, errors_config: nil, update_mask: nil, reconciliation_mode: nil, notification_pubsub_topic: nil)
510
662
  # Pass arguments to `import_products` via keyword arguments. Note that at
511
663
  # least one keyword argument is required. To specify no parameters, or to keep all
512
664
  # the default parameter values, pass an empty Hash as a request object (see above).
@@ -517,6 +669,16 @@ module Google
517
669
  #
518
670
  # If no updateMask is specified, requires products.create permission.
519
671
  # If updateMask is specified, requires products.update permission.
672
+ # @param request_id [::String]
673
+ # Unique identifier provided by client, within the ancestor
674
+ # dataset scope. Ensures idempotency and used for request deduplication.
675
+ # Server-generated if unspecified. Up to 128 characters long and must match
676
+ # the pattern: "[a-zA-Z0-9_]+". This is returned as [Operation.name][] in
677
+ # {::Google::Cloud::Retail::V2::ImportMetadata ImportMetadata}.
678
+ #
679
+ # Only supported when
680
+ # {::Google::Cloud::Retail::V2::ImportProductsRequest#reconciliation_mode ImportProductsRequest.reconciliation_mode}
681
+ # is set to `FULL`.
520
682
  # @param input_config [::Google::Cloud::Retail::V2::ProductInputConfig, ::Hash]
521
683
  # Required. The desired input location of the data.
522
684
  # @param errors_config [::Google::Cloud::Retail::V2::ImportErrorsConfig, ::Hash]
@@ -524,6 +686,20 @@ module Google
524
686
  # @param update_mask [::Google::Protobuf::FieldMask, ::Hash]
525
687
  # Indicates which fields in the provided imported 'products' to update. If
526
688
  # not set, will by default update all fields.
689
+ # @param reconciliation_mode [::Google::Cloud::Retail::V2::ImportProductsRequest::ReconciliationMode]
690
+ # The mode of reconciliation between existing products and the products to be
691
+ # imported. Defaults to
692
+ # {::Google::Cloud::Retail::V2::ImportProductsRequest::ReconciliationMode::INCREMENTAL ReconciliationMode.INCREMENTAL}.
693
+ # @param notification_pubsub_topic [::String]
694
+ # Pub/Sub topic for receiving notification. If this field is set,
695
+ # when the import is finished, a notification will be sent to
696
+ # specified Pub/Sub topic. The message data will be JSON string of a
697
+ # {::Google::Longrunning::Operation Operation}.
698
+ # Format of the Pub/Sub topic is `projects/{project}/topics/{topic}`.
699
+ #
700
+ # Only supported when
701
+ # {::Google::Cloud::Retail::V2::ImportProductsRequest#reconciliation_mode ImportProductsRequest.reconciliation_mode}
702
+ # is set to `FULL`.
527
703
  #
528
704
  # @yield [response, operation] Access the result along with the RPC operation
529
705
  # @yieldparam response [::Gapic::Operation]
@@ -571,6 +747,427 @@ module Google
571
747
  raise ::Google::Cloud::Error.from_error(e)
572
748
  end
573
749
 
750
+ ##
751
+ # Updates inventory information for a
752
+ # {::Google::Cloud::Retail::V2::Product Product} while respecting the last update
753
+ # timestamps of each inventory field.
754
+ #
755
+ # This process is asynchronous and does not require the
756
+ # {::Google::Cloud::Retail::V2::Product Product} to exist before updating
757
+ # fulfillment information. If the request is valid, the update will be
758
+ # enqueued and processed downstream. As a consequence, when a response is
759
+ # returned, updates are not immediately manifested in the
760
+ # {::Google::Cloud::Retail::V2::Product Product} queried by
761
+ # {::Google::Cloud::Retail::V2::ProductService::Client#get_product GetProduct} or
762
+ # {::Google::Cloud::Retail::V2::ProductService::Client#list_products ListProducts}.
763
+ #
764
+ # When inventory is updated with
765
+ # {::Google::Cloud::Retail::V2::ProductService::Client#create_product CreateProduct} and
766
+ # {::Google::Cloud::Retail::V2::ProductService::Client#update_product UpdateProduct}, the
767
+ # specified inventory field value(s) will overwrite any existing value(s)
768
+ # while ignoring the last update time for this field. Furthermore, the last
769
+ # update time for the specified inventory fields will be overwritten to the
770
+ # time of the
771
+ # {::Google::Cloud::Retail::V2::ProductService::Client#create_product CreateProduct} or
772
+ # {::Google::Cloud::Retail::V2::ProductService::Client#update_product UpdateProduct}
773
+ # request.
774
+ #
775
+ # If no inventory fields are set in
776
+ # {::Google::Cloud::Retail::V2::CreateProductRequest#product CreateProductRequest.product},
777
+ # then any pre-existing inventory information for this product will be used.
778
+ #
779
+ # If no inventory fields are set in [UpdateProductRequest.set_mask][],
780
+ # then any existing inventory information will be preserved.
781
+ #
782
+ # Pre-existing inventory information can only be updated with
783
+ # {::Google::Cloud::Retail::V2::ProductService::Client#set_inventory SetInventory},
784
+ # {::Google::Cloud::Retail::V2::ProductService::Client#add_fulfillment_places AddFulfillmentPlaces},
785
+ # and
786
+ # {::Google::Cloud::Retail::V2::ProductService::Client#remove_fulfillment_places RemoveFulfillmentPlaces}.
787
+ #
788
+ # This feature is only available for users who have Retail Search enabled.
789
+ # Contact Retail Support (retail-search-support@google.com) if you are
790
+ # interested in using Retail Search.
791
+ #
792
+ # @overload set_inventory(request, options = nil)
793
+ # Pass arguments to `set_inventory` via a request object, either of type
794
+ # {::Google::Cloud::Retail::V2::SetInventoryRequest} or an equivalent Hash.
795
+ #
796
+ # @param request [::Google::Cloud::Retail::V2::SetInventoryRequest, ::Hash]
797
+ # A request object representing the call parameters. Required. To specify no
798
+ # parameters, or to keep all the default parameter values, pass an empty Hash.
799
+ # @param options [::Gapic::CallOptions, ::Hash]
800
+ # Overrides the default settings for this call, e.g, timeout, retries, etc. Optional.
801
+ #
802
+ # @overload set_inventory(inventory: nil, set_mask: nil, set_time: nil, allow_missing: nil)
803
+ # Pass arguments to `set_inventory` via keyword arguments. Note that at
804
+ # least one keyword argument is required. To specify no parameters, or to keep all
805
+ # the default parameter values, pass an empty Hash as a request object (see above).
806
+ #
807
+ # @param inventory [::Google::Cloud::Retail::V2::Product, ::Hash]
808
+ # Required. The inventory information to update. The allowable fields to
809
+ # update are:
810
+ # * {::Google::Cloud::Retail::V2::Product#price_info Product.price_info}
811
+ # * {::Google::Cloud::Retail::V2::Product#availability Product.availability}
812
+ # * {::Google::Cloud::Retail::V2::Product#available_quantity Product.available_quantity}
813
+ # * {::Google::Cloud::Retail::V2::Product#fulfillment_info Product.fulfillment_info}
814
+ # The updated inventory fields must be specified in
815
+ # {::Google::Cloud::Retail::V2::SetInventoryRequest#set_mask SetInventoryRequest.set_mask}.
816
+ #
817
+ # If [SetInventoryRequest.inventory.name][] is empty or invalid, an
818
+ # INVALID_ARGUMENT error is returned.
819
+ #
820
+ # If the caller does not have permission to update the
821
+ # {::Google::Cloud::Retail::V2::Product Product} named in
822
+ # {::Google::Cloud::Retail::V2::Product#name Product.name}, regardless of whether
823
+ # or not it exists, a PERMISSION_DENIED error is returned.
824
+ #
825
+ # If the {::Google::Cloud::Retail::V2::Product Product} to update does not have
826
+ # existing inventory information, the provided inventory information will be
827
+ # inserted.
828
+ #
829
+ # If the {::Google::Cloud::Retail::V2::Product Product} to update has existing
830
+ # inventory information, the provided inventory information will be merged
831
+ # while respecting the last update time for each inventory field, using the
832
+ # provided or default value for
833
+ # {::Google::Cloud::Retail::V2::SetInventoryRequest#set_time SetInventoryRequest.set_time}.
834
+ #
835
+ # The last update time is recorded for the following inventory fields:
836
+ # * {::Google::Cloud::Retail::V2::Product#price_info Product.price_info}
837
+ # * {::Google::Cloud::Retail::V2::Product#availability Product.availability}
838
+ # * {::Google::Cloud::Retail::V2::Product#available_quantity Product.available_quantity}
839
+ # * {::Google::Cloud::Retail::V2::Product#fulfillment_info Product.fulfillment_info}
840
+ #
841
+ # If a full overwrite of inventory information while ignoring timestamps is
842
+ # needed, [UpdateProduct][] should be invoked instead.
843
+ # @param set_mask [::Google::Protobuf::FieldMask, ::Hash]
844
+ # Indicates which inventory fields in the provided
845
+ # {::Google::Cloud::Retail::V2::Product Product} to update. If not set or set with
846
+ # empty paths, all inventory fields will be updated.
847
+ #
848
+ # If an unsupported or unknown field is provided, an INVALID_ARGUMENT error
849
+ # is returned and the entire update will be ignored.
850
+ # @param set_time [::Google::Protobuf::Timestamp, ::Hash]
851
+ # The time when the request is issued, used to prevent
852
+ # out-of-order updates on inventory fields with the last update time
853
+ # recorded. If not provided, the internal system time will be used.
854
+ # @param allow_missing [::Boolean]
855
+ # If set to true, and the {::Google::Cloud::Retail::V2::Product Product} with name
856
+ # {::Google::Cloud::Retail::V2::Product#name Product.name} is not found, the
857
+ # inventory update will still be processed and retained for at most 1 day
858
+ # until the {::Google::Cloud::Retail::V2::Product Product} is created. If set to
859
+ # false, an INVALID_ARGUMENT error is returned if the
860
+ # {::Google::Cloud::Retail::V2::Product Product} is not found.
861
+ #
862
+ # @yield [response, operation] Access the result along with the RPC operation
863
+ # @yieldparam response [::Gapic::Operation]
864
+ # @yieldparam operation [::GRPC::ActiveCall::Operation]
865
+ #
866
+ # @return [::Gapic::Operation]
867
+ #
868
+ # @raise [::Google::Cloud::Error] if the RPC is aborted.
869
+ #
870
+ def set_inventory request, options = nil
871
+ raise ::ArgumentError, "request must be provided" if request.nil?
872
+
873
+ request = ::Gapic::Protobuf.coerce request, to: ::Google::Cloud::Retail::V2::SetInventoryRequest
874
+
875
+ # Converts hash and nil to an options object
876
+ options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h
877
+
878
+ # Customize the options with defaults
879
+ metadata = @config.rpcs.set_inventory.metadata.to_h
880
+
881
+ # Set x-goog-api-client and x-goog-user-project headers
882
+ metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \
883
+ lib_name: @config.lib_name, lib_version: @config.lib_version,
884
+ gapic_version: ::Google::Cloud::Retail::V2::VERSION
885
+ metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id
886
+
887
+ header_params = {
888
+ "inventory.name" => request.inventory.name
889
+ }
890
+ request_params_header = header_params.map { |k, v| "#{k}=#{v}" }.join("&")
891
+ metadata[:"x-goog-request-params"] ||= request_params_header
892
+
893
+ options.apply_defaults timeout: @config.rpcs.set_inventory.timeout,
894
+ metadata: metadata,
895
+ retry_policy: @config.rpcs.set_inventory.retry_policy
896
+ options.apply_defaults metadata: @config.metadata,
897
+ retry_policy: @config.retry_policy
898
+
899
+ @product_service_stub.call_rpc :set_inventory, request, options: options do |response, operation|
900
+ response = ::Gapic::Operation.new response, @operations_client, options: options
901
+ yield response, operation if block_given?
902
+ return response
903
+ end
904
+ rescue ::GRPC::BadStatus => e
905
+ raise ::Google::Cloud::Error.from_error(e)
906
+ end
907
+
908
+ ##
909
+ # Incrementally adds place IDs to
910
+ # {::Google::Cloud::Retail::V2::FulfillmentInfo#place_ids Product.fulfillment_info.place_ids}.
911
+ #
912
+ # This process is asynchronous and does not require the
913
+ # {::Google::Cloud::Retail::V2::Product Product} to exist before updating
914
+ # fulfillment information. If the request is valid, the update will be
915
+ # enqueued and processed downstream. As a consequence, when a response is
916
+ # returned, the added place IDs are not immediately manifested in the
917
+ # {::Google::Cloud::Retail::V2::Product Product} queried by
918
+ # {::Google::Cloud::Retail::V2::ProductService::Client#get_product GetProduct} or
919
+ # {::Google::Cloud::Retail::V2::ProductService::Client#list_products ListProducts}.
920
+ #
921
+ # This feature is only available for users who have Retail Search enabled.
922
+ # Contact Retail Support (retail-search-support@google.com) if you are
923
+ # interested in using Retail Search.
924
+ #
925
+ # @overload add_fulfillment_places(request, options = nil)
926
+ # Pass arguments to `add_fulfillment_places` via a request object, either of type
927
+ # {::Google::Cloud::Retail::V2::AddFulfillmentPlacesRequest} or an equivalent Hash.
928
+ #
929
+ # @param request [::Google::Cloud::Retail::V2::AddFulfillmentPlacesRequest, ::Hash]
930
+ # A request object representing the call parameters. Required. To specify no
931
+ # parameters, or to keep all the default parameter values, pass an empty Hash.
932
+ # @param options [::Gapic::CallOptions, ::Hash]
933
+ # Overrides the default settings for this call, e.g, timeout, retries, etc. Optional.
934
+ #
935
+ # @overload add_fulfillment_places(product: nil, type: nil, place_ids: nil, add_time: nil, allow_missing: nil)
936
+ # Pass arguments to `add_fulfillment_places` via keyword arguments. Note that at
937
+ # least one keyword argument is required. To specify no parameters, or to keep all
938
+ # the default parameter values, pass an empty Hash as a request object (see above).
939
+ #
940
+ # @param product [::String]
941
+ # Required. Full resource name of {::Google::Cloud::Retail::V2::Product Product},
942
+ # such as
943
+ # `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/some_product_id`.
944
+ #
945
+ # If the caller does not have permission to access the
946
+ # {::Google::Cloud::Retail::V2::Product Product}, regardless of whether or not it
947
+ # exists, a PERMISSION_DENIED error is returned.
948
+ # @param type [::String]
949
+ # Required. The fulfillment type, including commonly used types (such as
950
+ # pickup in store and same day delivery), and custom types.
951
+ #
952
+ # Supported values:
953
+ #
954
+ # * "pickup-in-store"
955
+ # * "ship-to-store"
956
+ # * "same-day-delivery"
957
+ # * "next-day-delivery"
958
+ # * "custom-type-1"
959
+ # * "custom-type-2"
960
+ # * "custom-type-3"
961
+ # * "custom-type-4"
962
+ # * "custom-type-5"
963
+ #
964
+ # If this field is set to an invalid value other than these, an
965
+ # INVALID_ARGUMENT error is returned.
966
+ #
967
+ # This field directly corresponds to [Product.fulfillment_info.type][].
968
+ # @param place_ids [::Array<::String>]
969
+ # Required. The IDs for this
970
+ # {::Google::Cloud::Retail::V2::AddFulfillmentPlacesRequest#type type}, such as
971
+ # the store IDs for "pickup-in-store" or the region IDs for
972
+ # "same-day-delivery" to be added for this
973
+ # {::Google::Cloud::Retail::V2::AddFulfillmentPlacesRequest#type type}. Duplicate
974
+ # IDs will be automatically ignored.
975
+ #
976
+ # At least 1 value is required, and a maximum of 2000 values are allowed.
977
+ # Each value must be a string with a length limit of 10 characters, matching
978
+ # the pattern [a-zA-Z0-9_-]+, such as "store1" or "REGION-2". Otherwise, an
979
+ # INVALID_ARGUMENT error is returned.
980
+ #
981
+ # If the total number of place IDs exceeds 2000 for this
982
+ # {::Google::Cloud::Retail::V2::AddFulfillmentPlacesRequest#type type} after
983
+ # adding, then the update will be rejected.
984
+ # @param add_time [::Google::Protobuf::Timestamp, ::Hash]
985
+ # The time when the fulfillment updates are issued, used to prevent
986
+ # out-of-order updates on fulfillment information. If not provided, the
987
+ # internal system time will be used.
988
+ # @param allow_missing [::Boolean]
989
+ # If set to true, and the {::Google::Cloud::Retail::V2::Product Product} is not
990
+ # found, the fulfillment information will still be processed and retained for
991
+ # at most 1 day and processed once the
992
+ # {::Google::Cloud::Retail::V2::Product Product} is created. If set to false, an
993
+ # INVALID_ARGUMENT error is returned if the
994
+ # {::Google::Cloud::Retail::V2::Product Product} is not found.
995
+ #
996
+ # @yield [response, operation] Access the result along with the RPC operation
997
+ # @yieldparam response [::Gapic::Operation]
998
+ # @yieldparam operation [::GRPC::ActiveCall::Operation]
999
+ #
1000
+ # @return [::Gapic::Operation]
1001
+ #
1002
+ # @raise [::Google::Cloud::Error] if the RPC is aborted.
1003
+ #
1004
+ def add_fulfillment_places request, options = nil
1005
+ raise ::ArgumentError, "request must be provided" if request.nil?
1006
+
1007
+ request = ::Gapic::Protobuf.coerce request, to: ::Google::Cloud::Retail::V2::AddFulfillmentPlacesRequest
1008
+
1009
+ # Converts hash and nil to an options object
1010
+ options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h
1011
+
1012
+ # Customize the options with defaults
1013
+ metadata = @config.rpcs.add_fulfillment_places.metadata.to_h
1014
+
1015
+ # Set x-goog-api-client and x-goog-user-project headers
1016
+ metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \
1017
+ lib_name: @config.lib_name, lib_version: @config.lib_version,
1018
+ gapic_version: ::Google::Cloud::Retail::V2::VERSION
1019
+ metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id
1020
+
1021
+ header_params = {
1022
+ "product" => request.product
1023
+ }
1024
+ request_params_header = header_params.map { |k, v| "#{k}=#{v}" }.join("&")
1025
+ metadata[:"x-goog-request-params"] ||= request_params_header
1026
+
1027
+ options.apply_defaults timeout: @config.rpcs.add_fulfillment_places.timeout,
1028
+ metadata: metadata,
1029
+ retry_policy: @config.rpcs.add_fulfillment_places.retry_policy
1030
+ options.apply_defaults metadata: @config.metadata,
1031
+ retry_policy: @config.retry_policy
1032
+
1033
+ @product_service_stub.call_rpc :add_fulfillment_places, request, options: options do |response, operation|
1034
+ response = ::Gapic::Operation.new response, @operations_client, options: options
1035
+ yield response, operation if block_given?
1036
+ return response
1037
+ end
1038
+ rescue ::GRPC::BadStatus => e
1039
+ raise ::Google::Cloud::Error.from_error(e)
1040
+ end
1041
+
1042
+ ##
1043
+ # Incrementally removes place IDs from a
1044
+ # {::Google::Cloud::Retail::V2::FulfillmentInfo#place_ids Product.fulfillment_info.place_ids}.
1045
+ #
1046
+ # This process is asynchronous and does not require the
1047
+ # {::Google::Cloud::Retail::V2::Product Product} to exist before updating
1048
+ # fulfillment information. If the request is valid, the update will be
1049
+ # enqueued and processed downstream. As a consequence, when a response is
1050
+ # returned, the removed place IDs are not immediately manifested in the
1051
+ # {::Google::Cloud::Retail::V2::Product Product} queried by
1052
+ # {::Google::Cloud::Retail::V2::ProductService::Client#get_product GetProduct} or
1053
+ # {::Google::Cloud::Retail::V2::ProductService::Client#list_products ListProducts}.
1054
+ #
1055
+ # This feature is only available for users who have Retail Search enabled.
1056
+ # Contact Retail Support (retail-search-support@google.com) if you are
1057
+ # interested in using Retail Search.
1058
+ #
1059
+ # @overload remove_fulfillment_places(request, options = nil)
1060
+ # Pass arguments to `remove_fulfillment_places` via a request object, either of type
1061
+ # {::Google::Cloud::Retail::V2::RemoveFulfillmentPlacesRequest} or an equivalent Hash.
1062
+ #
1063
+ # @param request [::Google::Cloud::Retail::V2::RemoveFulfillmentPlacesRequest, ::Hash]
1064
+ # A request object representing the call parameters. Required. To specify no
1065
+ # parameters, or to keep all the default parameter values, pass an empty Hash.
1066
+ # @param options [::Gapic::CallOptions, ::Hash]
1067
+ # Overrides the default settings for this call, e.g, timeout, retries, etc. Optional.
1068
+ #
1069
+ # @overload remove_fulfillment_places(product: nil, type: nil, place_ids: nil, remove_time: nil, allow_missing: nil)
1070
+ # Pass arguments to `remove_fulfillment_places` via keyword arguments. Note that at
1071
+ # least one keyword argument is required. To specify no parameters, or to keep all
1072
+ # the default parameter values, pass an empty Hash as a request object (see above).
1073
+ #
1074
+ # @param product [::String]
1075
+ # Required. Full resource name of {::Google::Cloud::Retail::V2::Product Product},
1076
+ # such as
1077
+ # `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/some_product_id`.
1078
+ #
1079
+ # If the caller does not have permission to access the
1080
+ # {::Google::Cloud::Retail::V2::Product Product}, regardless of whether or not it
1081
+ # exists, a PERMISSION_DENIED error is returned.
1082
+ # @param type [::String]
1083
+ # Required. The fulfillment type, including commonly used types (such as
1084
+ # pickup in store and same day delivery), and custom types.
1085
+ #
1086
+ # Supported values:
1087
+ #
1088
+ # * "pickup-in-store"
1089
+ # * "ship-to-store"
1090
+ # * "same-day-delivery"
1091
+ # * "next-day-delivery"
1092
+ # * "custom-type-1"
1093
+ # * "custom-type-2"
1094
+ # * "custom-type-3"
1095
+ # * "custom-type-4"
1096
+ # * "custom-type-5"
1097
+ #
1098
+ # If this field is set to an invalid value other than these, an
1099
+ # INVALID_ARGUMENT error is returned.
1100
+ #
1101
+ # This field directly corresponds to [Product.fulfillment_info.type][].
1102
+ # @param place_ids [::Array<::String>]
1103
+ # Required. The IDs for this
1104
+ # {::Google::Cloud::Retail::V2::RemoveFulfillmentPlacesRequest#type type}, such as
1105
+ # the store IDs for "pickup-in-store" or the region IDs for
1106
+ # "same-day-delivery", to be removed for this
1107
+ # {::Google::Cloud::Retail::V2::RemoveFulfillmentPlacesRequest#type type}.
1108
+ #
1109
+ # At least 1 value is required, and a maximum of 2000 values are allowed.
1110
+ # Each value must be a string with a length limit of 10 characters, matching
1111
+ # the pattern [a-zA-Z0-9_-]+, such as "store1" or "REGION-2". Otherwise, an
1112
+ # INVALID_ARGUMENT error is returned.
1113
+ # @param remove_time [::Google::Protobuf::Timestamp, ::Hash]
1114
+ # The time when the fulfillment updates are issued, used to prevent
1115
+ # out-of-order updates on fulfillment information. If not provided, the
1116
+ # internal system time will be used.
1117
+ # @param allow_missing [::Boolean]
1118
+ # If set to true, and the {::Google::Cloud::Retail::V2::Product Product} is not
1119
+ # found, the fulfillment information will still be processed and retained for
1120
+ # at most 1 day and processed once the
1121
+ # {::Google::Cloud::Retail::V2::Product Product} is created. If set to false, an
1122
+ # INVALID_ARGUMENT error is returned if the
1123
+ # {::Google::Cloud::Retail::V2::Product Product} is not found.
1124
+ #
1125
+ # @yield [response, operation] Access the result along with the RPC operation
1126
+ # @yieldparam response [::Gapic::Operation]
1127
+ # @yieldparam operation [::GRPC::ActiveCall::Operation]
1128
+ #
1129
+ # @return [::Gapic::Operation]
1130
+ #
1131
+ # @raise [::Google::Cloud::Error] if the RPC is aborted.
1132
+ #
1133
+ def remove_fulfillment_places request, options = nil
1134
+ raise ::ArgumentError, "request must be provided" if request.nil?
1135
+
1136
+ request = ::Gapic::Protobuf.coerce request, to: ::Google::Cloud::Retail::V2::RemoveFulfillmentPlacesRequest
1137
+
1138
+ # Converts hash and nil to an options object
1139
+ options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h
1140
+
1141
+ # Customize the options with defaults
1142
+ metadata = @config.rpcs.remove_fulfillment_places.metadata.to_h
1143
+
1144
+ # Set x-goog-api-client and x-goog-user-project headers
1145
+ metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \
1146
+ lib_name: @config.lib_name, lib_version: @config.lib_version,
1147
+ gapic_version: ::Google::Cloud::Retail::V2::VERSION
1148
+ metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id
1149
+
1150
+ header_params = {
1151
+ "product" => request.product
1152
+ }
1153
+ request_params_header = header_params.map { |k, v| "#{k}=#{v}" }.join("&")
1154
+ metadata[:"x-goog-request-params"] ||= request_params_header
1155
+
1156
+ options.apply_defaults timeout: @config.rpcs.remove_fulfillment_places.timeout,
1157
+ metadata: metadata,
1158
+ retry_policy: @config.rpcs.remove_fulfillment_places.retry_policy
1159
+ options.apply_defaults metadata: @config.metadata,
1160
+ retry_policy: @config.retry_policy
1161
+
1162
+ @product_service_stub.call_rpc :remove_fulfillment_places, request, options: options do |response, operation|
1163
+ response = ::Gapic::Operation.new response, @operations_client, options: options
1164
+ yield response, operation if block_given?
1165
+ return response
1166
+ end
1167
+ rescue ::GRPC::BadStatus => e
1168
+ raise ::Google::Cloud::Error.from_error(e)
1169
+ end
1170
+
574
1171
  ##
575
1172
  # Configuration class for the ProductService API.
576
1173
  #
@@ -663,7 +1260,7 @@ module Google
663
1260
  config_attr :scope, nil, ::String, ::Array, nil
664
1261
  config_attr :lib_name, nil, ::String, nil
665
1262
  config_attr :lib_version, nil, ::String, nil
666
- config_attr(:channel_args, { "grpc.service_config_disable_resolution"=>1 }, ::Hash, nil)
1263
+ config_attr(:channel_args, { "grpc.service_config_disable_resolution" => 1 }, ::Hash, nil)
667
1264
  config_attr :interceptors, nil, ::Array, nil
668
1265
  config_attr :timeout, nil, ::Numeric, nil
669
1266
  config_attr :metadata, nil, ::Hash, nil
@@ -684,7 +1281,7 @@ module Google
684
1281
  def rpcs
685
1282
  @rpcs ||= begin
686
1283
  parent_rpcs = nil
687
- parent_rpcs = @parent_config.rpcs if defined?(@parent_config) && @parent_config&.respond_to?(:rpcs)
1284
+ parent_rpcs = @parent_config.rpcs if defined?(@parent_config) && @parent_config.respond_to?(:rpcs)
688
1285
  Rpcs.new parent_rpcs
689
1286
  end
690
1287
  end
@@ -718,6 +1315,11 @@ module Google
718
1315
  #
719
1316
  attr_reader :get_product
720
1317
  ##
1318
+ # RPC-specific configuration for `list_products`
1319
+ # @return [::Gapic::Config::Method]
1320
+ #
1321
+ attr_reader :list_products
1322
+ ##
721
1323
  # RPC-specific configuration for `update_product`
722
1324
  # @return [::Gapic::Config::Method]
723
1325
  #
@@ -732,19 +1334,42 @@ module Google
732
1334
  # @return [::Gapic::Config::Method]
733
1335
  #
734
1336
  attr_reader :import_products
1337
+ ##
1338
+ # RPC-specific configuration for `set_inventory`
1339
+ # @return [::Gapic::Config::Method]
1340
+ #
1341
+ attr_reader :set_inventory
1342
+ ##
1343
+ # RPC-specific configuration for `add_fulfillment_places`
1344
+ # @return [::Gapic::Config::Method]
1345
+ #
1346
+ attr_reader :add_fulfillment_places
1347
+ ##
1348
+ # RPC-specific configuration for `remove_fulfillment_places`
1349
+ # @return [::Gapic::Config::Method]
1350
+ #
1351
+ attr_reader :remove_fulfillment_places
735
1352
 
736
1353
  # @private
737
1354
  def initialize parent_rpcs = nil
738
- create_product_config = parent_rpcs&.create_product if parent_rpcs&.respond_to? :create_product
1355
+ create_product_config = parent_rpcs.create_product if parent_rpcs.respond_to? :create_product
739
1356
  @create_product = ::Gapic::Config::Method.new create_product_config
740
- get_product_config = parent_rpcs&.get_product if parent_rpcs&.respond_to? :get_product
1357
+ get_product_config = parent_rpcs.get_product if parent_rpcs.respond_to? :get_product
741
1358
  @get_product = ::Gapic::Config::Method.new get_product_config
742
- update_product_config = parent_rpcs&.update_product if parent_rpcs&.respond_to? :update_product
1359
+ list_products_config = parent_rpcs.list_products if parent_rpcs.respond_to? :list_products
1360
+ @list_products = ::Gapic::Config::Method.new list_products_config
1361
+ update_product_config = parent_rpcs.update_product if parent_rpcs.respond_to? :update_product
743
1362
  @update_product = ::Gapic::Config::Method.new update_product_config
744
- delete_product_config = parent_rpcs&.delete_product if parent_rpcs&.respond_to? :delete_product
1363
+ delete_product_config = parent_rpcs.delete_product if parent_rpcs.respond_to? :delete_product
745
1364
  @delete_product = ::Gapic::Config::Method.new delete_product_config
746
- import_products_config = parent_rpcs&.import_products if parent_rpcs&.respond_to? :import_products
1365
+ import_products_config = parent_rpcs.import_products if parent_rpcs.respond_to? :import_products
747
1366
  @import_products = ::Gapic::Config::Method.new import_products_config
1367
+ set_inventory_config = parent_rpcs.set_inventory if parent_rpcs.respond_to? :set_inventory
1368
+ @set_inventory = ::Gapic::Config::Method.new set_inventory_config
1369
+ add_fulfillment_places_config = parent_rpcs.add_fulfillment_places if parent_rpcs.respond_to? :add_fulfillment_places
1370
+ @add_fulfillment_places = ::Gapic::Config::Method.new add_fulfillment_places_config
1371
+ remove_fulfillment_places_config = parent_rpcs.remove_fulfillment_places if parent_rpcs.respond_to? :remove_fulfillment_places
1372
+ @remove_fulfillment_places = ::Gapic::Config::Method.new remove_fulfillment_places_config
748
1373
 
749
1374
  yield self if block_given?
750
1375
  end