Skip to content

Commit

Permalink
feat(specs): add estimate path and responses [skip-bc] (generated)
Browse files Browse the repository at this point in the history
algolia/api-clients-automation#4057

Co-authored-by: algolia-bot <accounts+algolia-api-client-bot@algolia.com>
Co-authored-by: Christopher Hawke <69921547+cdhawke@users.noreply.github.com>
Co-authored-by: Pierre Millot <pierre.millot@algolia.com>
  • Loading branch information
3 people committed Nov 7, 2024
1 parent 0c5e91d commit d7e0c41
Show file tree
Hide file tree
Showing 6 changed files with 912 additions and 20 deletions.
34 changes: 34 additions & 0 deletions lib/Api/AbtestingClient.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
use Algolia\AlgoliaSearch\Algolia;
use Algolia\AlgoliaSearch\Configuration\AbtestingConfig;
use Algolia\AlgoliaSearch\Model\Abtesting\AddABTestsRequest;
use Algolia\AlgoliaSearch\Model\Abtesting\EstimateABTestRequest;
use Algolia\AlgoliaSearch\Model\Abtesting\ScheduleABTestsRequest;
use Algolia\AlgoliaSearch\ObjectSerializer;
use Algolia\AlgoliaSearch\RetryStrategy\ApiWrapper;
Expand Down Expand Up @@ -338,6 +339,39 @@ public function deleteABTest($id, $requestOptions = [])
return $this->sendRequest('DELETE', $resourcePath, $headers, $queryParameters, $httpBody, $requestOptions);
}

/**
* Given the traffic percentage and the expected effect size, this endpoint estimates the sample size and duration of an A/B test based on historical traffic.
*
* Required API Key ACLs:
* - analytics
*
* @param array $estimateABTestRequest estimateABTestRequest (required)
* - $estimateABTestRequest['configuration'] => (array) (required)
* - $estimateABTestRequest['variants'] => (array) A/B test variants. (required)
*
* @see EstimateABTestRequest
*
* @param array $requestOptions the requestOptions to send along with the query, they will be merged with the transporter requestOptions
*
* @return \Algolia\AlgoliaSearch\Model\Abtesting\EstimateABTestResponse|array<string, mixed>
*/
public function estimateABTest($estimateABTestRequest, $requestOptions = [])
{
// verify the required parameter 'estimateABTestRequest' is set
if (!isset($estimateABTestRequest)) {
throw new \InvalidArgumentException(
'Parameter `estimateABTestRequest` is required when calling `estimateABTest`.'
);
}

$resourcePath = '/2/abtests/estimate';
$queryParameters = [];
$headers = [];
$httpBody = $estimateABTestRequest;

return $this->sendRequest('POST', $resourcePath, $headers, $queryParameters, $httpBody, $requestOptions);
}

/**
* Retrieves the details for an A/B test by its ID.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@
namespace Algolia\AlgoliaSearch\Model\Abtesting;

/**
* Effect Class Doc Comment.
* EffectMetric Class Doc Comment.
*
* @category Class
*
* @description Metric for which you want to detect the smallest relative difference.
*/
class Effect
class EffectMetric
{
/**
* Possible values of this enum.
Expand Down
265 changes: 265 additions & 0 deletions lib/Model/Abtesting/EstimateABTestRequest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,265 @@
<?php

// Code generated by OpenAPI Generator (https://openapi-generator.tech), manual changes will be lost - read more on https://github.com/algolia/api-clients-automation. DO NOT EDIT.

namespace Algolia\AlgoliaSearch\Model\Abtesting;

use Algolia\AlgoliaSearch\Model\AbstractModel;
use Algolia\AlgoliaSearch\Model\ModelInterface;

/**
* EstimateABTestRequest Class Doc Comment.
*
* @category Class
*/
class EstimateABTestRequest extends AbstractModel implements ModelInterface, \ArrayAccess, \JsonSerializable
{
/**
* Array of property to type mappings. Used for (de)serialization.
*
* @var string[]
*/
protected static $modelTypes = [
'configuration' => '\Algolia\AlgoliaSearch\Model\Abtesting\EstimateConfiguration',
'variants' => '\Algolia\AlgoliaSearch\Model\Abtesting\AddABTestsVariant[]',
];

/**
* Array of property to format mappings. Used for (de)serialization.
*
* @var string[]
*/
protected static $modelFormats = [
'configuration' => null,
'variants' => null,
];

/**
* Array of attributes where the key is the local name,
* and the value is the original name.
*
* @var string[]
*/
protected static $attributeMap = [
'configuration' => 'configuration',
'variants' => 'variants',
];

/**
* Array of attributes to setter functions (for deserialization of responses).
*
* @var string[]
*/
protected static $setters = [
'configuration' => 'setConfiguration',
'variants' => 'setVariants',
];

/**
* Array of attributes to getter functions (for serialization of requests).
*
* @var string[]
*/
protected static $getters = [
'configuration' => 'getConfiguration',
'variants' => 'getVariants',
];

/**
* Associative array for storing property values.
*
* @var mixed[]
*/
protected $container = [];

/**
* Constructor.
*
* @param mixed[] $data Associated array of property values
*/
public function __construct(?array $data = null)
{
if (isset($data['configuration'])) {
$this->container['configuration'] = $data['configuration'];
}
if (isset($data['variants'])) {
$this->container['variants'] = $data['variants'];
}
}

/**
* Array of attributes where the key is the local name,
* and the value is the original name.
*
* @return array
*/
public static function attributeMap()
{
return self::$attributeMap;
}

/**
* Array of property to type mappings. Used for (de)serialization.
*
* @return array
*/
public static function modelTypes()
{
return self::$modelTypes;
}

/**
* Array of property to format mappings. Used for (de)serialization.
*
* @return array
*/
public static function modelFormats()
{
return self::$modelFormats;
}

/**
* Array of attributes to setter functions (for deserialization of responses).
*
* @return array
*/
public static function setters()
{
return self::$setters;
}

/**
* Array of attributes to getter functions (for serialization of requests).
*
* @return array
*/
public static function getters()
{
return self::$getters;
}

/**
* Show all the invalid properties with reasons.
*
* @return array invalid properties with reasons
*/
public function listInvalidProperties()
{
$invalidProperties = [];

if (!isset($this->container['configuration']) || null === $this->container['configuration']) {
$invalidProperties[] = "'configuration' can't be null";
}
if (!isset($this->container['variants']) || null === $this->container['variants']) {
$invalidProperties[] = "'variants' can't be null";
}

return $invalidProperties;
}

/**
* Validate all the properties in the model
* return true if all passed.
*
* @return bool True if all properties are valid
*/
public function valid()
{
return 0 === count($this->listInvalidProperties());
}

/**
* Gets configuration.
*
* @return EstimateConfiguration
*/
public function getConfiguration()
{
return $this->container['configuration'] ?? null;
}

/**
* Sets configuration.
*
* @param EstimateConfiguration $configuration configuration
*
* @return self
*/
public function setConfiguration($configuration)
{
$this->container['configuration'] = $configuration;

return $this;
}

/**
* Gets variants.
*
* @return \Algolia\AlgoliaSearch\Model\Abtesting\AddABTestsVariant[]
*/
public function getVariants()
{
return $this->container['variants'] ?? null;
}

/**
* Sets variants.
*
* @param \Algolia\AlgoliaSearch\Model\Abtesting\AddABTestsVariant[] $variants A/B test variants
*
* @return self
*/
public function setVariants($variants)
{
$this->container['variants'] = $variants;

return $this;
}

/**
* Returns true if offset exists. False otherwise.
*
* @param int $offset Offset
*/
public function offsetExists($offset): bool
{
return isset($this->container[$offset]);
}

/**
* Gets offset.
*
* @param int $offset Offset
*
* @return null|mixed
*/
public function offsetGet($offset): mixed
{
return $this->container[$offset] ?? null;
}

/**
* Sets value based on offset.
*
* @param null|int $offset Offset
* @param mixed $value Value to be set
*/
public function offsetSet($offset, $value): void
{
if (is_null($offset)) {
$this->container[] = $value;
} else {
$this->container[$offset] = $value;
}
}

/**
* Unsets offset.
*
* @param int $offset Offset
*/
public function offsetUnset($offset): void
{
unset($this->container[$offset]);
}
}
Loading

0 comments on commit d7e0c41

Please sign in to comment.