<?php

/*
 * Copyright 2014 Google Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */
namespace Matomo\Dependencies\GoogleAnalyticsImporter\Google\Service\Analytics;

class Experiment extends \Matomo\Dependencies\GoogleAnalyticsImporter\Google\Collection
{
    protected $collection_key = 'variations';
    /**
     * Account ID to which this experiment belongs. This field is read-only.
     *
     * @var string
     */
    public $accountId;
    /**
     * Time the experiment was created. This field is read-only.
     *
     * @var string
     */
    public $created;
    /**
     * Notes about this experiment.
     *
     * @var string
     */
    public $description;
    /**
     * If true, the end user will be able to edit the experiment via the Google
     * Analytics user interface.
     *
     * @var bool
     */
    public $editableInGaUi;
    /**
     * The ending time of the experiment (the time the status changed from RUNNING
     * to ENDED). This field is present only if the experiment has ended. This
     * field is read-only.
     *
     * @var string
     */
    public $endTime;
    /**
     * Boolean specifying whether to distribute traffic evenly across all
     * variations. If the value is False, content experiments follows the default
     * behavior of adjusting traffic dynamically based on variation performance.
     * Optional -- defaults to False. This field may not be changed for an
     * experiment whose status is ENDED.
     *
     * @var bool
     */
    public $equalWeighting;
    /**
     * Experiment ID. Required for patch and update. Disallowed for create.
     *
     * @var string
     */
    public $id;
    /**
     * Internal ID for the web property to which this experiment belongs. This
     * field is read-only.
     *
     * @var string
     */
    public $internalWebPropertyId;
    /**
     * Resource type for an Analytics experiment. This field is read-only.
     *
     * @var string
     */
    public $kind;
    /**
     * An integer number in [3, 90]. Specifies the minimum length of the
     * experiment. Can be changed for a running experiment. This field may not be
     * changed for an experiments whose status is ENDED.
     *
     * @var int
     */
    public $minimumExperimentLengthInDays;
    /**
     * Experiment name. This field may not be changed for an experiment whose
     * status is ENDED. This field is required when creating an experiment.
     *
     * @var string
     */
    public $name;
    /**
     * The metric that the experiment is optimizing. Valid values:
     * "ga:goal(n)Completions", "ga:adsenseAdsClicks", "ga:adsenseAdsViewed",
     * "ga:adsenseRevenue", "ga:bounces", "ga:pageviews", "ga:sessionDuration",
     * "ga:transactions", "ga:transactionRevenue". This field is required if
     * status is "RUNNING" and servingFramework is one of "REDIRECT" or "API".
     *
     * @var string
     */
    public $objectiveMetric;
    /**
     * Whether the objectiveMetric should be minimized or maximized. Possible
     * values: "MAXIMUM", "MINIMUM". Optional--defaults to "MAXIMUM". Cannot be
     * specified without objectiveMetric. Cannot be modified when status is
     * "RUNNING" or "ENDED".
     *
     * @var string
     */
    public $optimizationType;
    protected $parentLinkType = ExperimentParentLink::class;
    protected $parentLinkDataType = '';
    /**
     * View (Profile) ID to which this experiment belongs. This field is read-
     * only.
     *
     * @var string
     */
    public $profileId;
    /**
     * Why the experiment ended. Possible values: "STOPPED_BY_USER",
     * "WINNER_FOUND", "EXPERIMENT_EXPIRED", "ENDED_WITH_NO_WINNER",
     * "GOAL_OBJECTIVE_CHANGED". "ENDED_WITH_NO_WINNER" means that the experiment
     * didn't expire but no winner was projected to be found. If the experiment
     * status is changed via the API to ENDED this field is set to
     * STOPPED_BY_USER. This field is read-only.
     *
     * @var string
     */
    public $reasonExperimentEnded;
    /**
     * Boolean specifying whether variations URLS are rewritten to match those of
     * the original. This field may not be changed for an experiments whose status
     * is ENDED.
     *
     * @var bool
     */
    public $rewriteVariationUrlsAsOriginal;
    /**
     * Link for this experiment. This field is read-only.
     *
     * @var string
     */
    public $selfLink;
    /**
     * The framework used to serve the experiment variations and evaluate the
     * results. One of: - REDIRECT: Google Analytics redirects traffic to
     * different variation pages, reports the chosen variation and evaluates the
     * results. - API: Google Analytics chooses and reports the variation to serve
     * and evaluates the results; the caller is responsible for serving the
     * selected variation. - EXTERNAL: The variations will be served externally
     * and the chosen variation reported to Google Analytics. The caller is
     * responsible for serving the selected variation and evaluating the results.
     *
     * @var string
     */
    public $servingFramework;
    /**
     * The snippet of code to include on the control page(s). This field is read-
     * only.
     *
     * @var string
     */
    public $snippet;
    /**
     * The starting time of the experiment (the time the status changed from
     * READY_TO_RUN to RUNNING). This field is present only if the experiment has
     * started. This field is read-only.
     *
     * @var string
     */
    public $startTime;
    /**
     * Experiment status. Possible values: "DRAFT", "READY_TO_RUN", "RUNNING",
     * "ENDED". Experiments can be created in the "DRAFT", "READY_TO_RUN" or
     * "RUNNING" state. This field is required when creating an experiment.
     *
     * @var string
     */
    public $status;
    /**
     * A floating-point number in (0, 1]. Specifies the fraction of the traffic
     * that participates in the experiment. Can be changed for a running
     * experiment. This field may not be changed for an experiments whose status
     * is ENDED.
     *
     * @var 
     */
    public $trafficCoverage;
    /**
     * Time the experiment was last modified. This field is read-only.
     *
     * @var string
     */
    public $updated;
    protected $variationsType = ExperimentVariations::class;
    protected $variationsDataType = 'array';
    /**
     * Web property ID to which this experiment belongs. The web property ID is of
     * the form UA-XXXXX-YY. This field is read-only.
     *
     * @var string
     */
    public $webPropertyId;
    /**
     * A floating-point number in (0, 1). Specifies the necessary confidence level
     * to choose a winner. This field may not be changed for an experiments whose
     * status is ENDED.
     *
     * @var 
     */
    public $winnerConfidenceLevel;
    /**
     * Boolean specifying whether a winner has been found for this experiment.
     * This field is read-only.
     *
     * @var bool
     */
    public $winnerFound;
    /**
     * Account ID to which this experiment belongs. This field is read-only.
     *
     * @param string $accountId
     */
    public function setAccountId($accountId)
    {
        $this->accountId = $accountId;
    }
    /**
     * @return string
     */
    public function getAccountId()
    {
        return $this->accountId;
    }
    /**
     * Time the experiment was created. This field is read-only.
     *
     * @param string $created
     */
    public function setCreated($created)
    {
        $this->created = $created;
    }
    /**
     * @return string
     */
    public function getCreated()
    {
        return $this->created;
    }
    /**
     * Notes about this experiment.
     *
     * @param string $description
     */
    public function setDescription($description)
    {
        $this->description = $description;
    }
    /**
     * @return string
     */
    public function getDescription()
    {
        return $this->description;
    }
    /**
     * If true, the end user will be able to edit the experiment via the Google
     * Analytics user interface.
     *
     * @param bool $editableInGaUi
     */
    public function setEditableInGaUi($editableInGaUi)
    {
        $this->editableInGaUi = $editableInGaUi;
    }
    /**
     * @return bool
     */
    public function getEditableInGaUi()
    {
        return $this->editableInGaUi;
    }
    /**
     * The ending time of the experiment (the time the status changed from RUNNING
     * to ENDED). This field is present only if the experiment has ended. This
     * field is read-only.
     *
     * @param string $endTime
     */
    public function setEndTime($endTime)
    {
        $this->endTime = $endTime;
    }
    /**
     * @return string
     */
    public function getEndTime()
    {
        return $this->endTime;
    }
    /**
     * Boolean specifying whether to distribute traffic evenly across all
     * variations. If the value is False, content experiments follows the default
     * behavior of adjusting traffic dynamically based on variation performance.
     * Optional -- defaults to False. This field may not be changed for an
     * experiment whose status is ENDED.
     *
     * @param bool $equalWeighting
     */
    public function setEqualWeighting($equalWeighting)
    {
        $this->equalWeighting = $equalWeighting;
    }
    /**
     * @return bool
     */
    public function getEqualWeighting()
    {
        return $this->equalWeighting;
    }
    /**
     * Experiment ID. Required for patch and update. Disallowed for create.
     *
     * @param string $id
     */
    public function setId($id)
    {
        $this->id = $id;
    }
    /**
     * @return string
     */
    public function getId()
    {
        return $this->id;
    }
    /**
     * Internal ID for the web property to which this experiment belongs. This
     * field is read-only.
     *
     * @param string $internalWebPropertyId
     */
    public function setInternalWebPropertyId($internalWebPropertyId)
    {
        $this->internalWebPropertyId = $internalWebPropertyId;
    }
    /**
     * @return string
     */
    public function getInternalWebPropertyId()
    {
        return $this->internalWebPropertyId;
    }
    /**
     * Resource type for an Analytics experiment. This field is read-only.
     *
     * @param string $kind
     */
    public function setKind($kind)
    {
        $this->kind = $kind;
    }
    /**
     * @return string
     */
    public function getKind()
    {
        return $this->kind;
    }
    /**
     * An integer number in [3, 90]. Specifies the minimum length of the
     * experiment. Can be changed for a running experiment. This field may not be
     * changed for an experiments whose status is ENDED.
     *
     * @param int $minimumExperimentLengthInDays
     */
    public function setMinimumExperimentLengthInDays($minimumExperimentLengthInDays)
    {
        $this->minimumExperimentLengthInDays = $minimumExperimentLengthInDays;
    }
    /**
     * @return int
     */
    public function getMinimumExperimentLengthInDays()
    {
        return $this->minimumExperimentLengthInDays;
    }
    /**
     * Experiment name. This field may not be changed for an experiment whose
     * status is ENDED. This field is required when creating an experiment.
     *
     * @param string $name
     */
    public function setName($name)
    {
        $this->name = $name;
    }
    /**
     * @return string
     */
    public function getName()
    {
        return $this->name;
    }
    /**
     * The metric that the experiment is optimizing. Valid values:
     * "ga:goal(n)Completions", "ga:adsenseAdsClicks", "ga:adsenseAdsViewed",
     * "ga:adsenseRevenue", "ga:bounces", "ga:pageviews", "ga:sessionDuration",
     * "ga:transactions", "ga:transactionRevenue". This field is required if
     * status is "RUNNING" and servingFramework is one of "REDIRECT" or "API".
     *
     * @param string $objectiveMetric
     */
    public function setObjectiveMetric($objectiveMetric)
    {
        $this->objectiveMetric = $objectiveMetric;
    }
    /**
     * @return string
     */
    public function getObjectiveMetric()
    {
        return $this->objectiveMetric;
    }
    /**
     * Whether the objectiveMetric should be minimized or maximized. Possible
     * values: "MAXIMUM", "MINIMUM". Optional--defaults to "MAXIMUM". Cannot be
     * specified without objectiveMetric. Cannot be modified when status is
     * "RUNNING" or "ENDED".
     *
     * @param string $optimizationType
     */
    public function setOptimizationType($optimizationType)
    {
        $this->optimizationType = $optimizationType;
    }
    /**
     * @return string
     */
    public function getOptimizationType()
    {
        return $this->optimizationType;
    }
    /**
     * Parent link for an experiment. Points to the view (profile) to which this
     * experiment belongs.
     *
     * @param ExperimentParentLink $parentLink
     */
    public function setParentLink(ExperimentParentLink $parentLink)
    {
        $this->parentLink = $parentLink;
    }
    /**
     * @return ExperimentParentLink
     */
    public function getParentLink()
    {
        return $this->parentLink;
    }
    /**
     * View (Profile) ID to which this experiment belongs. This field is read-
     * only.
     *
     * @param string $profileId
     */
    public function setProfileId($profileId)
    {
        $this->profileId = $profileId;
    }
    /**
     * @return string
     */
    public function getProfileId()
    {
        return $this->profileId;
    }
    /**
     * Why the experiment ended. Possible values: "STOPPED_BY_USER",
     * "WINNER_FOUND", "EXPERIMENT_EXPIRED", "ENDED_WITH_NO_WINNER",
     * "GOAL_OBJECTIVE_CHANGED". "ENDED_WITH_NO_WINNER" means that the experiment
     * didn't expire but no winner was projected to be found. If the experiment
     * status is changed via the API to ENDED this field is set to
     * STOPPED_BY_USER. This field is read-only.
     *
     * @param string $reasonExperimentEnded
     */
    public function setReasonExperimentEnded($reasonExperimentEnded)
    {
        $this->reasonExperimentEnded = $reasonExperimentEnded;
    }
    /**
     * @return string
     */
    public function getReasonExperimentEnded()
    {
        return $this->reasonExperimentEnded;
    }
    /**
     * Boolean specifying whether variations URLS are rewritten to match those of
     * the original. This field may not be changed for an experiments whose status
     * is ENDED.
     *
     * @param bool $rewriteVariationUrlsAsOriginal
     */
    public function setRewriteVariationUrlsAsOriginal($rewriteVariationUrlsAsOriginal)
    {
        $this->rewriteVariationUrlsAsOriginal = $rewriteVariationUrlsAsOriginal;
    }
    /**
     * @return bool
     */
    public function getRewriteVariationUrlsAsOriginal()
    {
        return $this->rewriteVariationUrlsAsOriginal;
    }
    /**
     * Link for this experiment. This field is read-only.
     *
     * @param string $selfLink
     */
    public function setSelfLink($selfLink)
    {
        $this->selfLink = $selfLink;
    }
    /**
     * @return string
     */
    public function getSelfLink()
    {
        return $this->selfLink;
    }
    /**
     * The framework used to serve the experiment variations and evaluate the
     * results. One of: - REDIRECT: Google Analytics redirects traffic to
     * different variation pages, reports the chosen variation and evaluates the
     * results. - API: Google Analytics chooses and reports the variation to serve
     * and evaluates the results; the caller is responsible for serving the
     * selected variation. - EXTERNAL: The variations will be served externally
     * and the chosen variation reported to Google Analytics. The caller is
     * responsible for serving the selected variation and evaluating the results.
     *
     * @param string $servingFramework
     */
    public function setServingFramework($servingFramework)
    {
        $this->servingFramework = $servingFramework;
    }
    /**
     * @return string
     */
    public function getServingFramework()
    {
        return $this->servingFramework;
    }
    /**
     * The snippet of code to include on the control page(s). This field is read-
     * only.
     *
     * @param string $snippet
     */
    public function setSnippet($snippet)
    {
        $this->snippet = $snippet;
    }
    /**
     * @return string
     */
    public function getSnippet()
    {
        return $this->snippet;
    }
    /**
     * The starting time of the experiment (the time the status changed from
     * READY_TO_RUN to RUNNING). This field is present only if the experiment has
     * started. This field is read-only.
     *
     * @param string $startTime
     */
    public function setStartTime($startTime)
    {
        $this->startTime = $startTime;
    }
    /**
     * @return string
     */
    public function getStartTime()
    {
        return $this->startTime;
    }
    /**
     * Experiment status. Possible values: "DRAFT", "READY_TO_RUN", "RUNNING",
     * "ENDED". Experiments can be created in the "DRAFT", "READY_TO_RUN" or
     * "RUNNING" state. This field is required when creating an experiment.
     *
     * @param string $status
     */
    public function setStatus($status)
    {
        $this->status = $status;
    }
    /**
     * @return string
     */
    public function getStatus()
    {
        return $this->status;
    }
    public function setTrafficCoverage($trafficCoverage)
    {
        $this->trafficCoverage = $trafficCoverage;
    }
    public function getTrafficCoverage()
    {
        return $this->trafficCoverage;
    }
    /**
     * Time the experiment was last modified. This field is read-only.
     *
     * @param string $updated
     */
    public function setUpdated($updated)
    {
        $this->updated = $updated;
    }
    /**
     * @return string
     */
    public function getUpdated()
    {
        return $this->updated;
    }
    /**
     * Array of variations. The first variation in the array is the original. The
     * number of variations may not change once an experiment is in the RUNNING
     * state. At least two variations are required before status can be set to
     * RUNNING.
     *
     * @param ExperimentVariations[] $variations
     */
    public function setVariations($variations)
    {
        $this->variations = $variations;
    }
    /**
     * @return ExperimentVariations[]
     */
    public function getVariations()
    {
        return $this->variations;
    }
    /**
     * Web property ID to which this experiment belongs. The web property ID is of
     * the form UA-XXXXX-YY. This field is read-only.
     *
     * @param string $webPropertyId
     */
    public function setWebPropertyId($webPropertyId)
    {
        $this->webPropertyId = $webPropertyId;
    }
    /**
     * @return string
     */
    public function getWebPropertyId()
    {
        return $this->webPropertyId;
    }
    public function setWinnerConfidenceLevel($winnerConfidenceLevel)
    {
        $this->winnerConfidenceLevel = $winnerConfidenceLevel;
    }
    public function getWinnerConfidenceLevel()
    {
        return $this->winnerConfidenceLevel;
    }
    /**
     * Boolean specifying whether a winner has been found for this experiment.
     * This field is read-only.
     *
     * @param bool $winnerFound
     */
    public function setWinnerFound($winnerFound)
    {
        $this->winnerFound = $winnerFound;
    }
    /**
     * @return bool
     */
    public function getWinnerFound()
    {
        return $this->winnerFound;
    }
}
// Adding a class alias for backwards compatibility with the previous class name.
class_alias(Experiment::class, 'Matomo\\Dependencies\\GoogleAnalyticsImporter\\Google_Service_Analytics_Experiment');
