1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-01-06 00:07:44 +01:00
unleash.unleash/src/lib/openapi/spec/create-strategy-variant-schema.ts
andreas-unleash 1cd0edb11a
feat: variant with number payload (#4654)
Adds `number` as possible payload type for variant.
Adds a flag to enable the feature
Updates all relevant models and schemas
Adds the option to the UI

Closes: #
[1-1357](https://linear.app/unleash/issue/1-1357/support-number-in-variant-payload)

---------

Signed-off-by: andreas-unleash <andreas@getunleash.ai>
2023-09-11 16:57:42 +03:00

61 lines
2.8 KiB
TypeScript

import { FromSchema } from 'json-schema-to-ts';
export const createStrategyVariantSchema = {
$id: '#/components/schemas/createStrategyVariantSchema',
type: 'object',
description:
"This is an experimental property. It may change or be removed as we work on it. Please don't depend on it yet. A strategy variant allows you to attach any data to strategies instead of only returning `true`/`false`. Strategy variants take precedence over feature variants.",
required: ['name', 'weight', 'weightType', 'stickiness'],
properties: {
name: {
type: 'string',
description:
'The variant name. Must be unique for this feature toggle',
example: 'blue_group',
},
weight: {
type: 'integer',
description:
'The weight is the likelihood of any one user getting this variant. It is an integer between 0 and 1000. See the section on [variant weights](https://docs.getunleash.io/reference/feature-toggle-variants#variant-weight) for more information',
minimum: 0,
maximum: 1000,
},
weightType: {
description:
'Set to `fix` if this variant must have exactly the weight allocated to it. If the type is `variable`, the weight will adjust so that the total weight of all variants adds up to 1000. Refer to the [variant weight documentation](https://docs.getunleash.io/reference/feature-toggle-variants#variant-weight).',
type: 'string',
example: 'fix',
enum: ['variable', 'fix'],
},
stickiness: {
type: 'string',
description:
'The [stickiness](https://docs.getunleash.io/reference/feature-toggle-variants#variant-stickiness) to use for distribution of this variant. Stickiness is how Unleash guarantees that the same user gets the same variant every time',
example: 'custom.context.field',
},
payload: {
type: 'object',
required: ['type', 'value'],
description: 'Extra data configured for this variant',
properties: {
type: {
description:
'The type of the value. Commonly used types are string, number, json and csv.',
type: 'string',
enum: ['json', 'csv', 'string', 'number'],
},
value: {
description: 'The actual value of payload',
type: 'string',
},
},
example: { type: 'json', value: '{"color": "red"}' },
},
},
components: {},
} as const;
export type CreateStrategyVariantSchema = FromSchema<
typeof createStrategyVariantSchema
>;