@teemill/split-tests 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,41 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ /**
4
+ * Split Tests
5
+ * Inspect split test definitions and performance results.
6
+ *
7
+ * The version of the OpenAPI document: 1.0.0
8
+ *
9
+ *
10
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
11
+ * https://openapi-generator.tech
12
+ * Do not edit the class manually.
13
+ */
14
+ import globalAxios from 'axios';
15
+ export const BASE_PATH = "https://api.localhost:8080".replace(/\/+$/, "");
16
+ export const COLLECTION_FORMATS = {
17
+ csv: ",",
18
+ ssv: " ",
19
+ tsv: "\t",
20
+ pipes: "|",
21
+ };
22
+ export class BaseAPI {
23
+ constructor(configuration, basePath = BASE_PATH, axios = globalAxios) {
24
+ var _a;
25
+ this.basePath = basePath;
26
+ this.axios = axios;
27
+ if (configuration) {
28
+ this.configuration = configuration;
29
+ this.basePath = (_a = configuration.basePath) !== null && _a !== void 0 ? _a : basePath;
30
+ }
31
+ }
32
+ }
33
+ ;
34
+ export class RequiredError extends Error {
35
+ constructor(field, msg) {
36
+ super(msg);
37
+ this.field = field;
38
+ this.name = "RequiredError";
39
+ }
40
+ }
41
+ export const operationServerMap = {};
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Split Tests
3
+ * Inspect split test definitions and performance results.
4
+ *
5
+ * The version of the OpenAPI document: 1.0.0
6
+ *
7
+ *
8
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
9
+ * https://openapi-generator.tech
10
+ * Do not edit the class manually.
11
+ */
12
+ import type { Configuration } from "./configuration";
13
+ import type { RequestArgs } from "./base";
14
+ import type { AxiosInstance, AxiosResponse } from 'axios';
15
+ /**
16
+ *
17
+ * @export
18
+ */
19
+ export declare const DUMMY_BASE_URL = "https://example.com";
20
+ /**
21
+ *
22
+ * @throws {RequiredError}
23
+ * @export
24
+ */
25
+ export declare const assertParamExists: (functionName: string, paramName: string, paramValue: unknown) => void;
26
+ /**
27
+ *
28
+ * @export
29
+ */
30
+ export declare const setApiKeyToObject: (object: any, keyParamName: string, configuration?: Configuration) => Promise<void>;
31
+ /**
32
+ *
33
+ * @export
34
+ */
35
+ export declare const setBasicAuthToObject: (object: any, configuration?: Configuration) => void;
36
+ /**
37
+ *
38
+ * @export
39
+ */
40
+ export declare const setBearerAuthToObject: (object: any, configuration?: Configuration) => Promise<void>;
41
+ /**
42
+ *
43
+ * @export
44
+ */
45
+ export declare const setOAuthToObject: (object: any, name: string, scopes: string[], configuration?: Configuration) => Promise<void>;
46
+ /**
47
+ *
48
+ * @export
49
+ */
50
+ export declare const setSearchParams: (url: URL, ...objects: any[]) => void;
51
+ /**
52
+ * JSON.stringify replacer used by generated API code (e.g. serializes Set as Array).
53
+ * @export
54
+ */
55
+ export declare const replaceWithSerializableTypeIfNeeded: (_key: string, value: unknown) => unknown;
56
+ /**
57
+ *
58
+ * @export
59
+ */
60
+ export declare const serializeDataIfNeeded: (value: any, requestOptions: any, configuration?: Configuration) => any;
61
+ /**
62
+ *
63
+ * @export
64
+ */
65
+ export declare const toPathString: (url: URL) => string;
66
+ /**
67
+ *
68
+ * @export
69
+ */
70
+ export declare const createRequestFunction: (axiosArgs: RequestArgs, globalAxios: AxiosInstance, BASE_PATH: string, configuration?: Configuration) => <T = unknown, R = AxiosResponse<T>>(axios?: AxiosInstance, basePath?: string) => Promise<R>;
@@ -0,0 +1,159 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ /**
4
+ * Split Tests
5
+ * Inspect split test definitions and performance results.
6
+ *
7
+ * The version of the OpenAPI document: 1.0.0
8
+ *
9
+ *
10
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
11
+ * https://openapi-generator.tech
12
+ * Do not edit the class manually.
13
+ */
14
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
15
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
16
+ return new (P || (P = Promise))(function (resolve, reject) {
17
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
18
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
19
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
20
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
21
+ });
22
+ };
23
+ import { RequiredError } from "./base";
24
+ /**
25
+ *
26
+ * @export
27
+ */
28
+ export const DUMMY_BASE_URL = 'https://example.com';
29
+ /**
30
+ *
31
+ * @throws {RequiredError}
32
+ * @export
33
+ */
34
+ export const assertParamExists = function (functionName, paramName, paramValue) {
35
+ if (paramValue === null || paramValue === undefined) {
36
+ throw new RequiredError(paramName, `Required parameter ${paramName} was null or undefined when calling ${functionName}.`);
37
+ }
38
+ };
39
+ /**
40
+ *
41
+ * @export
42
+ */
43
+ export const setApiKeyToObject = function (object, keyParamName, configuration) {
44
+ return __awaiter(this, void 0, void 0, function* () {
45
+ if (configuration && configuration.apiKey) {
46
+ const localVarApiKeyValue = typeof configuration.apiKey === 'function'
47
+ ? yield configuration.apiKey(keyParamName)
48
+ : yield configuration.apiKey;
49
+ object[keyParamName] = localVarApiKeyValue;
50
+ }
51
+ });
52
+ };
53
+ /**
54
+ *
55
+ * @export
56
+ */
57
+ export const setBasicAuthToObject = function (object, configuration) {
58
+ if (configuration && (configuration.username || configuration.password)) {
59
+ object["auth"] = { username: configuration.username, password: configuration.password };
60
+ }
61
+ };
62
+ /**
63
+ *
64
+ * @export
65
+ */
66
+ export const setBearerAuthToObject = function (object, configuration) {
67
+ return __awaiter(this, void 0, void 0, function* () {
68
+ if (configuration && configuration.accessToken) {
69
+ const accessToken = typeof configuration.accessToken === 'function'
70
+ ? yield configuration.accessToken()
71
+ : yield configuration.accessToken;
72
+ object["Authorization"] = "Bearer " + accessToken;
73
+ }
74
+ });
75
+ };
76
+ /**
77
+ *
78
+ * @export
79
+ */
80
+ export const setOAuthToObject = function (object, name, scopes, configuration) {
81
+ return __awaiter(this, void 0, void 0, function* () {
82
+ if (configuration && configuration.accessToken) {
83
+ const localVarAccessTokenValue = typeof configuration.accessToken === 'function'
84
+ ? yield configuration.accessToken(name, scopes)
85
+ : yield configuration.accessToken;
86
+ object["Authorization"] = "Bearer " + localVarAccessTokenValue;
87
+ }
88
+ });
89
+ };
90
+ function setFlattenedQueryParams(urlSearchParams, parameter, key = "") {
91
+ if (parameter == null)
92
+ return;
93
+ if (typeof parameter === "object") {
94
+ if (Array.isArray(parameter) || parameter instanceof Set) {
95
+ parameter.forEach(item => setFlattenedQueryParams(urlSearchParams, item, key !== '' ? `${key}[]` : key));
96
+ }
97
+ else {
98
+ Object.keys(parameter).forEach(currentKey => setFlattenedQueryParams(urlSearchParams, parameter[currentKey], `${key}${key !== '' ? '.' : ''}${currentKey}`));
99
+ }
100
+ }
101
+ else {
102
+ if (urlSearchParams.has(key)) {
103
+ urlSearchParams.append(key, parameter);
104
+ }
105
+ else {
106
+ urlSearchParams.set(key, parameter);
107
+ }
108
+ }
109
+ }
110
+ /**
111
+ *
112
+ * @export
113
+ */
114
+ export const setSearchParams = function (url, ...objects) {
115
+ const searchParams = new URLSearchParams(url.search);
116
+ setFlattenedQueryParams(searchParams, objects);
117
+ url.search = searchParams.toString();
118
+ };
119
+ /**
120
+ * JSON.stringify replacer used by generated API code (e.g. serializes Set as Array).
121
+ * @export
122
+ */
123
+ export const replaceWithSerializableTypeIfNeeded = function (_key, value) {
124
+ if (value instanceof Set) {
125
+ return Array.from(value);
126
+ }
127
+ return value;
128
+ };
129
+ /**
130
+ *
131
+ * @export
132
+ */
133
+ export const serializeDataIfNeeded = function (value, requestOptions, configuration) {
134
+ const nonString = typeof value !== 'string';
135
+ const needsSerialization = nonString && configuration && configuration.isJsonMime
136
+ ? configuration.isJsonMime(requestOptions.headers['Content-Type'])
137
+ : nonString;
138
+ return needsSerialization
139
+ ? JSON.stringify(value !== undefined ? value : {}, replaceWithSerializableTypeIfNeeded)
140
+ : (value || "");
141
+ };
142
+ /**
143
+ *
144
+ * @export
145
+ */
146
+ export const toPathString = function (url) {
147
+ return url.pathname + url.search + url.hash;
148
+ };
149
+ /**
150
+ *
151
+ * @export
152
+ */
153
+ export const createRequestFunction = function (axiosArgs, globalAxios, BASE_PATH, configuration) {
154
+ return (axios = globalAxios, basePath = BASE_PATH) => {
155
+ var _a;
156
+ const axiosRequestArgs = Object.assign(Object.assign({}, axiosArgs.options), { url: (axios.defaults.baseURL ? '' : (_a = configuration === null || configuration === void 0 ? void 0 : configuration.basePath) !== null && _a !== void 0 ? _a : basePath) + axiosArgs.url });
157
+ return axios.request(axiosRequestArgs);
158
+ };
159
+ };
@@ -0,0 +1,98 @@
1
+ /**
2
+ * Split Tests
3
+ * Inspect split test definitions and performance results.
4
+ *
5
+ * The version of the OpenAPI document: 1.0.0
6
+ *
7
+ *
8
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
9
+ * https://openapi-generator.tech
10
+ * Do not edit the class manually.
11
+ */
12
+ interface AWSv4Configuration {
13
+ options?: {
14
+ region?: string;
15
+ service?: string;
16
+ };
17
+ credentials?: {
18
+ accessKeyId?: string;
19
+ secretAccessKey?: string;
20
+ sessionToken?: string;
21
+ };
22
+ }
23
+ export interface ConfigurationParameters {
24
+ apiKey?: string | Promise<string> | ((name: string) => string) | ((name: string) => Promise<string>);
25
+ username?: string;
26
+ password?: string;
27
+ accessToken?: string | Promise<string> | ((name?: string, scopes?: string[]) => string) | ((name?: string, scopes?: string[]) => Promise<string>);
28
+ awsv4?: AWSv4Configuration;
29
+ basePath?: string;
30
+ serverIndex?: number;
31
+ baseOptions?: any;
32
+ formDataCtor?: new () => any;
33
+ }
34
+ export declare class Configuration {
35
+ /**
36
+ * parameter for apiKey security
37
+ * @param name security name
38
+ */
39
+ apiKey?: string | Promise<string> | ((name: string) => string) | ((name: string) => Promise<string>);
40
+ /**
41
+ * parameter for basic security
42
+ */
43
+ username?: string;
44
+ /**
45
+ * parameter for basic security
46
+ */
47
+ password?: string;
48
+ /**
49
+ * parameter for oauth2 security
50
+ * @param name security name
51
+ * @param scopes oauth2 scope
52
+ */
53
+ accessToken?: string | Promise<string> | ((name?: string, scopes?: string[]) => string) | ((name?: string, scopes?: string[]) => Promise<string>);
54
+ /**
55
+ * parameter for aws4 signature security
56
+ * @param {Object} AWS4Signature - AWS4 Signature security
57
+ * @param {string} options.region - aws region
58
+ * @param {string} options.service - name of the service.
59
+ * @param {string} credentials.accessKeyId - aws access key id
60
+ * @param {string} credentials.secretAccessKey - aws access key
61
+ * @param {string} credentials.sessionToken - aws session token
62
+ * @memberof Configuration
63
+ */
64
+ awsv4?: AWSv4Configuration;
65
+ /**
66
+ * override base path
67
+ */
68
+ basePath?: string;
69
+ /**
70
+ * override server index
71
+ */
72
+ serverIndex?: number;
73
+ /**
74
+ * base options for axios calls
75
+ */
76
+ baseOptions?: any;
77
+ /**
78
+ * The FormData constructor that will be used to create multipart form data
79
+ * requests. You can inject this here so that execution environments that
80
+ * do not support the FormData class can still run the generated client.
81
+ *
82
+ * @type {new () => FormData}
83
+ */
84
+ formDataCtor?: new () => any;
85
+ constructor(param?: ConfigurationParameters);
86
+ /**
87
+ * Check if the given MIME is a JSON MIME.
88
+ * JSON MIME examples:
89
+ * application/json
90
+ * application/json; charset=UTF8
91
+ * APPLICATION/JSON
92
+ * application/vnd.company+json
93
+ * @param mime - MIME (Multipurpose Internet Mail Extensions)
94
+ * @return True if the given MIME is JSON, false otherwise.
95
+ */
96
+ isJsonMime(mime: string): boolean;
97
+ }
98
+ export {};
@@ -0,0 +1,40 @@
1
+ /* tslint:disable */
2
+ /**
3
+ * Split Tests
4
+ * Inspect split test definitions and performance results.
5
+ *
6
+ * The version of the OpenAPI document: 1.0.0
7
+ *
8
+ *
9
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
10
+ * https://openapi-generator.tech
11
+ * Do not edit the class manually.
12
+ */
13
+ export class Configuration {
14
+ constructor(param = {}) {
15
+ var _a;
16
+ this.apiKey = param.apiKey;
17
+ this.username = param.username;
18
+ this.password = param.password;
19
+ this.accessToken = param.accessToken;
20
+ this.awsv4 = param.awsv4;
21
+ this.basePath = param.basePath;
22
+ this.serverIndex = param.serverIndex;
23
+ this.baseOptions = Object.assign(Object.assign({}, param.baseOptions), { headers: Object.assign({}, (_a = param.baseOptions) === null || _a === void 0 ? void 0 : _a.headers) });
24
+ this.formDataCtor = param.formDataCtor;
25
+ }
26
+ /**
27
+ * Check if the given MIME is a JSON MIME.
28
+ * JSON MIME examples:
29
+ * application/json
30
+ * application/json; charset=UTF8
31
+ * APPLICATION/JSON
32
+ * application/vnd.company+json
33
+ * @param mime - MIME (Multipurpose Internet Mail Extensions)
34
+ * @return True if the given MIME is JSON, false otherwise.
35
+ */
36
+ isJsonMime(mime) {
37
+ const jsonMime = /^(application\/json|[^;/ \t]+\/[^;/ \t]+[+]json)[ \t]*(;.*)?$/i;
38
+ return mime !== null && jsonMime.test(mime);
39
+ }
40
+ }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Split Tests
3
+ * Inspect split test definitions and performance results.
4
+ *
5
+ * The version of the OpenAPI document: 1.0.0
6
+ *
7
+ *
8
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
9
+ * https://openapi-generator.tech
10
+ * Do not edit the class manually.
11
+ */
12
+ export * from "./api";
13
+ export * from "./configuration";
@@ -0,0 +1,15 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ /**
4
+ * Split Tests
5
+ * Inspect split test definitions and performance results.
6
+ *
7
+ * The version of the OpenAPI document: 1.0.0
8
+ *
9
+ *
10
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
11
+ * https://openapi-generator.tech
12
+ * Do not edit the class manually.
13
+ */
14
+ export * from "./api";
15
+ export * from "./configuration";
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Split Tests
3
+ * Inspect split test definitions and performance results.
4
+ *
5
+ * The version of the OpenAPI document: 1.0.0
6
+ *
7
+ *
8
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
9
+ * https://openapi-generator.tech
10
+ * Do not edit the class manually.
11
+ */
12
+ export * from "./api";
13
+ export * from "./configuration";
package/dist/index.js ADDED
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ /* tslint:disable */
3
+ /* eslint-disable */
4
+ /**
5
+ * Split Tests
6
+ * Inspect split test definitions and performance results.
7
+ *
8
+ * The version of the OpenAPI document: 1.0.0
9
+ *
10
+ *
11
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
12
+ * https://openapi-generator.tech
13
+ * Do not edit the class manually.
14
+ */
15
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ var desc = Object.getOwnPropertyDescriptor(m, k);
18
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
19
+ desc = { enumerable: true, get: function() { return m[k]; } };
20
+ }
21
+ Object.defineProperty(o, k2, desc);
22
+ }) : (function(o, m, k, k2) {
23
+ if (k2 === undefined) k2 = k;
24
+ o[k2] = m[k];
25
+ }));
26
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
27
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
28
+ };
29
+ Object.defineProperty(exports, "__esModule", { value: true });
30
+ __exportStar(require("./api"), exports);
31
+ __exportStar(require("./configuration"), exports);
package/docs/Error.md ADDED
@@ -0,0 +1,20 @@
1
+ # ModelError
2
+
3
+
4
+ ## Properties
5
+
6
+ Name | Type | Description | Notes
7
+ ------------ | ------------- | ------------- | -------------
8
+ **message** | **string** | Human-readable error message. | [optional] [default to undefined]
9
+
10
+ ## Example
11
+
12
+ ```typescript
13
+ import { ModelError } from '@teemill/split-tests';
14
+
15
+ const instance: ModelError = {
16
+ message,
17
+ };
18
+ ```
19
+
20
+ [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
@@ -0,0 +1,20 @@
1
+ # ListSplitTests200Response
2
+
3
+
4
+ ## Properties
5
+
6
+ Name | Type | Description | Notes
7
+ ------------ | ------------- | ------------- | -------------
8
+ **splitTests** | [**Array&lt;SplitTest&gt;**](SplitTest.md) | | [default to undefined]
9
+
10
+ ## Example
11
+
12
+ ```typescript
13
+ import { ListSplitTests200Response } from '@teemill/split-tests';
14
+
15
+ const instance: ListSplitTests200Response = {
16
+ splitTests,
17
+ };
18
+ ```
19
+
20
+ [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
@@ -0,0 +1,33 @@
1
+ # SplitTest
2
+
3
+ Split test definition with variation metadata.
4
+
5
+ ## Properties
6
+
7
+ Name | Type | Description | Notes
8
+ ------------ | ------------- | ------------- | -------------
9
+ **id** | **string** | Unique split test UUID. | [default to undefined]
10
+ **name** | **string** | Human-readable split test name. | [default to undefined]
11
+ **code** | **string** | Stable split test code used by tracking and assignment logic. | [default to undefined]
12
+ **startDate** | **string** | Date the split test starts serving. | [default to undefined]
13
+ **endDate** | **string** | Date the split test stops serving. | [default to undefined]
14
+ **winnerId** | **string** | Winning variation UUID when a winner has been chosen; otherwise &#x60;null&#x60;. | [default to undefined]
15
+ **variations** | [**Array&lt;SplitTestVariation&gt;**](SplitTestVariation.md) | Variations configured for this split test. | [default to undefined]
16
+
17
+ ## Example
18
+
19
+ ```typescript
20
+ import { SplitTest } from '@teemill/split-tests';
21
+
22
+ const instance: SplitTest = {
23
+ id,
24
+ name,
25
+ code,
26
+ startDate,
27
+ endDate,
28
+ winnerId,
29
+ variations,
30
+ };
31
+ ```
32
+
33
+ [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
@@ -0,0 +1,33 @@
1
+ # SplitTestResultBreakdown
2
+
3
+ Aggregated variation metrics for a single breakdown group.
4
+
5
+ ## Properties
6
+
7
+ Name | Type | Description | Notes
8
+ ------------ | ------------- | ------------- | -------------
9
+ **name** | **string** | Breakdown group key (for example, &#x60;mobile&#x60;, &#x60;Chrome&#x60;, or a domain). | [default to undefined]
10
+ **sessions** | **number** | Session count for this group. | [default to undefined]
11
+ **value** | **number** | Total tracked order value for this group in minor currency units. | [default to undefined]
12
+ **orderCount** | **number** | Number of orders recorded for this group. | [default to undefined]
13
+ **averageOrderValue** | **number** | Average order value for this group. | [default to undefined]
14
+ **valuePerSession** | **number** | Average tracked value per session for this group. | [default to undefined]
15
+ **controlDifference** | **number** | Difference versus control variation for the selected metric. | [optional] [default to undefined]
16
+
17
+ ## Example
18
+
19
+ ```typescript
20
+ import { SplitTestResultBreakdown } from '@teemill/split-tests';
21
+
22
+ const instance: SplitTestResultBreakdown = {
23
+ name,
24
+ sessions,
25
+ value,
26
+ orderCount,
27
+ averageOrderValue,
28
+ valuePerSession,
29
+ controlDifference,
30
+ };
31
+ ```
32
+
33
+ [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
@@ -0,0 +1,29 @@
1
+ # SplitTestResultEvent
2
+
3
+ Event-level metrics for a variation.
4
+
5
+ ## Properties
6
+
7
+ Name | Type | Description | Notes
8
+ ------------ | ------------- | ------------- | -------------
9
+ **name** | **string** | Event name (for example, &#x60;purchase&#x60; or &#x60;add-to-cart&#x60;). | [default to undefined]
10
+ **events** | **number** | Number of sessions that triggered this event. | [default to undefined]
11
+ **conversionRate** | **number** | Percentage of sessions that triggered this event. | [default to undefined]
12
+ **controlDifference** | **number** | Difference in conversion rate versus the control variation. | [optional] [default to undefined]
13
+ **valuePerConversion** | **number** | Average value per conversion for this event when available. | [optional] [default to undefined]
14
+
15
+ ## Example
16
+
17
+ ```typescript
18
+ import { SplitTestResultEvent } from '@teemill/split-tests';
19
+
20
+ const instance: SplitTestResultEvent = {
21
+ name,
22
+ events,
23
+ conversionRate,
24
+ controlDifference,
25
+ valuePerConversion,
26
+ };
27
+ ```
28
+
29
+ [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
@@ -0,0 +1,33 @@
1
+ # SplitTestResultVariation
2
+
3
+ Aggregated metrics for a single split test variation.
4
+
5
+ ## Properties
6
+
7
+ Name | Type | Description | Notes
8
+ ------------ | ------------- | ------------- | -------------
9
+ **name** | **string** | Variation label. | [default to undefined]
10
+ **sessions** | **number** | Number of sessions assigned to this variation. | [default to undefined]
11
+ **value** | **number** | Total tracked order value in minor currency units. | [default to undefined]
12
+ **averageOrderValue** | **number** | Average order value for conversion events. | [default to undefined]
13
+ **valuePerSession** | **number** | Average tracked value per session. | [default to undefined]
14
+ **events** | [**Array&lt;SplitTestResultEvent&gt;**](SplitTestResultEvent.md) | Event metrics for this variation. | [default to undefined]
15
+ **breakdowns** | [**Array&lt;SplitTestResultBreakdown&gt;**](SplitTestResultBreakdown.md) | Optional subgroup metrics when a breakdown dimension is requested. | [optional] [default to undefined]
16
+
17
+ ## Example
18
+
19
+ ```typescript
20
+ import { SplitTestResultVariation } from '@teemill/split-tests';
21
+
22
+ const instance: SplitTestResultVariation = {
23
+ name,
24
+ sessions,
25
+ value,
26
+ averageOrderValue,
27
+ valuePerSession,
28
+ events,
29
+ breakdowns,
30
+ };
31
+ ```
32
+
33
+ [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)