UNPKG

unleash-server

Version:

Unleash is an enterprise ready feature flag service. It provides different strategies for handling feature flags.

761 lines • 1.32 MB
import type { FromSchema } from 'json-schema-to-ts'; export declare const projectOverviewSchema: { readonly $id: "#/components/schemas/projectOverviewSchema"; readonly type: "object"; readonly additionalProperties: false; readonly required: readonly ["version", "name", "onboardingStatus"]; readonly description: "A high-level overview of a project. It contains information such as project statistics, the name of the project, what members and what features it contains, etc."; readonly properties: { readonly stats: { readonly $ref: "#/components/schemas/projectStatsSchema"; readonly description: "Project statistics"; }; readonly version: { readonly type: "integer"; readonly example: 1; readonly description: "The schema version used to describe the project overview"; }; readonly name: { readonly type: "string"; readonly example: "dx-squad"; readonly description: "The name of this project"; }; readonly description: { readonly type: "string"; readonly nullable: true; readonly example: "DX squad feature release"; readonly description: "Additional information about the project"; }; readonly defaultStickiness: { readonly type: "string"; readonly example: "userId"; readonly description: "A default stickiness for the project affecting the default stickiness value for variants and Gradual Rollout strategy"; }; readonly mode: { readonly type: "string"; readonly enum: readonly ["open", "protected", "private"]; readonly example: "open"; readonly description: "The project's [collaboration mode](https://docs.getunleash.io/concepts/project-collaboration-mode). Determines whether non-project members can submit change requests or not."; }; readonly featureLimit: { readonly type: "number"; readonly nullable: true; readonly example: 100; readonly description: "A limit on the number of features allowed in the project. Null if no limit."; }; readonly featureNaming: { readonly $ref: "#/components/schemas/createFeatureNamingPatternSchema"; }; readonly linkTemplates: { readonly type: "array"; readonly items: { readonly $ref: "#/components/schemas/projectLinkTemplateSchema"; }; readonly description: "A list of templates for links that will be automatically added to new feature flags."; }; readonly members: { readonly type: "number"; readonly example: 4; readonly description: "The number of members this project has"; }; readonly health: { readonly type: "number"; readonly example: 50; readonly deprecated: true; readonly description: "Use `technicalDebt` instead."; }; readonly technicalDebt: { readonly type: "number"; readonly example: 25; readonly minimum: 0; readonly maximum: 100; readonly description: "An indicator of the [project's technical debt](https://docs.getunleash.io/concepts/technical-debt#project-status) on a scale from 0 to 100"; }; readonly environments: { readonly type: "array"; readonly items: { readonly $ref: "#/components/schemas/projectEnvironmentSchema"; }; readonly example: readonly [{ readonly environment: "development"; }, { readonly environment: "production"; readonly defaultStrategy: { readonly name: "flexibleRollout"; readonly constraints: readonly []; readonly parameters: { readonly rollout: "50"; readonly stickiness: "customAppName"; readonly groupId: "stickyFlag"; }; }; }]; readonly description: "The environments that are enabled for this project"; }; readonly featureTypeCounts: { readonly type: "array"; readonly items: { readonly $ref: "#/components/schemas/featureTypeCountSchema"; }; readonly description: "The number of features of each type that are in this project"; }; readonly updatedAt: { readonly type: "string"; readonly format: "date-time"; readonly nullable: true; readonly example: "2023-02-10T08:36:35.262Z"; readonly description: "When the project was last updated."; }; readonly archivedAt: { readonly type: "string"; readonly format: "date-time"; readonly nullable: true; readonly example: "2023-02-10T08:36:35.262Z"; readonly description: "When the project was archived."; }; readonly createdAt: { readonly type: "string"; readonly format: "date-time"; readonly nullable: true; readonly example: "2023-02-10T08:36:35.262Z"; readonly description: "When the project was created."; }; readonly favorite: { readonly type: "boolean"; readonly example: true; readonly description: "`true` if the project was favorited, otherwise `false`."; }; readonly onboardingStatus: { readonly type: "object"; readonly oneOf: readonly [{ readonly type: "object"; readonly properties: { readonly status: { readonly type: "string"; readonly enum: readonly ["onboarding-started", "onboarded"]; readonly example: "onboarding-started"; }; }; readonly required: readonly ["status"]; readonly additionalProperties: false; }, { readonly type: "object"; readonly properties: { readonly status: { readonly type: "string"; readonly enum: readonly ["first-flag-created"]; readonly example: "first-flag-created"; }; readonly feature: { readonly type: "string"; readonly description: "The name of the feature flag"; readonly example: "my-feature-flag"; }; }; readonly required: readonly ["status", "feature"]; readonly additionalProperties: false; }]; readonly description: "The current onboarding status of the project."; }; }; readonly components: { readonly schemas: { readonly environmentSchema: { readonly $id: "#/components/schemas/environmentSchema"; readonly type: "object"; readonly additionalProperties: false; readonly required: readonly ["name", "type", "enabled", "protected", "sortOrder"]; readonly description: "A definition of the project environment"; readonly properties: { readonly name: { readonly type: "string"; readonly example: "my-dev-env"; readonly description: "The name of the environment"; }; readonly type: { readonly type: "string"; readonly example: "development"; readonly description: "The [type of environment](https://docs.getunleash.io/concepts/environments#environment-types)."; }; readonly enabled: { readonly type: "boolean"; readonly example: true; readonly description: "`true` if the environment is enabled for the project, otherwise `false`."; }; readonly protected: { readonly type: "boolean"; readonly example: true; readonly description: "`true` if the environment is protected, otherwise `false`. A *protected* environment can not be deleted."; }; readonly sortOrder: { readonly type: "integer"; readonly example: 3; readonly description: "Priority of the environment in a list of environments, the lower the value, the higher up in the list the environment will appear. Needs to be an integer"; }; readonly projectCount: { readonly type: "integer"; readonly nullable: true; readonly minimum: 0; readonly example: 10; readonly description: "The number of projects with this environment"; }; readonly apiTokenCount: { readonly type: "integer"; readonly nullable: true; readonly minimum: 0; readonly example: 6; readonly description: "The number of API tokens for the project environment"; }; readonly enabledToggleCount: { readonly type: "integer"; readonly nullable: true; readonly minimum: 0; readonly example: 10; readonly description: "The number of enabled toggles for the project environment"; }; readonly requiredApprovals: { readonly type: "integer"; readonly nullable: true; readonly description: "Experimental field. The number of approvals required before a change request can be applied in this environment."; readonly minimum: 1; readonly example: 3; }; }; readonly components: {}; }; readonly projectEnvironmentSchema: { readonly $id: "#/components/schemas/projectEnvironmentSchema"; readonly type: "object"; readonly additionalProperties: false; readonly description: "Add an environment to a project, optionally also sets if change requests are enabled for this environment on the project"; readonly required: readonly ["environment"]; readonly properties: { readonly environment: { readonly type: "string"; readonly description: "The environment to add to the project"; readonly example: "development"; }; readonly changeRequestsEnabled: { readonly type: "boolean"; readonly description: "Whether change requests should be enabled or for this environment on the project or not"; readonly example: true; }; readonly defaultStrategy: { readonly $ref: "#/components/schemas/createFeatureStrategySchema"; readonly description: "A default strategy to create for this environment on the project."; }; }; readonly components: { readonly schemas: { readonly createFeatureStrategySchema: { readonly $id: "#/components/schemas/createFeatureStrategySchema"; readonly type: "object"; readonly required: readonly ["name"]; readonly description: "Create a strategy configuration in a feature"; readonly properties: { readonly name: { readonly type: "string"; readonly description: "The name of the strategy type"; readonly example: "flexibleRollout"; }; readonly title: { readonly type: "string"; readonly nullable: true; readonly description: "A descriptive title for the strategy"; readonly example: "Gradual Rollout 25-Prod"; }; readonly disabled: { readonly type: "boolean"; readonly description: "A toggle to disable the strategy. defaults to false. Disabled strategies are not evaluated or returned to the SDKs"; readonly example: false; readonly nullable: true; }; readonly sortOrder: { readonly type: "number"; readonly description: "The order of the strategy in the list"; readonly example: 9999; }; readonly constraints: { readonly type: "array"; readonly description: "A list of the constraints attached to the strategy. See https://docs.getunleash.io/concepts/activation-strategies#constraints"; readonly example: readonly [{ readonly values: readonly ["1", "2"]; readonly inverted: false; readonly operator: "IN"; readonly contextName: "appName"; readonly caseInsensitive: false; }]; readonly items: { readonly $ref: "#/components/schemas/constraintSchema"; }; }; readonly variants: { readonly type: "array"; readonly description: "Strategy level variants"; readonly items: { readonly $ref: "#/components/schemas/createStrategyVariantSchema"; }; }; readonly parameters: { readonly description: "An object containing the parameters for the strategy"; readonly example: { readonly groupId: "some_new"; readonly rollout: "25"; readonly stickiness: "sessionId"; }; readonly $ref: "#/components/schemas/parametersSchema"; }; readonly segments: { readonly type: "array"; readonly description: "Ids of segments to use for this strategy"; readonly example: readonly [1, 2]; readonly items: { readonly type: "number"; }; }; }; readonly components: { readonly schemas: { readonly constraintSchema: { readonly type: "object"; readonly required: readonly ["contextName", "operator"]; readonly description: "A strategy constraint. For more information, refer to [the strategy constraint reference documentation](https://docs.getunleash.io/concepts/activation-strategies#constraints)"; readonly properties: { readonly contextName: { readonly description: "The name of the context field that this constraint should apply to."; readonly example: "appName"; readonly type: "string"; }; readonly operator: { readonly description: "The operator to use when evaluating this constraint. For more information about the various operators, refer to [the strategy constraint operator documentation](https://docs.getunleash.io/concepts/activation-strategies#constraint-operators)."; readonly type: "string"; readonly enum: readonly ["NOT_IN", "IN", "STR_ENDS_WITH", "STR_STARTS_WITH", "STR_CONTAINS", "NUM_EQ", "NUM_GT", "NUM_GTE", "NUM_LT", "NUM_LTE", "DATE_AFTER", "DATE_BEFORE", "SEMVER_EQ", "SEMVER_GT", "SEMVER_LT"]; readonly example: "IN"; }; readonly caseInsensitive: { readonly description: "Whether the operator should be case sensitive or not. Defaults to `false` (being case sensitive)."; readonly type: "boolean"; readonly default: false; }; readonly inverted: { readonly description: "Whether the result should be negated or not. If `true`, will turn a `true` result into a `false` result and vice versa."; readonly type: "boolean"; readonly default: false; }; readonly values: { readonly type: "array"; readonly description: "The context values that should be used for constraint evaluation. Use this property instead of `value` for properties that accept multiple values."; readonly items: { readonly type: "string"; }; readonly example: readonly ["my-app", "my-other-app"]; }; readonly value: { readonly description: "The context value that should be used for constraint evaluation. Use this property instead of `values` for properties that only accept single values."; readonly type: "string"; readonly example: "my-app"; }; }; readonly components: {}; readonly $id: "#/components/schemas/constraintSchema"; readonly additionalProperties: false; }; readonly parametersSchema: { readonly $id: "#/components/schemas/parametersSchema"; readonly type: "object"; readonly description: "A list of parameters for a strategy"; readonly additionalProperties: { readonly type: "string"; }; readonly components: {}; }; readonly createStrategyVariantSchema: { readonly $id: "#/components/schemas/createStrategyVariantSchema"; readonly type: "object"; readonly 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."; readonly required: readonly ["name", "weight", "weightType", "stickiness"]; readonly properties: { readonly name: { readonly type: "string"; readonly description: "The variant name. Must be unique for this feature flag"; readonly example: "blue_group"; }; readonly weight: { readonly type: "integer"; readonly 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/concepts/feature-flag-variants#variant-weight) for more information"; readonly minimum: 0; readonly maximum: 1000; }; readonly weightType: { readonly 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/concepts/feature-flag-variants#variant-weight)."; readonly type: "string"; readonly example: "fix"; readonly enum: readonly ["variable", "fix"]; }; readonly stickiness: { readonly type: "string"; readonly description: "The [stickiness](https://docs.getunleash.io/concepts/feature-flag-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"; readonly example: "custom.context.field"; }; readonly payload: { readonly type: "object"; readonly required: readonly ["type", "value"]; readonly description: "Extra data configured for this variant"; readonly properties: { readonly type: { readonly description: "The type of the value. Commonly used types are string, number, json and csv."; readonly type: "string"; readonly enum: readonly ["json", "csv", "string", "number"]; }; readonly value: { readonly description: "The actual value of payload"; readonly type: "string"; }; }; readonly example: { readonly type: "json"; readonly value: "{\"color\": \"red\"}"; }; }; }; readonly components: {}; }; }; }; }; readonly createStrategyVariantSchema: { readonly $id: "#/components/schemas/createStrategyVariantSchema"; readonly type: "object"; readonly 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."; readonly required: readonly ["name", "weight", "weightType", "stickiness"]; readonly properties: { readonly name: { readonly type: "string"; readonly description: "The variant name. Must be unique for this feature flag"; readonly example: "blue_group"; }; readonly weight: { readonly type: "integer"; readonly 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/concepts/feature-flag-variants#variant-weight) for more information"; readonly minimum: 0; readonly maximum: 1000; }; readonly weightType: { readonly 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/concepts/feature-flag-variants#variant-weight)."; readonly type: "string"; readonly example: "fix"; readonly enum: readonly ["variable", "fix"]; }; readonly stickiness: { readonly type: "string"; readonly description: "The [stickiness](https://docs.getunleash.io/concepts/feature-flag-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"; readonly example: "custom.context.field"; }; readonly payload: { readonly type: "object"; readonly required: readonly ["type", "value"]; readonly description: "Extra data configured for this variant"; readonly properties: { readonly type: { readonly description: "The type of the value. Commonly used types are string, number, json and csv."; readonly type: "string"; readonly enum: readonly ["json", "csv", "string", "number"]; }; readonly value: { readonly description: "The actual value of payload"; readonly type: "string"; }; }; readonly example: { readonly type: "json"; readonly value: "{\"color\": \"red\"}"; }; }; }; readonly components: {}; }; }; }; }; readonly createFeatureStrategySchema: { readonly $id: "#/components/schemas/createFeatureStrategySchema"; readonly type: "object"; readonly required: readonly ["name"]; readonly description: "Create a strategy configuration in a feature"; readonly properties: { readonly name: { readonly type: "string"; readonly description: "The name of the strategy type"; readonly example: "flexibleRollout"; }; readonly title: { readonly type: "string"; readonly nullable: true; readonly description: "A descriptive title for the strategy"; readonly example: "Gradual Rollout 25-Prod"; }; readonly disabled: { readonly type: "boolean"; readonly description: "A toggle to disable the strategy. defaults to false. Disabled strategies are not evaluated or returned to the SDKs"; readonly example: false; readonly nullable: true; }; readonly sortOrder: { readonly type: "number"; readonly description: "The order of the strategy in the list"; readonly example: 9999; }; readonly constraints: { readonly type: "array"; readonly description: "A list of the constraints attached to the strategy. See https://docs.getunleash.io/concepts/activation-strategies#constraints"; readonly example: readonly [{ readonly values: readonly ["1", "2"]; readonly inverted: false; readonly operator: "IN"; readonly contextName: "appName"; readonly caseInsensitive: false; }]; readonly items: { readonly $ref: "#/components/schemas/constraintSchema"; }; }; readonly variants: { readonly type: "array"; readonly description: "Strategy level variants"; readonly items: { readonly $ref: "#/components/schemas/createStrategyVariantSchema"; }; }; readonly parameters: { readonly description: "An object containing the parameters for the strategy"; readonly example: { readonly groupId: "some_new"; readonly rollout: "25"; readonly stickiness: "sessionId"; }; readonly $ref: "#/components/schemas/parametersSchema"; }; readonly segments: { readonly type: "array"; readonly description: "Ids of segments to use for this strategy"; readonly example: readonly [1, 2]; readonly items: { readonly type: "number"; }; }; }; readonly components: { readonly schemas: { readonly constraintSchema: { readonly type: "object"; readonly required: readonly ["contextName", "operator"]; readonly description: "A strategy constraint. For more information, refer to [the strategy constraint reference documentation](https://docs.getunleash.io/concepts/activation-strategies#constraints)"; readonly properties: { readonly contextName: { readonly description: "The name of the context field that this constraint should apply to."; readonly example: "appName"; readonly type: "string"; }; readonly operator: { readonly description: "The operator to use when evaluating this constraint. For more information about the various operators, refer to [the strategy constraint operator documentation](https://docs.getunleash.io/concepts/activation-strategies#constraint-operators)."; readonly type: "string"; readonly enum: readonly ["NOT_IN", "IN", "STR_ENDS_WITH", "STR_STARTS_WITH", "STR_CONTAINS", "NUM_EQ", "NUM_GT", "NUM_GTE", "NUM_LT", "NUM_LTE", "DATE_AFTER", "DATE_BEFORE", "SEMVER_EQ", "SEMVER_GT", "SEMVER_LT"]; readonly example: "IN"; }; readonly caseInsensitive: { readonly description: "Whether the operator should be case sensitive or not. Defaults to `false` (being case sensitive)."; readonly type: "boolean"; readonly default: false; }; readonly inverted: { readonly description: "Whether the result should be negated or not. If `true`, will turn a `true` result into a `false` result and vice versa."; readonly type: "boolean"; readonly default: false; }; readonly values: { readonly type: "array"; readonly description: "The context values that should be used for constraint evaluation. Use this property instead of `value` for properties that accept multiple values."; readonly items: { readonly type: "string"; }; readonly example: readonly ["my-app", "my-other-app"]; }; readonly value: { readonly description: "The context value that should be used for constraint evaluation. Use this property instead of `values` for properties that only accept single values."; readonly type: "string"; readonly example: "my-app"; }; }; readonly components: {}; readonly $id: "#/components/schemas/constraintSchema"; readonly additionalProperties: false; }; readonly parametersSchema: { readonly $id: "#/components/schemas/parametersSchema"; readonly type: "object"; readonly description: "A list of parameters for a strategy"; readonly additionalProperties: { readonly type: "string"; }; readonly components: {}; }; readonly createStrategyVariantSchema: { readonly $id: "#/components/schemas/createStrategyVariantSchema"; readonly type: "object"; readonly 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."; readonly required: readonly ["name", "weight", "weightType", "stickiness"]; readonly properties: { readonly name: { readonly type: "string"; readonly description: "The variant name. Must be unique for this feature flag"; readonly example: "blue_group"; }; readonly weight: { readonly type: "integer"; readonly 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/concepts/feature-flag-variants#variant-weight) for more information"; readonly minimum: 0; readonly maximum: 1000; }; readonly weightType: { readonly 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/concepts/feature-flag-variants#variant-weight)."; readonly type: "string"; readonly example: "fix"; readonly enum: readonly ["variable", "fix"]; }; readonly stickiness: { readonly type: "string"; readonly description: "The [stickiness](https://docs.getunleash.io/concepts/feature-flag-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"; readonly example: "custom.context.field"; }; readonly payload: { readonly type: "object"; readonly required: readonly ["type", "value"]; readonly description: "Extra data configured for this variant"; readonly properties: { readonly type: { readonly description: "The type of the value. Commonly used types are string, number, json and csv."; readonly type: "string"; readonly enum: readonly ["json", "csv", "string", "number"]; }; readonly value: { readonly description: "The actual value of payload"; readonly type: "string"; }; }; readonly example: { readonly type: "json"; readonly value: "{\"color\": \"red\"}"; }; }; }; readonly components: {}; }; }; }; }; readonly createStrategyVariantSchema: { readonly $id: "#/components/schemas/createStrategyVariantSchema"; readonly type: "object"; readonly 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."; readonly required: readonly ["name", "weight", "weightType", "stickiness"]; readonly properties: { readonly name: { readonly type: "string"; readonly description: "The variant name. Must be unique for this feature flag"; readonly example: "blue_group"; }; readonly weight: { readonly type: "integer"; readonly 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/concepts/feature-flag-variants#variant-weight) for more information"; readonly minimum: 0; readonly maximum: 1000; }; readonly weightType: { readonly 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/concepts/feature-flag-variants#variant-weight)."; readonly type: "string"; readonly example: "fix"; readonly enum: readonly ["variable", "fix"]; }; readonly stickiness: { readonly type: "string"; readonly description: "The [stickiness](https://docs.getunleash.io/concepts/feature-flag-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"; readonly example: "custom.context.field"; }; readonly payload: { readonly type: "object"; readonly required: readonly ["type", "value"]; readonly description: "Extra data configured for this variant"; readonly properties: { readonly type: { readonly description: "The type of the value. Commonly used types are string, number, json and csv."; readonly type: "string"; readonly enum: readonly ["json", "csv", "string", "number"]; }; readonly value: { readonly description: "The actual value of payload"; readonly type: "string"; }; }; readonly example: { readonly type: "json"; readonly value: "{\"color\": \"red\"}"; }; }; }; readonly components: {}; }; readonly constraintSchema: { readonly type: "object"; readonly required: readonly ["contextName", "operator"]; readonly description: "A strategy constraint. For more information, refer to [the strategy constraint reference documentation](https://docs.getunleash.io/concepts/activation-strategies#constraints)"; readonly properties: { readonly contextName: { readonly description: "The name of the context field that this constraint should apply to."; readonly example: "appName"; readonly type: "string"; }; readonly operator: { readonly description: "The operator to use when evaluating this constraint. For more information about the various operators, refer to [the strategy constraint operator documentation](https://docs.getunleash.io/concepts/activation-strategies#constraint-operators)."; readonly type: "string"; readonly enum: readonly ["NOT_IN", "IN", "STR_ENDS_WITH", "STR_STARTS_WITH", "STR_CONTAINS", "NUM_EQ", "NUM_GT", "NUM_GTE", "NUM_LT", "NUM_LTE", "DATE_AFTER", "DATE_BEFORE", "SEMVER_EQ", "SEMVER_GT", "SEMVER_LT"]; readonly example: "IN"; }; readonly caseInsensitive: { readonly description: "Whether the operator should be case sensitive or not. Defaults to `false` (being case sensitive)."; readonly type: "boolean"; readonly default: false; }; readonly inverted: { readonly description: "Whether the result should be negated or not. If `true`, will turn a `true` result into a `false` result and vice versa."; readonly type: "boolean"; readonly default: false; }; readonly values: { readonly type: "array"; readonly description: "The context values that should be used for constraint evaluation. Use this property instead of `value` for properties that accept multiple values."; readonly items: { readonly type: "string"; }; readonly example: readonly ["my-app", "my-other-app"]; }; readonly value: { readonly description: "The context value that should be used for constraint evaluation. Use this property instead of `values` for properties that only accept single values."; readonly type: "string"; readonly example: "my-app"; }; }; readonly components: {}; readonly $id: "#/components/schemas/constraintSchema"; readonly additionalProperties: false; }; readonly featureSchema: { readonly $id: "#/components/schemas/featureSchema"; readonly type: "object"; readonly additionalProperties: false; readonly required: readonly ["name"]; readonly description: "A feature flag definition"; readonly properties: { readonly name: { readonly type: "string"; readonly example: "disable-comments"; readonl