Skip to content

Commit

Permalink
feat(specs): add /schedule endpoint (generated)
Browse files Browse the repository at this point in the history
algolia/api-clients-automation#3350

Co-authored-by: algolia-bot <accounts+algolia-api-client-bot@algolia.com>
Co-authored-by: Fernando Beck <fe.beck25@gmail.com>
Co-authored-by: Pierre Millot <pierre.millot@algolia.com>
  • Loading branch information
3 people committed Aug 20, 2024
1 parent 49c0ad7 commit 3817b9e
Show file tree
Hide file tree
Showing 3 changed files with 617 additions and 0 deletions.
36 changes: 36 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\ScheduleABTestsRequest;
use Algolia\AlgoliaSearch\ObjectSerializer;
use Algolia\AlgoliaSearch\RetryStrategy\ApiWrapper;
use Algolia\AlgoliaSearch\RetryStrategy\ApiWrapperInterface;
Expand Down Expand Up @@ -408,6 +409,41 @@ public function listABTests($offset = null, $limit = null, $indexPrefix = null,
return $this->sendRequest('GET', $resourcePath, $headers, $queryParameters, $httpBody, $requestOptions);
}

/**
* Schedule an A/B test to be started at a later time.
*
* Required API Key ACLs:
* - editSettings
*
* @param array $scheduleABTestsRequest scheduleABTestsRequest (required)
* - $scheduleABTestsRequest['name'] => (string) A/B test name. (required)
* - $scheduleABTestsRequest['variants'] => (array) A/B test variants. (required)
* - $scheduleABTestsRequest['scheduledAt'] => (string) Date and time when the A/B test is scheduled to start, in RFC 3339 format. (required)
* - $scheduleABTestsRequest['endAt'] => (string) End date and time of the A/B test, in RFC 3339 format. (required)
*
* @see ScheduleABTestsRequest
*
* @param array $requestOptions the requestOptions to send along with the query, they will be merged with the transporter requestOptions
*
* @return \Algolia\AlgoliaSearch\Model\Abtesting\ScheduleABTestResponse|array<string, mixed>
*/
public function scheduleABTest($scheduleABTestsRequest, $requestOptions = [])
{
// verify the required parameter 'scheduleABTestsRequest' is set
if (!isset($scheduleABTestsRequest)) {
throw new \InvalidArgumentException(
'Parameter `scheduleABTestsRequest` is required when calling `scheduleABTest`.'
);
}

$resourcePath = '/2/abtests/schedule';
$queryParameters = [];
$headers = [];
$httpBody = $scheduleABTestsRequest;

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

/**
* Stops an A/B test by its ID. You can't restart stopped A/B tests.
*
Expand Down
231 changes: 231 additions & 0 deletions lib/Model/Abtesting/ScheduleABTestResponse.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,231 @@
<?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;

/**
* ScheduleABTestResponse Class Doc Comment.
*
* @category Class
*/
class ScheduleABTestResponse extends AbstractModel implements ModelInterface, \ArrayAccess, \JsonSerializable
{
/**
* Array of property to type mappings. Used for (de)serialization.
*
* @var string[]
*/
protected static $modelTypes = [
'abTestScheduleID' => 'int',
];

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

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

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

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

/**
* 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['abTestScheduleID'])) {
$this->container['abTestScheduleID'] = $data['abTestScheduleID'];
}
}

/**
* 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['abTestScheduleID']) || null === $this->container['abTestScheduleID']) {
$invalidProperties[] = "'abTestScheduleID' 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 abTestScheduleID.
*
* @return int
*/
public function getAbTestScheduleID()
{
return $this->container['abTestScheduleID'] ?? null;
}

/**
* Sets abTestScheduleID.
*
* @param int $abTestScheduleID unique scheduled A/B test identifier
*
* @return self
*/
public function setAbTestScheduleID($abTestScheduleID)
{
$this->container['abTestScheduleID'] = $abTestScheduleID;

return $this;
}

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

/**
* Gets offset.
*
* @param int $offset Offset
*
* @return null|mixed
*/
public function offsetGet($offset)
{
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)
{
if (is_null($offset)) {
$this->container[] = $value;
} else {
$this->container[$offset] = $value;
}
}

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

0 comments on commit 3817b9e

Please sign in to comment.