<?php
# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: google/cloud/apihub/v1/apihub_service.proto

namespace Google\Cloud\ApiHub\V1;

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

/**
 * The [ListApis][google.cloud.apihub.v1.ApiHub.ListApis] method's request.
 *
 * Generated from protobuf message <code>google.cloud.apihub.v1.ListApisRequest</code>
 */
class ListApisRequest extends \Google\Protobuf\Internal\Message
{
    /**
     * Required. The parent, which owns this collection of API resources.
     * Format: `projects/{project}/locations/{location}`
     *
     * Generated from protobuf field <code>string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = {</code>
     */
    protected $parent = '';
    /**
     * Optional. An expression that filters the list of ApiResources.
     * A filter expression consists of a field name, a comparison
     * operator, and a value for filtering. The value must be a string. The
     * comparison operator must be one of: `<`, `>`, `:` or `=`. Filters are not
     * case sensitive.
     * The following fields in the `ApiResource` are eligible for filtering:
     *   * `owner.email` - The email of the team which owns the ApiResource.
     *   Allowed comparison operators: `=`.
     *   * `create_time` - The time at which the ApiResource was created. The
     *   value should be in the (RFC3339)[https://tools.ietf.org/html/rfc3339]
     *   format. Allowed comparison operators: `>` and `<`.
     *   * `display_name` - The display name of the ApiResource. Allowed
     *   comparison operators: `=`.
     *   * `target_user.enum_values.values.id` - The allowed value id of the
     *   target users attribute associated with the ApiResource. Allowed
     *   comparison operator is `:`.
     *   * `target_user.enum_values.values.display_name` - The allowed value
     *   display name of the target users attribute associated with the
     *   ApiResource. Allowed comparison operator is `:`.
     *   * `team.enum_values.values.id` - The allowed value id of the team
     *   attribute associated with the ApiResource. Allowed comparison operator is
     *   `:`.
     *   * `team.enum_values.values.display_name` - The allowed value display name
     *   of the team attribute associated with the ApiResource. Allowed comparison
     *   operator is `:`.
     *   * `business_unit.enum_values.values.id` - The allowed value id of the
     *   business unit attribute associated with the ApiResource. Allowed
     *   comparison operator is `:`.
     *   * `business_unit.enum_values.values.display_name` - The allowed value
     *   display name of the business unit attribute associated with the
     *   ApiResource. Allowed comparison operator is `:`.
     *   * `maturity_level.enum_values.values.id` - The allowed value id of the
     *   maturity level attribute associated with the ApiResource. Allowed
     *   comparison operator is `:`.
     *   * `maturity_level.enum_values.values.display_name` - The allowed value
     *   display name of the maturity level attribute associated with the
     *   ApiResource. Allowed comparison operator is `:`.
     *   * `api_style.enum_values.values.id` - The allowed value id of the
     *   api style attribute associated with the ApiResource. Allowed
     *   comparison operator is `:`.
     *   * `api_style.enum_values.values.display_name` - The allowed value display
     *   name of the api style attribute associated with the ApiResource. Allowed
     *   comparison operator is `:`.
     * Expressions are combined with either `AND` logic operator or `OR` logical
     * operator but not both of them together i.e. only one of the `AND` or `OR`
     * operator can be used throughout the filter string and both the operators
     * cannot be used together. No other logical operators are supported. At most
     * three filter fields are allowed in the filter string and if provided
     * more than that then `INVALID_ARGUMENT` error is returned by the API.
     * Here are a few examples:
     *   * `owner.email = \"apihub&#64;google.com\"` -  - The owner team email is
     *   _apihub&#64;google.com_.
     *   * `owner.email = \"apihub&#64;google.com\" AND create_time <
     *   \"2021-08-15T14:50:00Z\" AND create_time > \"2021-08-10T12:00:00Z\"` -
     *   The owner team email is _apihub&#64;google.com_ and the api was created
     *   before _2021-08-15 14:50:00 UTC_ and after _2021-08-10 12:00:00 UTC_.
     *   * `owner.email = \"apihub&#64;google.com\" OR team.enum_values.values.id:
     *   apihub-team-id` - The filter string specifies the APIs where the owner
     *   team email is _apihub&#64;google.com_ or the id of the allowed value
     *   associated with the team attribute is _apihub-team-id_.
     *   * `owner.email = \"apihub&#64;google.com\" OR
     *   team.enum_values.values.display_name: ApiHub Team` - The filter string
     *   specifies the APIs where the owner team email is _apihub&#64;google.com_ or
     *   the display name of the allowed value associated with the team attribute
     *   is `ApiHub Team`.
     *
     * Generated from protobuf field <code>string filter = 2 [(.google.api.field_behavior) = OPTIONAL];</code>
     */
    protected $filter = '';
    /**
     * Optional. The maximum number of API resources to return. The service may
     * return fewer than this value. If unspecified, at most 50 Apis will be
     * returned. The maximum value is 1000; values above 1000 will be coerced to
     * 1000.
     *
     * Generated from protobuf field <code>int32 page_size = 3 [(.google.api.field_behavior) = OPTIONAL];</code>
     */
    protected $page_size = 0;
    /**
     * Optional. A page token, received from a previous `ListApis` call.
     * Provide this to retrieve the subsequent page.
     * When paginating, all other parameters (except page_size) provided to
     * `ListApis` must match the call that provided the page token.
     *
     * Generated from protobuf field <code>string page_token = 4 [(.google.api.field_behavior) = OPTIONAL];</code>
     */
    protected $page_token = '';

    /**
     * @param string $parent Required. The parent, which owns this collection of API resources.
     *                       Format: `projects/{project}/locations/{location}`
     *                       Please see {@see ApiHubClient::locationName()} for help formatting this field.
     *
     * @return \Google\Cloud\ApiHub\V1\ListApisRequest
     *
     * @experimental
     */
    public static function build(string $parent): self
    {
        return (new self())
            ->setParent($parent);
    }

    /**
     * Constructor.
     *
     * @param array $data {
     *     Optional. Data for populating the Message object.
     *
     *     @type string $parent
     *           Required. The parent, which owns this collection of API resources.
     *           Format: `projects/{project}/locations/{location}`
     *     @type string $filter
     *           Optional. An expression that filters the list of ApiResources.
     *           A filter expression consists of a field name, a comparison
     *           operator, and a value for filtering. The value must be a string. The
     *           comparison operator must be one of: `<`, `>`, `:` or `=`. Filters are not
     *           case sensitive.
     *           The following fields in the `ApiResource` are eligible for filtering:
     *             * `owner.email` - The email of the team which owns the ApiResource.
     *             Allowed comparison operators: `=`.
     *             * `create_time` - The time at which the ApiResource was created. The
     *             value should be in the (RFC3339)[https://tools.ietf.org/html/rfc3339]
     *             format. Allowed comparison operators: `>` and `<`.
     *             * `display_name` - The display name of the ApiResource. Allowed
     *             comparison operators: `=`.
     *             * `target_user.enum_values.values.id` - The allowed value id of the
     *             target users attribute associated with the ApiResource. Allowed
     *             comparison operator is `:`.
     *             * `target_user.enum_values.values.display_name` - The allowed value
     *             display name of the target users attribute associated with the
     *             ApiResource. Allowed comparison operator is `:`.
     *             * `team.enum_values.values.id` - The allowed value id of the team
     *             attribute associated with the ApiResource. Allowed comparison operator is
     *             `:`.
     *             * `team.enum_values.values.display_name` - The allowed value display name
     *             of the team attribute associated with the ApiResource. Allowed comparison
     *             operator is `:`.
     *             * `business_unit.enum_values.values.id` - The allowed value id of the
     *             business unit attribute associated with the ApiResource. Allowed
     *             comparison operator is `:`.
     *             * `business_unit.enum_values.values.display_name` - The allowed value
     *             display name of the business unit attribute associated with the
     *             ApiResource. Allowed comparison operator is `:`.
     *             * `maturity_level.enum_values.values.id` - The allowed value id of the
     *             maturity level attribute associated with the ApiResource. Allowed
     *             comparison operator is `:`.
     *             * `maturity_level.enum_values.values.display_name` - The allowed value
     *             display name of the maturity level attribute associated with the
     *             ApiResource. Allowed comparison operator is `:`.
     *             * `api_style.enum_values.values.id` - The allowed value id of the
     *             api style attribute associated with the ApiResource. Allowed
     *             comparison operator is `:`.
     *             * `api_style.enum_values.values.display_name` - The allowed value display
     *             name of the api style attribute associated with the ApiResource. Allowed
     *             comparison operator is `:`.
     *           Expressions are combined with either `AND` logic operator or `OR` logical
     *           operator but not both of them together i.e. only one of the `AND` or `OR`
     *           operator can be used throughout the filter string and both the operators
     *           cannot be used together. No other logical operators are supported. At most
     *           three filter fields are allowed in the filter string and if provided
     *           more than that then `INVALID_ARGUMENT` error is returned by the API.
     *           Here are a few examples:
     *             * `owner.email = \"apihub&#64;google.com\"` -  - The owner team email is
     *             _apihub&#64;google.com_.
     *             * `owner.email = \"apihub&#64;google.com\" AND create_time <
     *             \"2021-08-15T14:50:00Z\" AND create_time > \"2021-08-10T12:00:00Z\"` -
     *             The owner team email is _apihub&#64;google.com_ and the api was created
     *             before _2021-08-15 14:50:00 UTC_ and after _2021-08-10 12:00:00 UTC_.
     *             * `owner.email = \"apihub&#64;google.com\" OR team.enum_values.values.id:
     *             apihub-team-id` - The filter string specifies the APIs where the owner
     *             team email is _apihub&#64;google.com_ or the id of the allowed value
     *             associated with the team attribute is _apihub-team-id_.
     *             * `owner.email = \"apihub&#64;google.com\" OR
     *             team.enum_values.values.display_name: ApiHub Team` - The filter string
     *             specifies the APIs where the owner team email is _apihub&#64;google.com_ or
     *             the display name of the allowed value associated with the team attribute
     *             is `ApiHub Team`.
     *     @type int $page_size
     *           Optional. The maximum number of API resources to return. The service may
     *           return fewer than this value. If unspecified, at most 50 Apis will be
     *           returned. The maximum value is 1000; values above 1000 will be coerced to
     *           1000.
     *     @type string $page_token
     *           Optional. A page token, received from a previous `ListApis` call.
     *           Provide this to retrieve the subsequent page.
     *           When paginating, all other parameters (except page_size) provided to
     *           `ListApis` must match the call that provided the page token.
     * }
     */
    public function __construct($data = NULL) {
        \GPBMetadata\Google\Cloud\Apihub\V1\ApihubService::initOnce();
        parent::__construct($data);
    }

    /**
     * Required. The parent, which owns this collection of API resources.
     * Format: `projects/{project}/locations/{location}`
     *
     * Generated from protobuf field <code>string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = {</code>
     * @return string
     */
    public function getParent()
    {
        return $this->parent;
    }

    /**
     * Required. The parent, which owns this collection of API resources.
     * Format: `projects/{project}/locations/{location}`
     *
     * Generated from protobuf field <code>string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = {</code>
     * @param string $var
     * @return $this
     */
    public function setParent($var)
    {
        GPBUtil::checkString($var, True);
        $this->parent = $var;

        return $this;
    }

    /**
     * Optional. An expression that filters the list of ApiResources.
     * A filter expression consists of a field name, a comparison
     * operator, and a value for filtering. The value must be a string. The
     * comparison operator must be one of: `<`, `>`, `:` or `=`. Filters are not
     * case sensitive.
     * The following fields in the `ApiResource` are eligible for filtering:
     *   * `owner.email` - The email of the team which owns the ApiResource.
     *   Allowed comparison operators: `=`.
     *   * `create_time` - The time at which the ApiResource was created. The
     *   value should be in the (RFC3339)[https://tools.ietf.org/html/rfc3339]
     *   format. Allowed comparison operators: `>` and `<`.
     *   * `display_name` - The display name of the ApiResource. Allowed
     *   comparison operators: `=`.
     *   * `target_user.enum_values.values.id` - The allowed value id of the
     *   target users attribute associated with the ApiResource. Allowed
     *   comparison operator is `:`.
     *   * `target_user.enum_values.values.display_name` - The allowed value
     *   display name of the target users attribute associated with the
     *   ApiResource. Allowed comparison operator is `:`.
     *   * `team.enum_values.values.id` - The allowed value id of the team
     *   attribute associated with the ApiResource. Allowed comparison operator is
     *   `:`.
     *   * `team.enum_values.values.display_name` - The allowed value display name
     *   of the team attribute associated with the ApiResource. Allowed comparison
     *   operator is `:`.
     *   * `business_unit.enum_values.values.id` - The allowed value id of the
     *   business unit attribute associated with the ApiResource. Allowed
     *   comparison operator is `:`.
     *   * `business_unit.enum_values.values.display_name` - The allowed value
     *   display name of the business unit attribute associated with the
     *   ApiResource. Allowed comparison operator is `:`.
     *   * `maturity_level.enum_values.values.id` - The allowed value id of the
     *   maturity level attribute associated with the ApiResource. Allowed
     *   comparison operator is `:`.
     *   * `maturity_level.enum_values.values.display_name` - The allowed value
     *   display name of the maturity level attribute associated with the
     *   ApiResource. Allowed comparison operator is `:`.
     *   * `api_style.enum_values.values.id` - The allowed value id of the
     *   api style attribute associated with the ApiResource. Allowed
     *   comparison operator is `:`.
     *   * `api_style.enum_values.values.display_name` - The allowed value display
     *   name of the api style attribute associated with the ApiResource. Allowed
     *   comparison operator is `:`.
     * Expressions are combined with either `AND` logic operator or `OR` logical
     * operator but not both of them together i.e. only one of the `AND` or `OR`
     * operator can be used throughout the filter string and both the operators
     * cannot be used together. No other logical operators are supported. At most
     * three filter fields are allowed in the filter string and if provided
     * more than that then `INVALID_ARGUMENT` error is returned by the API.
     * Here are a few examples:
     *   * `owner.email = \"apihub&#64;google.com\"` -  - The owner team email is
     *   _apihub&#64;google.com_.
     *   * `owner.email = \"apihub&#64;google.com\" AND create_time <
     *   \"2021-08-15T14:50:00Z\" AND create_time > \"2021-08-10T12:00:00Z\"` -
     *   The owner team email is _apihub&#64;google.com_ and the api was created
     *   before _2021-08-15 14:50:00 UTC_ and after _2021-08-10 12:00:00 UTC_.
     *   * `owner.email = \"apihub&#64;google.com\" OR team.enum_values.values.id:
     *   apihub-team-id` - The filter string specifies the APIs where the owner
     *   team email is _apihub&#64;google.com_ or the id of the allowed value
     *   associated with the team attribute is _apihub-team-id_.
     *   * `owner.email = \"apihub&#64;google.com\" OR
     *   team.enum_values.values.display_name: ApiHub Team` - The filter string
     *   specifies the APIs where the owner team email is _apihub&#64;google.com_ or
     *   the display name of the allowed value associated with the team attribute
     *   is `ApiHub Team`.
     *
     * Generated from protobuf field <code>string filter = 2 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return string
     */
    public function getFilter()
    {
        return $this->filter;
    }

    /**
     * Optional. An expression that filters the list of ApiResources.
     * A filter expression consists of a field name, a comparison
     * operator, and a value for filtering. The value must be a string. The
     * comparison operator must be one of: `<`, `>`, `:` or `=`. Filters are not
     * case sensitive.
     * The following fields in the `ApiResource` are eligible for filtering:
     *   * `owner.email` - The email of the team which owns the ApiResource.
     *   Allowed comparison operators: `=`.
     *   * `create_time` - The time at which the ApiResource was created. The
     *   value should be in the (RFC3339)[https://tools.ietf.org/html/rfc3339]
     *   format. Allowed comparison operators: `>` and `<`.
     *   * `display_name` - The display name of the ApiResource. Allowed
     *   comparison operators: `=`.
     *   * `target_user.enum_values.values.id` - The allowed value id of the
     *   target users attribute associated with the ApiResource. Allowed
     *   comparison operator is `:`.
     *   * `target_user.enum_values.values.display_name` - The allowed value
     *   display name of the target users attribute associated with the
     *   ApiResource. Allowed comparison operator is `:`.
     *   * `team.enum_values.values.id` - The allowed value id of the team
     *   attribute associated with the ApiResource. Allowed comparison operator is
     *   `:`.
     *   * `team.enum_values.values.display_name` - The allowed value display name
     *   of the team attribute associated with the ApiResource. Allowed comparison
     *   operator is `:`.
     *   * `business_unit.enum_values.values.id` - The allowed value id of the
     *   business unit attribute associated with the ApiResource. Allowed
     *   comparison operator is `:`.
     *   * `business_unit.enum_values.values.display_name` - The allowed value
     *   display name of the business unit attribute associated with the
     *   ApiResource. Allowed comparison operator is `:`.
     *   * `maturity_level.enum_values.values.id` - The allowed value id of the
     *   maturity level attribute associated with the ApiResource. Allowed
     *   comparison operator is `:`.
     *   * `maturity_level.enum_values.values.display_name` - The allowed value
     *   display name of the maturity level attribute associated with the
     *   ApiResource. Allowed comparison operator is `:`.
     *   * `api_style.enum_values.values.id` - The allowed value id of the
     *   api style attribute associated with the ApiResource. Allowed
     *   comparison operator is `:`.
     *   * `api_style.enum_values.values.display_name` - The allowed value display
     *   name of the api style attribute associated with the ApiResource. Allowed
     *   comparison operator is `:`.
     * Expressions are combined with either `AND` logic operator or `OR` logical
     * operator but not both of them together i.e. only one of the `AND` or `OR`
     * operator can be used throughout the filter string and both the operators
     * cannot be used together. No other logical operators are supported. At most
     * three filter fields are allowed in the filter string and if provided
     * more than that then `INVALID_ARGUMENT` error is returned by the API.
     * Here are a few examples:
     *   * `owner.email = \"apihub&#64;google.com\"` -  - The owner team email is
     *   _apihub&#64;google.com_.
     *   * `owner.email = \"apihub&#64;google.com\" AND create_time <
     *   \"2021-08-15T14:50:00Z\" AND create_time > \"2021-08-10T12:00:00Z\"` -
     *   The owner team email is _apihub&#64;google.com_ and the api was created
     *   before _2021-08-15 14:50:00 UTC_ and after _2021-08-10 12:00:00 UTC_.
     *   * `owner.email = \"apihub&#64;google.com\" OR team.enum_values.values.id:
     *   apihub-team-id` - The filter string specifies the APIs where the owner
     *   team email is _apihub&#64;google.com_ or the id of the allowed value
     *   associated with the team attribute is _apihub-team-id_.
     *   * `owner.email = \"apihub&#64;google.com\" OR
     *   team.enum_values.values.display_name: ApiHub Team` - The filter string
     *   specifies the APIs where the owner team email is _apihub&#64;google.com_ or
     *   the display name of the allowed value associated with the team attribute
     *   is `ApiHub Team`.
     *
     * Generated from protobuf field <code>string filter = 2 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @param string $var
     * @return $this
     */
    public function setFilter($var)
    {
        GPBUtil::checkString($var, True);
        $this->filter = $var;

        return $this;
    }

    /**
     * Optional. The maximum number of API resources to return. The service may
     * return fewer than this value. If unspecified, at most 50 Apis will be
     * returned. The maximum value is 1000; values above 1000 will be coerced to
     * 1000.
     *
     * Generated from protobuf field <code>int32 page_size = 3 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return int
     */
    public function getPageSize()
    {
        return $this->page_size;
    }

    /**
     * Optional. The maximum number of API resources to return. The service may
     * return fewer than this value. If unspecified, at most 50 Apis will be
     * returned. The maximum value is 1000; values above 1000 will be coerced to
     * 1000.
     *
     * Generated from protobuf field <code>int32 page_size = 3 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @param int $var
     * @return $this
     */
    public function setPageSize($var)
    {
        GPBUtil::checkInt32($var);
        $this->page_size = $var;

        return $this;
    }

    /**
     * Optional. A page token, received from a previous `ListApis` call.
     * Provide this to retrieve the subsequent page.
     * When paginating, all other parameters (except page_size) provided to
     * `ListApis` must match the call that provided the page token.
     *
     * Generated from protobuf field <code>string page_token = 4 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return string
     */
    public function getPageToken()
    {
        return $this->page_token;
    }

    /**
     * Optional. A page token, received from a previous `ListApis` call.
     * Provide this to retrieve the subsequent page.
     * When paginating, all other parameters (except page_size) provided to
     * `ListApis` must match the call that provided the page token.
     *
     * Generated from protobuf field <code>string page_token = 4 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @param string $var
     * @return $this
     */
    public function setPageToken($var)
    {
        GPBUtil::checkString($var, True);
        $this->page_token = $var;

        return $this;
    }

}

