<?php
# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: google/shopping/merchant/products/v1/productinputs.proto

namespace Google\Shopping\Merchant\Products\V1;

use Google\Protobuf\Internal\GPBType;
use Google\Protobuf\Internal\GPBUtil;
use Google\Protobuf\RepeatedField;

/**
 * Request message for the DeleteProductInput method.
 *
 * Generated from protobuf message <code>google.shopping.merchant.products.v1.DeleteProductInputRequest</code>
 */
class DeleteProductInputRequest extends \Google\Protobuf\Internal\Message
{
    /**
     * Required. The name of the product input to delete.
     * Format: `accounts/{account}/productInputs/{productInput}`
     * The {productInput} segment is a unique identifier for the product.
     * This identifier must be unique within a merchant account and generally
     * follows the structure: `content_language~feed_label~offer_id`. Example:
     * `en~US~sku123` For legacy local products, the structure is:
     * `local~content_language~feed_label~offer_id`. Example: `local~en~US~sku123`
     * The format of the {productInput} segment in the URL is automatically
     * detected by the server, supporting two options:
     * 1.  **Encoded Format**: The `{productInput}` segment is an unpadded
     * base64url
     *     encoded string (RFC 4648 Section 5). The decoded string must result
     *     in the `content_language~feed_label~offer_id` structure. This encoding
     *     MUST be used if any part of the product identifier (like `offer_id`)
     *     contains characters such as `/`, `%`, or `~`.
     *     *   Example: To represent the product ID `en~US~sku/123`, the
     *         `{productInput}` segment must be the unpadded base64url encoding of
     *         this string, which is `ZW5-VVN-c2t1LzEyMw`. The full resource name
     *         for the product would be
     *         `accounts/123/productInputs/ZW5-VVN-c2t1LzEyMw`.
     * 2.  **Plain Format**: The `{productInput}` segment is the tilde-separated
     * string
     *     `content_language~feed_label~offer_id`. This format is suitable only
     *     when `content_language`, `feed_label`, and `offer_id` do not contain
     *     URL-problematic characters like `/`, `%`, or `~`.
     * We recommend using the **Encoded Format** for all product IDs to ensure
     * correct parsing, especially those containing special characters. The
     * presence of tilde (`~`) characters in the `{productInput}` segment is used
     * to differentiate between the two formats.
     *
     * Generated from protobuf field <code>string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = {</code>
     */
    protected $name = '';
    /**
     * Required. The primary or supplemental data source from which the product
     * input should be deleted. Format:
     * `accounts/{account}/dataSources/{datasource}`. For example,
     * `accounts/123456/dataSources/104628`.
     *
     * Generated from protobuf field <code>string data_source = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    protected $data_source = '';

    /**
     * @param string $name Required. The name of the product input to delete.
     *                     Format: `accounts/{account}/productInputs/{productInput}`
     *
     *                     The {productInput} segment is a unique identifier for the product.
     *                     This identifier must be unique within a merchant account and generally
     *                     follows the structure: `content_language~feed_label~offer_id`. Example:
     *                     `en~US~sku123` For legacy local products, the structure is:
     *                     `local~content_language~feed_label~offer_id`. Example: `local~en~US~sku123`
     *
     *                     The format of the {productInput} segment in the URL is automatically
     *                     detected by the server, supporting two options:
     *
     *                     1.  **Encoded Format**: The `{productInput}` segment is an unpadded
     *                     base64url
     *                     encoded string (RFC 4648 Section 5). The decoded string must result
     *                     in the `content_language~feed_label~offer_id` structure. This encoding
     *                     MUST be used if any part of the product identifier (like `offer_id`)
     *                     contains characters such as `/`, `%`, or `~`.
     *                     *   Example: To represent the product ID `en~US~sku/123`, the
     *                     `{productInput}` segment must be the unpadded base64url encoding of
     *                     this string, which is `ZW5-VVN-c2t1LzEyMw`. The full resource name
     *                     for the product would be
     *                     `accounts/123/productInputs/ZW5-VVN-c2t1LzEyMw`.
     *
     *                     2.  **Plain Format**: The `{productInput}` segment is the tilde-separated
     *                     string
     *                     `content_language~feed_label~offer_id`. This format is suitable only
     *                     when `content_language`, `feed_label`, and `offer_id` do not contain
     *                     URL-problematic characters like `/`, `%`, or `~`.
     *
     *                     We recommend using the **Encoded Format** for all product IDs to ensure
     *                     correct parsing, especially those containing special characters. The
     *                     presence of tilde (`~`) characters in the `{productInput}` segment is used
     *                     to differentiate between the two formats. Please see
     *                     {@see ProductInputsServiceClient::productInputName()} for help formatting this field.
     *
     * @return \Google\Shopping\Merchant\Products\V1\DeleteProductInputRequest
     *
     * @experimental
     */
    public static function build(string $name): self
    {
        return (new self())
            ->setName($name);
    }

    /**
     * Constructor.
     *
     * @param array $data {
     *     Optional. Data for populating the Message object.
     *
     *     @type string $name
     *           Required. The name of the product input to delete.
     *           Format: `accounts/{account}/productInputs/{productInput}`
     *           The {productInput} segment is a unique identifier for the product.
     *           This identifier must be unique within a merchant account and generally
     *           follows the structure: `content_language~feed_label~offer_id`. Example:
     *           `en~US~sku123` For legacy local products, the structure is:
     *           `local~content_language~feed_label~offer_id`. Example: `local~en~US~sku123`
     *           The format of the {productInput} segment in the URL is automatically
     *           detected by the server, supporting two options:
     *           1.  **Encoded Format**: The `{productInput}` segment is an unpadded
     *           base64url
     *               encoded string (RFC 4648 Section 5). The decoded string must result
     *               in the `content_language~feed_label~offer_id` structure. This encoding
     *               MUST be used if any part of the product identifier (like `offer_id`)
     *               contains characters such as `/`, `%`, or `~`.
     *               *   Example: To represent the product ID `en~US~sku/123`, the
     *                   `{productInput}` segment must be the unpadded base64url encoding of
     *                   this string, which is `ZW5-VVN-c2t1LzEyMw`. The full resource name
     *                   for the product would be
     *                   `accounts/123/productInputs/ZW5-VVN-c2t1LzEyMw`.
     *           2.  **Plain Format**: The `{productInput}` segment is the tilde-separated
     *           string
     *               `content_language~feed_label~offer_id`. This format is suitable only
     *               when `content_language`, `feed_label`, and `offer_id` do not contain
     *               URL-problematic characters like `/`, `%`, or `~`.
     *           We recommend using the **Encoded Format** for all product IDs to ensure
     *           correct parsing, especially those containing special characters. The
     *           presence of tilde (`~`) characters in the `{productInput}` segment is used
     *           to differentiate between the two formats.
     *     @type string $data_source
     *           Required. The primary or supplemental data source from which the product
     *           input should be deleted. Format:
     *           `accounts/{account}/dataSources/{datasource}`. For example,
     *           `accounts/123456/dataSources/104628`.
     * }
     */
    public function __construct($data = NULL) {
        \GPBMetadata\Google\Shopping\Merchant\Products\V1\Productinputs::initOnce();
        parent::__construct($data);
    }

    /**
     * Required. The name of the product input to delete.
     * Format: `accounts/{account}/productInputs/{productInput}`
     * The {productInput} segment is a unique identifier for the product.
     * This identifier must be unique within a merchant account and generally
     * follows the structure: `content_language~feed_label~offer_id`. Example:
     * `en~US~sku123` For legacy local products, the structure is:
     * `local~content_language~feed_label~offer_id`. Example: `local~en~US~sku123`
     * The format of the {productInput} segment in the URL is automatically
     * detected by the server, supporting two options:
     * 1.  **Encoded Format**: The `{productInput}` segment is an unpadded
     * base64url
     *     encoded string (RFC 4648 Section 5). The decoded string must result
     *     in the `content_language~feed_label~offer_id` structure. This encoding
     *     MUST be used if any part of the product identifier (like `offer_id`)
     *     contains characters such as `/`, `%`, or `~`.
     *     *   Example: To represent the product ID `en~US~sku/123`, the
     *         `{productInput}` segment must be the unpadded base64url encoding of
     *         this string, which is `ZW5-VVN-c2t1LzEyMw`. The full resource name
     *         for the product would be
     *         `accounts/123/productInputs/ZW5-VVN-c2t1LzEyMw`.
     * 2.  **Plain Format**: The `{productInput}` segment is the tilde-separated
     * string
     *     `content_language~feed_label~offer_id`. This format is suitable only
     *     when `content_language`, `feed_label`, and `offer_id` do not contain
     *     URL-problematic characters like `/`, `%`, or `~`.
     * We recommend using the **Encoded Format** for all product IDs to ensure
     * correct parsing, especially those containing special characters. The
     * presence of tilde (`~`) characters in the `{productInput}` segment is used
     * to differentiate between the two formats.
     *
     * Generated from protobuf field <code>string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = {</code>
     * @return string
     */
    public function getName()
    {
        return $this->name;
    }

    /**
     * Required. The name of the product input to delete.
     * Format: `accounts/{account}/productInputs/{productInput}`
     * The {productInput} segment is a unique identifier for the product.
     * This identifier must be unique within a merchant account and generally
     * follows the structure: `content_language~feed_label~offer_id`. Example:
     * `en~US~sku123` For legacy local products, the structure is:
     * `local~content_language~feed_label~offer_id`. Example: `local~en~US~sku123`
     * The format of the {productInput} segment in the URL is automatically
     * detected by the server, supporting two options:
     * 1.  **Encoded Format**: The `{productInput}` segment is an unpadded
     * base64url
     *     encoded string (RFC 4648 Section 5). The decoded string must result
     *     in the `content_language~feed_label~offer_id` structure. This encoding
     *     MUST be used if any part of the product identifier (like `offer_id`)
     *     contains characters such as `/`, `%`, or `~`.
     *     *   Example: To represent the product ID `en~US~sku/123`, the
     *         `{productInput}` segment must be the unpadded base64url encoding of
     *         this string, which is `ZW5-VVN-c2t1LzEyMw`. The full resource name
     *         for the product would be
     *         `accounts/123/productInputs/ZW5-VVN-c2t1LzEyMw`.
     * 2.  **Plain Format**: The `{productInput}` segment is the tilde-separated
     * string
     *     `content_language~feed_label~offer_id`. This format is suitable only
     *     when `content_language`, `feed_label`, and `offer_id` do not contain
     *     URL-problematic characters like `/`, `%`, or `~`.
     * We recommend using the **Encoded Format** for all product IDs to ensure
     * correct parsing, especially those containing special characters. The
     * presence of tilde (`~`) characters in the `{productInput}` segment is used
     * to differentiate between the two formats.
     *
     * Generated from protobuf field <code>string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = {</code>
     * @param string $var
     * @return $this
     */
    public function setName($var)
    {
        GPBUtil::checkString($var, True);
        $this->name = $var;

        return $this;
    }

    /**
     * Required. The primary or supplemental data source from which the product
     * input should be deleted. Format:
     * `accounts/{account}/dataSources/{datasource}`. For example,
     * `accounts/123456/dataSources/104628`.
     *
     * Generated from protobuf field <code>string data_source = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return string
     */
    public function getDataSource()
    {
        return $this->data_source;
    }

    /**
     * Required. The primary or supplemental data source from which the product
     * input should be deleted. Format:
     * `accounts/{account}/dataSources/{datasource}`. For example,
     * `accounts/123456/dataSources/104628`.
     *
     * Generated from protobuf field <code>string data_source = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @param string $var
     * @return $this
     */
    public function setDataSource($var)
    {
        GPBUtil::checkString($var, True);
        $this->data_source = $var;

        return $this;
    }

}

