<?php
# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: google/analytics/data/v1beta/data.proto

namespace Google\Analytics\Data\V1beta;

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

/**
 * Response's metadata carrying additional information about the report content.
 *
 * Generated from protobuf message <code>google.analytics.data.v1beta.ResponseMetaData</code>
 */
class ResponseMetaData extends \Google\Protobuf\Internal\Message
{
    /**
     * If true, indicates some buckets of dimension combinations are rolled into
     * "(other)" row. This can happen for high cardinality reports.
     * The metadata parameter dataLossFromOtherRow is populated based on the
     * aggregated data table used in the report. The parameter will be accurately
     * populated regardless of the filters and limits in the report.
     * For example, the (other) row could be dropped from the report because the
     * request contains a filter on sessionSource = google. This parameter will
     * still be populated if data loss from other row was present in the input
     * aggregate data used to generate this report.
     * To learn more, see [About the (other) row and data
     * sampling](https://support.google.com/analytics/answer/13208658#reports).
     *
     * Generated from protobuf field <code>bool data_loss_from_other_row = 3;</code>
     */
    private $data_loss_from_other_row = false;
    /**
     * Describes the schema restrictions actively enforced in creating this
     * report. To learn more, see [Access and data-restriction
     * management](https://support.google.com/analytics/answer/10851388).
     *
     * Generated from protobuf field <code>optional .google.analytics.data.v1beta.ResponseMetaData.SchemaRestrictionResponse schema_restriction_response = 4;</code>
     */
    private $schema_restriction_response = null;
    /**
     * The currency code used in this report. Intended to be used in formatting
     * currency metrics like `purchaseRevenue` for visualization. If currency_code
     * was specified in the request, this response parameter will echo the request
     * parameter; otherwise, this response parameter is the property's current
     * currency_code.
     * Currency codes are string encodings of currency types from the ISO 4217
     * standard (https://en.wikipedia.org/wiki/ISO_4217); for example "USD",
     * "EUR", "JPY". To learn more, see
     * https://support.google.com/analytics/answer/9796179.
     *
     * Generated from protobuf field <code>optional string currency_code = 5;</code>
     */
    private $currency_code = null;
    /**
     * The property's current timezone. Intended to be used to interpret
     * time-based dimensions like `hour` and `minute`. Formatted as strings from
     * the IANA Time Zone database (https://www.iana.org/time-zones); for example
     * "America/New_York" or "Asia/Tokyo".
     *
     * Generated from protobuf field <code>optional string time_zone = 6;</code>
     */
    private $time_zone = null;
    /**
     * If empty reason is specified, the report is empty for this reason.
     *
     * Generated from protobuf field <code>optional string empty_reason = 7;</code>
     */
    private $empty_reason = null;
    /**
     * If `subjectToThresholding` is true, this report is subject to thresholding
     * and only returns data that meets the minimum aggregation thresholds. It is
     * possible for a request to be subject to thresholding thresholding and no
     * data is absent from the report, and this happens when all data is above the
     * thresholds. To learn more, see [Data
     * thresholds](https://support.google.com/analytics/answer/9383630).
     *
     * Generated from protobuf field <code>optional bool subject_to_thresholding = 8;</code>
     */
    private $subject_to_thresholding = null;
    /**
     * If this report results is
     * [sampled](https://support.google.com/analytics/answer/13331292), this
     * describes the percentage of events used in this report. One
     * `samplingMetadatas` is populated for each date range. Each
     * `samplingMetadatas` corresponds to a date range in order that date ranges
     * were specified in the request.
     * However if the results are not sampled, this field will not be defined.
     *
     * Generated from protobuf field <code>repeated .google.analytics.data.v1beta.SamplingMetadata sampling_metadatas = 9;</code>
     */
    private $sampling_metadatas;

    /**
     * Constructor.
     *
     * @param array $data {
     *     Optional. Data for populating the Message object.
     *
     *     @type bool $data_loss_from_other_row
     *           If true, indicates some buckets of dimension combinations are rolled into
     *           "(other)" row. This can happen for high cardinality reports.
     *           The metadata parameter dataLossFromOtherRow is populated based on the
     *           aggregated data table used in the report. The parameter will be accurately
     *           populated regardless of the filters and limits in the report.
     *           For example, the (other) row could be dropped from the report because the
     *           request contains a filter on sessionSource = google. This parameter will
     *           still be populated if data loss from other row was present in the input
     *           aggregate data used to generate this report.
     *           To learn more, see [About the (other) row and data
     *           sampling](https://support.google.com/analytics/answer/13208658#reports).
     *     @type \Google\Analytics\Data\V1beta\ResponseMetaData\SchemaRestrictionResponse $schema_restriction_response
     *           Describes the schema restrictions actively enforced in creating this
     *           report. To learn more, see [Access and data-restriction
     *           management](https://support.google.com/analytics/answer/10851388).
     *     @type string $currency_code
     *           The currency code used in this report. Intended to be used in formatting
     *           currency metrics like `purchaseRevenue` for visualization. If currency_code
     *           was specified in the request, this response parameter will echo the request
     *           parameter; otherwise, this response parameter is the property's current
     *           currency_code.
     *           Currency codes are string encodings of currency types from the ISO 4217
     *           standard (https://en.wikipedia.org/wiki/ISO_4217); for example "USD",
     *           "EUR", "JPY". To learn more, see
     *           https://support.google.com/analytics/answer/9796179.
     *     @type string $time_zone
     *           The property's current timezone. Intended to be used to interpret
     *           time-based dimensions like `hour` and `minute`. Formatted as strings from
     *           the IANA Time Zone database (https://www.iana.org/time-zones); for example
     *           "America/New_York" or "Asia/Tokyo".
     *     @type string $empty_reason
     *           If empty reason is specified, the report is empty for this reason.
     *     @type bool $subject_to_thresholding
     *           If `subjectToThresholding` is true, this report is subject to thresholding
     *           and only returns data that meets the minimum aggregation thresholds. It is
     *           possible for a request to be subject to thresholding thresholding and no
     *           data is absent from the report, and this happens when all data is above the
     *           thresholds. To learn more, see [Data
     *           thresholds](https://support.google.com/analytics/answer/9383630).
     *     @type array<\Google\Analytics\Data\V1beta\SamplingMetadata>|\Google\Protobuf\Internal\RepeatedField $sampling_metadatas
     *           If this report results is
     *           [sampled](https://support.google.com/analytics/answer/13331292), this
     *           describes the percentage of events used in this report. One
     *           `samplingMetadatas` is populated for each date range. Each
     *           `samplingMetadatas` corresponds to a date range in order that date ranges
     *           were specified in the request.
     *           However if the results are not sampled, this field will not be defined.
     * }
     */
    public function __construct($data = NULL) {
        \GPBMetadata\Google\Analytics\Data\V1Beta\Data::initOnce();
        parent::__construct($data);
    }

    /**
     * If true, indicates some buckets of dimension combinations are rolled into
     * "(other)" row. This can happen for high cardinality reports.
     * The metadata parameter dataLossFromOtherRow is populated based on the
     * aggregated data table used in the report. The parameter will be accurately
     * populated regardless of the filters and limits in the report.
     * For example, the (other) row could be dropped from the report because the
     * request contains a filter on sessionSource = google. This parameter will
     * still be populated if data loss from other row was present in the input
     * aggregate data used to generate this report.
     * To learn more, see [About the (other) row and data
     * sampling](https://support.google.com/analytics/answer/13208658#reports).
     *
     * Generated from protobuf field <code>bool data_loss_from_other_row = 3;</code>
     * @return bool
     */
    public function getDataLossFromOtherRow()
    {
        return $this->data_loss_from_other_row;
    }

    /**
     * If true, indicates some buckets of dimension combinations are rolled into
     * "(other)" row. This can happen for high cardinality reports.
     * The metadata parameter dataLossFromOtherRow is populated based on the
     * aggregated data table used in the report. The parameter will be accurately
     * populated regardless of the filters and limits in the report.
     * For example, the (other) row could be dropped from the report because the
     * request contains a filter on sessionSource = google. This parameter will
     * still be populated if data loss from other row was present in the input
     * aggregate data used to generate this report.
     * To learn more, see [About the (other) row and data
     * sampling](https://support.google.com/analytics/answer/13208658#reports).
     *
     * Generated from protobuf field <code>bool data_loss_from_other_row = 3;</code>
     * @param bool $var
     * @return $this
     */
    public function setDataLossFromOtherRow($var)
    {
        GPBUtil::checkBool($var);
        $this->data_loss_from_other_row = $var;

        return $this;
    }

    /**
     * Describes the schema restrictions actively enforced in creating this
     * report. To learn more, see [Access and data-restriction
     * management](https://support.google.com/analytics/answer/10851388).
     *
     * Generated from protobuf field <code>optional .google.analytics.data.v1beta.ResponseMetaData.SchemaRestrictionResponse schema_restriction_response = 4;</code>
     * @return \Google\Analytics\Data\V1beta\ResponseMetaData\SchemaRestrictionResponse|null
     */
    public function getSchemaRestrictionResponse()
    {
        return $this->schema_restriction_response;
    }

    public function hasSchemaRestrictionResponse()
    {
        return isset($this->schema_restriction_response);
    }

    public function clearSchemaRestrictionResponse()
    {
        unset($this->schema_restriction_response);
    }

    /**
     * Describes the schema restrictions actively enforced in creating this
     * report. To learn more, see [Access and data-restriction
     * management](https://support.google.com/analytics/answer/10851388).
     *
     * Generated from protobuf field <code>optional .google.analytics.data.v1beta.ResponseMetaData.SchemaRestrictionResponse schema_restriction_response = 4;</code>
     * @param \Google\Analytics\Data\V1beta\ResponseMetaData\SchemaRestrictionResponse $var
     * @return $this
     */
    public function setSchemaRestrictionResponse($var)
    {
        GPBUtil::checkMessage($var, \Google\Analytics\Data\V1beta\ResponseMetaData\SchemaRestrictionResponse::class);
        $this->schema_restriction_response = $var;

        return $this;
    }

    /**
     * The currency code used in this report. Intended to be used in formatting
     * currency metrics like `purchaseRevenue` for visualization. If currency_code
     * was specified in the request, this response parameter will echo the request
     * parameter; otherwise, this response parameter is the property's current
     * currency_code.
     * Currency codes are string encodings of currency types from the ISO 4217
     * standard (https://en.wikipedia.org/wiki/ISO_4217); for example "USD",
     * "EUR", "JPY". To learn more, see
     * https://support.google.com/analytics/answer/9796179.
     *
     * Generated from protobuf field <code>optional string currency_code = 5;</code>
     * @return string
     */
    public function getCurrencyCode()
    {
        return isset($this->currency_code) ? $this->currency_code : '';
    }

    public function hasCurrencyCode()
    {
        return isset($this->currency_code);
    }

    public function clearCurrencyCode()
    {
        unset($this->currency_code);
    }

    /**
     * The currency code used in this report. Intended to be used in formatting
     * currency metrics like `purchaseRevenue` for visualization. If currency_code
     * was specified in the request, this response parameter will echo the request
     * parameter; otherwise, this response parameter is the property's current
     * currency_code.
     * Currency codes are string encodings of currency types from the ISO 4217
     * standard (https://en.wikipedia.org/wiki/ISO_4217); for example "USD",
     * "EUR", "JPY". To learn more, see
     * https://support.google.com/analytics/answer/9796179.
     *
     * Generated from protobuf field <code>optional string currency_code = 5;</code>
     * @param string $var
     * @return $this
     */
    public function setCurrencyCode($var)
    {
        GPBUtil::checkString($var, True);
        $this->currency_code = $var;

        return $this;
    }

    /**
     * The property's current timezone. Intended to be used to interpret
     * time-based dimensions like `hour` and `minute`. Formatted as strings from
     * the IANA Time Zone database (https://www.iana.org/time-zones); for example
     * "America/New_York" or "Asia/Tokyo".
     *
     * Generated from protobuf field <code>optional string time_zone = 6;</code>
     * @return string
     */
    public function getTimeZone()
    {
        return isset($this->time_zone) ? $this->time_zone : '';
    }

    public function hasTimeZone()
    {
        return isset($this->time_zone);
    }

    public function clearTimeZone()
    {
        unset($this->time_zone);
    }

    /**
     * The property's current timezone. Intended to be used to interpret
     * time-based dimensions like `hour` and `minute`. Formatted as strings from
     * the IANA Time Zone database (https://www.iana.org/time-zones); for example
     * "America/New_York" or "Asia/Tokyo".
     *
     * Generated from protobuf field <code>optional string time_zone = 6;</code>
     * @param string $var
     * @return $this
     */
    public function setTimeZone($var)
    {
        GPBUtil::checkString($var, True);
        $this->time_zone = $var;

        return $this;
    }

    /**
     * If empty reason is specified, the report is empty for this reason.
     *
     * Generated from protobuf field <code>optional string empty_reason = 7;</code>
     * @return string
     */
    public function getEmptyReason()
    {
        return isset($this->empty_reason) ? $this->empty_reason : '';
    }

    public function hasEmptyReason()
    {
        return isset($this->empty_reason);
    }

    public function clearEmptyReason()
    {
        unset($this->empty_reason);
    }

    /**
     * If empty reason is specified, the report is empty for this reason.
     *
     * Generated from protobuf field <code>optional string empty_reason = 7;</code>
     * @param string $var
     * @return $this
     */
    public function setEmptyReason($var)
    {
        GPBUtil::checkString($var, True);
        $this->empty_reason = $var;

        return $this;
    }

    /**
     * If `subjectToThresholding` is true, this report is subject to thresholding
     * and only returns data that meets the minimum aggregation thresholds. It is
     * possible for a request to be subject to thresholding thresholding and no
     * data is absent from the report, and this happens when all data is above the
     * thresholds. To learn more, see [Data
     * thresholds](https://support.google.com/analytics/answer/9383630).
     *
     * Generated from protobuf field <code>optional bool subject_to_thresholding = 8;</code>
     * @return bool
     */
    public function getSubjectToThresholding()
    {
        return isset($this->subject_to_thresholding) ? $this->subject_to_thresholding : false;
    }

    public function hasSubjectToThresholding()
    {
        return isset($this->subject_to_thresholding);
    }

    public function clearSubjectToThresholding()
    {
        unset($this->subject_to_thresholding);
    }

    /**
     * If `subjectToThresholding` is true, this report is subject to thresholding
     * and only returns data that meets the minimum aggregation thresholds. It is
     * possible for a request to be subject to thresholding thresholding and no
     * data is absent from the report, and this happens when all data is above the
     * thresholds. To learn more, see [Data
     * thresholds](https://support.google.com/analytics/answer/9383630).
     *
     * Generated from protobuf field <code>optional bool subject_to_thresholding = 8;</code>
     * @param bool $var
     * @return $this
     */
    public function setSubjectToThresholding($var)
    {
        GPBUtil::checkBool($var);
        $this->subject_to_thresholding = $var;

        return $this;
    }

    /**
     * If this report results is
     * [sampled](https://support.google.com/analytics/answer/13331292), this
     * describes the percentage of events used in this report. One
     * `samplingMetadatas` is populated for each date range. Each
     * `samplingMetadatas` corresponds to a date range in order that date ranges
     * were specified in the request.
     * However if the results are not sampled, this field will not be defined.
     *
     * Generated from protobuf field <code>repeated .google.analytics.data.v1beta.SamplingMetadata sampling_metadatas = 9;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getSamplingMetadatas()
    {
        return $this->sampling_metadatas;
    }

    /**
     * If this report results is
     * [sampled](https://support.google.com/analytics/answer/13331292), this
     * describes the percentage of events used in this report. One
     * `samplingMetadatas` is populated for each date range. Each
     * `samplingMetadatas` corresponds to a date range in order that date ranges
     * were specified in the request.
     * However if the results are not sampled, this field will not be defined.
     *
     * Generated from protobuf field <code>repeated .google.analytics.data.v1beta.SamplingMetadata sampling_metadatas = 9;</code>
     * @param array<\Google\Analytics\Data\V1beta\SamplingMetadata>|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setSamplingMetadatas($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Analytics\Data\V1beta\SamplingMetadata::class);
        $this->sampling_metadatas = $arr;

        return $this;
    }

}

