docusaurus-openapi-docs
docusaurus-openapi-docs copied to clipboard
Describe group by options
Documentation link
The main readme and in the generated docs, under the "Config" section: https://github.com/PaloAltoNetworks/docusaurus-openapi-docs#config
Describe the problem
I'm trying to understand what the various group by options do. You can only choose "tag" or null for now, but does it make a difference? And how is it supposed to group them?
It's not clear to me what it means to "group" in this case. Even groupPathsBy set to "tag", I get all docs in a single, flat structure. There doesn't seem to be any grouping going on:

We definitely have tags. They appear to be correctly applied on a generated swagger UI page and do appear in the generated openapi.json document.
I also don't understand what the categoryLinkSource is supposed to do, but maybe because I'm not seeing any groupings?
So I might be doing something wrong or I might just be misunderstanding what the options are supposed to do.
Suggested fix
Elaborate on these options in the documentation, and preferably also add screenshots clearly showing the difference between the various options. I'd also love some help with understanding the behavior right here π
Bonus: typo in "sidebars doc"
The Sidebars doc says:
Using the
generated-indexfeature to create an index of all paths/endpoints availabke under a tag.
It should probably be:
Using the
generated-indexfeature to create an index of all paths/endpoints available under a tag.
:tada: Thanks for opening your first issue here! Welcome to the community!
Hi @thomasheartman, thanks for your feedback. I agree that groupPathsBy can be documented better.
Grouping by "tag" is intended to group operations (path + method) by the first tag value (although there is a bug that ends up grouping by all tags if more than one is present). It also requires that the tag(s) be defined at the root level of the OpenAPI spec in addition to being listed under each operation (method). I would check to make sure your tags are defined under each operation and at the root level.
In theory, we will eventually support grouping in other ways, such as by specification/file (when dealing with multi-spec) but the tech specs are still being fleshed out. Another idea is to add support for vendor extensions like ReDoc's x-tagGroups: https://redocly.com/docs/api-reference-docs/specification-extensions/x-tag-groups/ but it gets complicated when handling multi-spec.
The categoryLinkSource option is for determining which source to use as the category link description, whether linking to a doc or a generated-index. See this for more details. Unless you're handling multi-spec, you'll probably always choose "tag" as the categoryLinkSource. What this means is that the description defined under the root level OpenAPI tags will be used as the category link description for the generated-index. Sorry if that's confusing, but the intent was to carry over the tag description to use as the generated-index description. The idea is if you're grouping by tag, a tag's description should best describe the operations under that tag grouping.
Hey, @sserrata! Thanks for the response and the explanation π I thought we already did list our tags at the root level, but apparently not. However, now that we do, I'm still not seeing them. Would you have any idea why?
I don't have time to do a full deep dive now (it's late in the day here), but just thought I'd mention it in case you have other ideas. I'll probably get back to you tomorrow with a more thorough investigation.
If it helps, here's the current spec we're using (heads up: it's about 6000 lines π± ):
OpenAPI schema in json format
{
"openapi": "3.0.3",
"servers": [
{
"url": "http://localhost:4242"
}
],
"info": {
"title": "Unleash API",
"version": "4.14.0"
},
"security": [
{
"apiKey": []
}
],
"components": {
"securitySchemes": {
"apiKey": {
"type": "apiKey",
"in": "header",
"name": "Authorization"
}
},
"schemas": {
"addonParameterSchema": {
"type": "object",
"required": [
"name",
"displayName",
"type",
"required",
"sensitive"
],
"properties": {
"name": {
"type": "string"
},
"displayName": {
"type": "string"
},
"type": {
"type": "string"
},
"description": {
"type": "string"
},
"placeholder": {
"type": "string"
},
"required": {
"type": "boolean"
},
"sensitive": {
"type": "boolean"
}
}
},
"addonSchema": {
"type": "object",
"required": [
"provider",
"enabled",
"parameters",
"events"
],
"properties": {
"id": {
"type": "number"
},
"createdAt": {
"type": "string",
"format": "date-time",
"nullable": true
},
"provider": {
"type": "string"
},
"description": {
"type": "string"
},
"enabled": {
"type": "boolean"
},
"parameters": {
"type": "object",
"additionalProperties": true
},
"events": {
"type": "array",
"items": {
"type": "string"
}
},
"projects": {
"type": "array",
"items": {
"type": "string"
}
},
"environments": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"addonsSchema": {
"type": "object",
"required": [
"addons",
"providers"
],
"properties": {
"addons": {
"type": "array",
"items": {
"$ref": "#/components/schemas/addonSchema"
}
},
"providers": {
"type": "array",
"items": {
"$ref": "#/components/schemas/addonTypeSchema"
}
}
}
},
"addonTypeSchema": {
"type": "object",
"required": [
"name",
"displayName",
"documentationUrl",
"description"
],
"properties": {
"name": {
"type": "string"
},
"displayName": {
"type": "string"
},
"documentationUrl": {
"type": "string"
},
"description": {
"type": "string"
},
"tagTypes": {
"type": "array",
"items": {
"$ref": "#/components/schemas/tagTypeSchema"
}
},
"parameters": {
"type": "array",
"items": {
"$ref": "#/components/schemas/addonParameterSchema"
}
},
"events": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"apiTokenSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"username",
"type"
],
"properties": {
"secret": {
"type": "string"
},
"username": {
"type": "string"
},
"type": {
"type": "string",
"description": "client, admin."
},
"environment": {
"type": "string"
},
"project": {
"type": "string"
},
"projects": {
"type": "array",
"items": {
"type": "string"
}
},
"expiresAt": {
"type": "string",
"format": "date-time",
"nullable": true
},
"createdAt": {
"type": "string",
"format": "date-time",
"nullable": true
},
"seenAt": {
"type": "string",
"format": "date-time",
"nullable": true
}
}
},
"apiTokensSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"tokens"
],
"properties": {
"tokens": {
"type": "array",
"items": {
"$ref": "#/components/schemas/apiTokenSchema"
}
}
}
},
"applicationSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"appName"
],
"properties": {
"appName": {
"type": "string"
},
"sdkVersion": {
"type": "string"
},
"strategies": {
"type": "array",
"items": {
"type": "string"
}
},
"description": {
"type": "string"
},
"url": {
"type": "string"
},
"color": {
"type": "string"
},
"icon": {
"type": "string"
},
"announced": {
"type": "boolean"
}
}
},
"applicationsSchema": {
"type": "object",
"properties": {
"applications": {
"type": "array",
"items": {
"$ref": "#/components/schemas/applicationSchema"
}
}
}
},
"bootstrapUiSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"uiConfig",
"user",
"email",
"context",
"featureTypes",
"tagTypes",
"strategies",
"projects"
],
"properties": {
"uiConfig": {
"$ref": "#/components/schemas/uiConfigSchema"
},
"user": {
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "number"
},
"isAPI": {
"type": "boolean"
},
"name": {
"type": "string"
},
"email": {
"type": "string"
},
"username": {
"type": "string"
},
"imageUrl": {
"type": "string"
},
"inviteLink": {
"type": "string"
},
"loginAttempts": {
"type": "number"
},
"emailSent": {
"type": "boolean"
},
"rootRole": {
"type": "number"
},
"seenAt": {
"type": "string",
"format": "date-time",
"nullable": true
},
"createdAt": {
"type": "string",
"format": "date-time"
},
"permissions": {
"type": "array",
"items": {
"$ref": "#/components/schemas/permissionSchema"
}
}
}
},
"email": {
"type": "boolean"
},
"context": {
"type": "array",
"items": {
"$ref": "#/components/schemas/contextFieldSchema"
}
},
"featureTypes": {
"type": "array",
"items": {
"$ref": "#/components/schemas/featureTypeSchema"
}
},
"tagTypes": {
"type": "array",
"items": {
"$ref": "#/components/schemas/tagTypeSchema"
}
},
"strategies": {
"type": "array",
"items": {
"$ref": "#/components/schemas/strategySchema"
}
},
"projects": {
"type": "array",
"items": {
"$ref": "#/components/schemas/projectSchema"
}
}
}
},
"changePasswordSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"token",
"password"
],
"properties": {
"token": {
"type": "string"
},
"password": {
"type": "string"
}
}
},
"clientApplicationSchema": {
"type": "object",
"required": [
"appName",
"interval",
"started",
"strategies"
],
"properties": {
"appName": {
"type": "string"
},
"instanceId": {
"type": "string"
},
"sdkVersion": {
"type": "string"
},
"environment": {
"type": "string"
},
"interval": {
"type": "number"
},
"started": {
"oneOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "number"
}
]
},
"strategies": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"clientFeatureSchema": {
"type": "object",
"required": [
"name",
"enabled"
],
"additionalProperties": false,
"properties": {
"name": {
"type": "string"
},
"type": {
"type": "string"
},
"description": {
"type": "string",
"nullable": true
},
"createdAt": {
"type": "string",
"format": "date-time",
"nullable": true
},
"lastSeenAt": {
"type": "string",
"format": "date-time",
"nullable": true
},
"enabled": {
"type": "boolean"
},
"stale": {
"type": "boolean"
},
"impressionData": {
"type": "boolean",
"nullable": true
},
"project": {
"type": "string"
},
"strategies": {
"type": "array",
"items": {
"$ref": "#/components/schemas/featureStrategySchema"
}
},
"variants": {
"type": "array",
"items": {
"$ref": "#/components/schemas/clientVariantSchema"
},
"nullable": true
}
}
},
"clientFeaturesQuerySchema": {
"type": "object",
"additionalProperties": false,
"properties": {
"tag": {
"type": "array",
"items": {
"type": "array",
"items": {
"type": "string"
}
}
},
"project": {
"type": "array",
"items": {
"type": "string"
}
},
"namePrefix": {
"type": "string"
},
"environment": {
"type": "string"
},
"inlineSegmentConstraints": {
"type": "boolean"
}
}
},
"clientFeaturesSchema": {
"type": "object",
"required": [
"version",
"features"
],
"properties": {
"version": {
"type": "number"
},
"features": {
"type": "array",
"items": {
"$ref": "#/components/schemas/clientFeatureSchema"
}
},
"segments": {
"type": "array",
"items": {
"$ref": "#/components/schemas/segmentSchema"
}
},
"query": {
"$ref": "#/components/schemas/clientFeaturesQuerySchema"
}
}
},
"clientMetricsSchema": {
"type": "object",
"required": [
"appName",
"bucket"
],
"properties": {
"appName": {
"type": "string"
},
"instanceId": {
"type": "string"
},
"environment": {
"type": "string"
},
"bucket": {
"type": "object",
"required": [
"start",
"stop",
"toggles"
],
"properties": {
"start": {
"$ref": "#/components/schemas/dateSchema"
},
"stop": {
"$ref": "#/components/schemas/dateSchema"
},
"toggles": {
"type": "object",
"additionalProperties": {
"type": "object",
"properties": {
"yes": {
"type": "integer",
"minimum": 0
},
"no": {
"type": "integer",
"minimum": 0
},
"variants": {
"type": "object",
"additionalProperties": {
"type": "integer",
"minimum": 0
}
}
}
}
}
}
}
}
},
"clientVariantSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"weight"
],
"properties": {
"name": {
"type": "string"
},
"weight": {
"type": "number"
},
"weightType": {
"type": "string"
},
"stickiness": {
"type": "string"
},
"payload": {
"type": "object",
"required": [
"type",
"value"
],
"properties": {
"type": {
"type": "string"
},
"value": {
"type": "string"
}
}
}
}
},
"cloneFeatureSchema": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string"
},
"replaceGroupId": {
"type": "boolean"
}
}
},
"constraintSchema": {
"additionalProperties": false,
"type": "object",
"required": [
"contextName",
"operator"
],
"description": "A strategy constraint. For more information, refer to [the strategy constraint reference documentation](https://docs.getunleash.io/advanced/strategy_constraints)",
"properties": {
"contextName": {
"description": "The name of the context field that this constraint should apply to.",
"example": "appName",
"type": "string"
},
"operator": {
"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/advanced/strategy_constraints#strategy-constraint-operators).",
"type": "string",
"enum": [
"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"
]
},
"caseInsensitive": {
"description": "Whether the operator should be case sensitive or not. Defaults to `false` (being case sensitive).",
"type": "boolean",
"default": false
},
"inverted": {
"description": "Whether the result should be negated or not. If `true`, will turn a `true` result into a `false` result and vice versa.",
"type": "boolean",
"default": false
},
"values": {
"type": "array",
"description": "The context values that should be used for constraint evaluation. Use this property instead of `value` for properties that accept multiple values.",
"items": {
"type": "string"
}
},
"value": {
"description": "The context value that should be used for constraint evaluation. Use this property instead of `values` for properties that only accept single values.",
"type": "string"
}
}
},
"contextFieldSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"name"
],
"properties": {
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"stickiness": {
"type": "boolean"
},
"sortOrder": {
"type": "number"
},
"createdAt": {
"type": "string",
"format": "date-time",
"nullable": true
},
"legalValues": {
"type": "array",
"items": {
"$ref": "#/components/schemas/legalValueSchema"
}
}
}
},
"contextFieldsSchema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/contextFieldSchema"
}
},
"createApiTokenSchema": {
"type": "object",
"required": [
"username",
"type"
],
"properties": {
"secret": {
"type": "string"
},
"username": {
"type": "string"
},
"type": {
"type": "string",
"description": "client, admin."
},
"environment": {
"type": "string"
},
"project": {
"type": "string"
},
"projects": {
"type": "array",
"items": {
"type": "string"
}
},
"expiresAt": {
"type": "string",
"format": "date-time",
"nullable": true
}
}
},
"createFeatureSchema": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string"
},
"type": {
"type": "string"
},
"description": {
"type": "string"
},
"impressionData": {
"type": "boolean"
}
}
},
"createFeatureStrategySchema": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string"
},
"sortOrder": {
"type": "number"
},
"constraints": {
"type": "array",
"items": {
"$ref": "#/components/schemas/constraintSchema"
}
},
"parameters": {
"$ref": "#/components/schemas/parametersSchema"
}
}
},
"createUserSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"rootRole"
],
"properties": {
"username": {
"type": "string"
},
"email": {
"type": "string"
},
"name": {
"type": "string"
},
"password": {
"type": "string"
},
"rootRole": {
"type": "number"
},
"sendEmail": {
"type": "boolean"
}
}
},
"dateSchema": {
"oneOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "number"
}
]
},
"emailSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"email"
],
"properties": {
"email": {
"type": "string"
}
}
},
"environmentSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"type",
"enabled"
],
"properties": {
"name": {
"type": "string"
},
"type": {
"type": "string"
},
"enabled": {
"type": "boolean"
},
"protected": {
"type": "boolean"
},
"sortOrder": {
"type": "number"
}
}
},
"environmentsSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"version",
"environments"
],
"properties": {
"version": {
"type": "integer"
},
"environments": {
"type": "array",
"items": {
"$ref": "#/components/schemas/environmentSchema"
}
}
}
},
"eventSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"id",
"createdAt",
"type",
"createdBy"
],
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"createdAt": {
"type": "string",
"format": "date-time"
},
"type": {
"type": "string"
},
"createdBy": {
"type": "string"
},
"environment": {
"type": "string",
"nullable": true
},
"project": {
"type": "string",
"nullable": true
},
"featureName": {
"type": "string",
"nullable": true
},
"data": {
"type": "object",
"nullable": true
},
"preData": {
"type": "object",
"nullable": true
},
"tags": {
"type": "array",
"items": {
"$ref": "#/components/schemas/tagSchema"
},
"nullable": true
}
}
},
"eventsSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"version",
"events"
],
"properties": {
"version": {
"type": "integer",
"minimum": 1
},
"events": {
"type": "array",
"items": {
"$ref": "#/components/schemas/eventSchema"
}
}
}
},
"featureEnvironmentMetricsSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"environment",
"timestamp",
"yes",
"no"
],
"properties": {
"featureName": {
"type": "string"
},
"appName": {
"type": "string"
},
"environment": {
"type": "string"
},
"timestamp": {
"type": "string",
"format": "date-time"
},
"yes": {
"type": "number"
},
"no": {
"type": "number"
}
}
},
"featureEnvironmentSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"enabled"
],
"properties": {
"name": {
"type": "string"
},
"environment": {
"type": "string"
},
"type": {
"type": "string"
},
"enabled": {
"type": "boolean"
},
"strategies": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"id",
"featureName",
"projectId",
"environment",
"strategyName",
"constraints",
"parameters"
],
"properties": {
"id": {
"type": "string"
},
"featureName": {
"type": "string"
},
"projectId": {
"type": "string"
},
"environment": {
"type": "string"
},
"strategyName": {
"type": "string"
},
"sortOrder": {
"type": "number"
},
"createdAt": {
"type": "string",
"format": "date-time"
},
"constraints": {
"type": "array",
"items": {
"$ref": "#/components/schemas/constraintSchema"
}
},
"parameters": {
"$ref": "#/components/schemas/parametersSchema"
}
}
}
}
}
},
"featureEventsSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"toggleName",
"events"
],
"properties": {
"version": {
"type": "number"
},
"toggleName": {
"type": "string"
},
"events": {
"type": "array",
"items": {
"$ref": "#/components/schemas/eventSchema"
}
}
}
},
"featureMetricsSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"version",
"maturity",
"data"
],
"properties": {
"version": {
"type": "number"
},
"maturity": {
"type": "string"
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/featureEnvironmentMetricsSchema"
}
}
}
},
"featureSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"name"
],
"properties": {
"name": {
"type": "string"
},
"type": {
"type": "string"
},
"description": {
"type": "string"
},
"archived": {
"type": "boolean"
},
"project": {
"type": "string"
},
"enabled": {
"type": "boolean"
},
"stale": {
"type": "boolean"
},
"impressionData": {
"type": "boolean"
},
"createdAt": {
"type": "string",
"format": "date-time",
"nullable": true
},
"archivedAt": {
"type": "string",
"format": "date-time",
"nullable": true
},
"lastSeenAt": {
"type": "string",
"format": "date-time",
"nullable": true
},
"environments": {
"type": "array",
"items": {
"$ref": "#/components/schemas/environmentSchema"
}
},
"strategies": {
"type": "array",
"items": {
"$ref": "#/components/schemas/featureStrategySchema"
}
},
"variants": {
"type": "array",
"items": {
"$ref": "#/components/schemas/variantSchema"
}
}
}
},
"featuresSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"version",
"features"
],
"properties": {
"version": {
"type": "integer"
},
"features": {
"type": "array",
"items": {
"$ref": "#/components/schemas/featureSchema"
}
}
}
},
"featureStrategySchema": {
"type": "object",
"additionalProperties": false,
"required": [
"name"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"sortOrder": {
"type": "number"
},
"segments": {
"type": "array",
"items": {
"type": "number"
}
},
"constraints": {
"type": "array",
"items": {
"$ref": "#/components/schemas/constraintSchema"
}
},
"parameters": {
"$ref": "#/components/schemas/parametersSchema"
}
}
},
"featureStrategySegmentSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"segmentId",
"featureStrategyId"
],
"properties": {
"segmentId": {
"type": "integer"
},
"featureStrategyId": {
"type": "string"
}
}
},
"featureTagSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"featureName",
"tagValue"
],
"properties": {
"featureName": {
"type": "string"
},
"tagType": {
"type": "string"
},
"tagValue": {
"type": "string"
},
"type": {
"type": "string"
},
"value": {
"type": "string"
}
}
},
"featureTypeSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"id",
"name",
"description",
"lifetimeDays"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"lifetimeDays": {
"type": "number",
"nullable": true
}
}
},
"featureTypesSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"version",
"types"
],
"properties": {
"version": {
"type": "integer"
},
"types": {
"type": "array",
"items": {
"$ref": "#/components/schemas/featureTypeSchema"
}
}
}
},
"featureUsageSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"version",
"maturity",
"featureName",
"lastHourUsage",
"seenApplications"
],
"properties": {
"version": {
"type": "number"
},
"maturity": {
"type": "string"
},
"featureName": {
"type": "string"
},
"lastHourUsage": {
"type": "array",
"items": {
"$ref": "#/components/schemas/featureEnvironmentMetricsSchema"
}
},
"seenApplications": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"featureVariantsSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"version",
"variants"
],
"properties": {
"version": {
"type": "integer"
},
"variants": {
"type": "array",
"items": {
"$ref": "#/components/schemas/variantSchema"
}
}
}
},
"feedbackSchema": {
"type": "object",
"additionalProperties": false,
"properties": {
"userId": {
"type": "number"
},
"feedbackId": {
"type": "string"
},
"neverShow": {
"type": "boolean"
},
"given": {
"type": "string",
"format": "date-time",
"nullable": true
}
}
},
"groupSchema": {
"type": "object",
"additionalProperties": true,
"required": [
"name"
],
"properties": {
"id": {
"type": "number"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"createdBy": {
"type": "string",
"nullable": true
},
"createdAt": {
"type": "string",
"format": "date-time",
"nullable": true
},
"users": {
"type": "array",
"items": {
"$ref": "#/components/schemas/groupUserModelSchema"
}
},
"projects": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"groupsSchema": {
"type": "object",
"additionalProperties": false,
"properties": {
"groups": {
"type": "array",
"items": {
"$ref": "#/components/schemas/groupSchema"
}
}
}
},
"groupUserModelSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"role",
"user"
],
"properties": {
"joinedAt": {
"type": "string",
"format": "date-time"
},
"role": {
"type": "string"
},
"user": {
"$ref": "#/components/schemas/userSchema"
}
}
},
"healthCheckSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"health"
],
"properties": {
"health": {
"type": "string",
"enum": [
"GOOD",
"BAD"
]
}
}
},
"healthOverviewSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"version",
"name"
],
"properties": {
"version": {
"type": "number"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"members": {
"type": "number"
},
"health": {
"type": "number"
},
"environments": {
"type": "array",
"items": {
"type": "string"
}
},
"features": {
"type": "array",
"items": {
"$ref": "#/components/schemas/featureSchema"
}
},
"updatedAt": {
"type": "string",
"format": "date-time",
"nullable": true
}
}
},
"healthReportSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"version",
"name",
"potentiallyStaleCount",
"activeCount",
"staleCount"
],
"properties": {
"version": {
"type": "number"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"members": {
"type": "number"
},
"health": {
"type": "number"
},
"environments": {
"type": "array",
"items": {
"type": "string"
}
},
"features": {
"type": "array",
"items": {
"$ref": "#/components/schemas/featureSchema"
}
},
"updatedAt": {
"type": "string",
"format": "date-time",
"nullable": true
},
"potentiallyStaleCount": {
"type": "number"
},
"activeCount": {
"type": "number"
},
"staleCount": {
"type": "number"
}
}
},
"idSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"id"
],
"properties": {
"id": {
"type": "string"
}
}
},
"legalValueSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"value"
],
"properties": {
"value": {
"type": "string"
},
"description": {
"type": "string"
}
}
},
"loginSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"username",
"password"
],
"properties": {
"username": {
"type": "string"
},
"password": {
"type": "string"
}
}
},
"meSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"user",
"permissions",
"feedback",
"splash"
],
"properties": {
"user": {
"$ref": "#/components/schemas/userSchema"
},
"permissions": {
"type": "array",
"items": {
"$ref": "#/components/schemas/permissionSchema"
}
},
"feedback": {
"type": "array",
"items": {
"$ref": "#/components/schemas/feedbackSchema"
}
},
"splash": {
"type": "object",
"additionalProperties": {
"type": "boolean"
}
}
}
},
"nameSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"name"
],
"properties": {
"name": {
"type": "string"
}
}
},
"overrideSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"contextName",
"values"
],
"properties": {
"contextName": {
"type": "string"
},
"values": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"parametersSchema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"passwordSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"password"
],
"properties": {
"password": {
"type": "string"
},
"confirmPassword": {
"type": "string"
}
}
},
"patchesSchema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/patchSchema"
}
},
"patchSchema": {
"type": "object",
"required": [
"path",
"op"
],
"properties": {
"path": {
"type": "string"
},
"op": {
"type": "string",
"enum": [
"add",
"remove",
"replace",
"copy",
"move"
]
},
"from": {
"type": "string"
},
"value": {}
}
},
"permissionSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"permission"
],
"properties": {
"permission": {
"type": "string"
},
"project": {
"type": "string"
},
"environment": {
"type": "string"
}
}
},
"playgroundFeatureSchema": {
"description": "A simplified feature toggle model intended for the Unleash playground.",
"type": "object",
"additionalProperties": false,
"required": [
"name",
"projectId",
"isEnabled",
"isEnabledInCurrentEnvironment",
"variant",
"variants",
"strategies"
],
"properties": {
"name": {
"type": "string",
"example": "my-feature",
"description": "The feature's name."
},
"projectId": {
"type": "string",
"example": "my-project",
"description": "The ID of the project that contains this feature."
},
"strategies": {
"type": "object",
"additionalProperties": false,
"required": [
"result",
"data"
],
"properties": {
"result": {
"description": "The cumulative results of all the feature's strategies. Can be `true`,\n `false`, or `unknown`.\n This property will only be `unknown`\n if one or more of the strategies can't be fully evaluated and the rest of the strategies\n all resolve to `false`.",
"anyOf": [
{
"type": "boolean"
},
{
"type": "string",
"enum": [
"unknown"
]
}
]
},
"data": {
"description": "The strategies that apply to this feature.",
"type": "array",
"items": {
"$ref": "#/components/schemas/playgroundStrategySchema"
}
}
}
},
"isEnabledInCurrentEnvironment": {
"type": "boolean",
"description": "Whether the feature is active and would be evaluated in the provided environment in a normal SDK context."
},
"isEnabled": {
"description": "Whether this feature is enabled or not in the current environment.\n If a feature can't be fully evaluated (that is, `strategies.result` is `unknown`),\n this will be `false` to align with how client SDKs treat unresolved feature states.",
"type": "boolean",
"example": true
},
"variant": {
"description": "The feature variant you receive based on the provided context or the _disabled\n variant_. If a feature is disabled or doesn't have any\n variants, you would get the _disabled variant_.\n Otherwise, you'll get one of thefeature's defined variants.",
"type": "object",
"additionalProperties": false,
"required": [
"name",
"enabled"
],
"properties": {
"name": {
"type": "string",
"description": "The variant's name. If there is no variant or if the toggle is disabled, this will be `disabled`",
"example": "red-variant"
},
"enabled": {
"type": "boolean",
"description": "Whether the variant is enabled or not. If the feature is disabled or if it doesn't have variants, this property will be `false`"
},
"payload": {
"type": "object",
"additionalProperties": false,
"required": [
"type",
"value"
],
"description": "An optional payload attached to the variant.",
"properties": {
"type": {
"description": "The format of the payload.",
"type": "string",
"enum": [
"json",
"csv",
"string"
]
},
"value": {
"type": "string",
"description": "The payload value stringified.",
"example": "{\"property\": \"value\"}"
}
}
}
},
"nullable": true,
"example": {
"name": "green",
"enabled": true
}
},
"variants": {
"type": "array",
"items": {
"$ref": "#/components/schemas/variantSchema"
}
}
}
},
"playgroundStrategySchema": {
"type": "object",
"additionalProperties": false,
"required": [
"id",
"name",
"result",
"segments",
"constraints",
"parameters"
],
"properties": {
"name": {
"description": "The strategy's name.",
"type": "string"
},
"id": {
"description": "The strategy's id.",
"type": "string"
},
"result": {
"description": "The strategy's evaluation result. If the strategy is a custom strategy that Unleash can't evaluate, `evaluationStatus` will be `unknown`. Otherwise, it will be `true` or `false`",
"anyOf": [
{
"type": "object",
"additionalProperties": false,
"required": [
"evaluationStatus",
"enabled"
],
"properties": {
"evaluationStatus": {
"type": "string",
"description": "Signals that this strategy could not be evaluated. This is most likely because you're using a custom strategy that Unleash doesn't know about.",
"enum": [
"incomplete"
]
},
"enabled": {
"description": "Whether this strategy resolves to `false` or if it might resolve to `true`. Because Unleash can't evaluate the strategy, it can't say for certain whether it will be `true`, but if you have failing constraints or segments, it _can_ determine that your strategy would be `false`.",
"anyOf": [
{
"type": "boolean",
"enum": [
false
]
},
{
"type": "string",
"enum": [
"unknown"
]
}
]
}
}
},
{
"type": "object",
"additionalProperties": false,
"required": [
"evaluationStatus",
"enabled"
],
"properties": {
"evaluationStatus": {
"description": "Signals that this strategy was evaluated successfully.",
"type": "string",
"enum": [
"complete"
]
},
"enabled": {
"type": "boolean",
"description": "Whether this strategy evaluates to true or not."
}
}
}
]
},
"segments": {
"type": "array",
"description": "The strategy's segments and their evaluation results.",
"items": {
"$ref": "#/components/schemas/playgroundSegmentSchema"
}
},
"constraints": {
"type": "array",
"description": "The strategy's constraints and their evaluation results.",
"items": {
"$ref": "#/components/schemas/playgroundConstraintSchema"
}
},
"parameters": {
"description": "The strategy's constraints and their evaluation results.",
"example": {
"myParam1": "param value"
},
"$ref": "#/components/schemas/parametersSchema"
}
}
},
"playgroundConstraintSchema": {
"additionalProperties": false,
"type": "object",
"required": [
"contextName",
"operator",
"result"
],
"description": "A strategy constraint. For more information, refer to [the strategy constraint reference documentation](https://docs.getunleash.io/advanced/strategy_constraints)",
"properties": {
"contextName": {
"description": "The name of the context field that this constraint should apply to.",
"example": "appName",
"type": "string"
},
"operator": {
"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/advanced/strategy_constraints#strategy-constraint-operators).",
"type": "string",
"enum": [
"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"
]
},
"caseInsensitive": {
"description": "Whether the operator should be case sensitive or not. Defaults to `false` (being case sensitive).",
"type": "boolean",
"default": false
},
"inverted": {
"description": "Whether the result should be negated or not. If `true`, will turn a `true` result into a `false` result and vice versa.",
"type": "boolean",
"default": false
},
"values": {
"type": "array",
"description": "The context values that should be used for constraint evaluation. Use this property instead of `value` for properties that accept multiple values.",
"items": {
"type": "string"
}
},
"value": {
"description": "The context value that should be used for constraint evaluation. Use this property instead of `values` for properties that only accept single values.",
"type": "string"
},
"result": {
"description": "Whether this was evaluated as true or false.",
"type": "boolean"
}
}
},
"playgroundSegmentSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"id",
"constraints",
"result"
],
"properties": {
"id": {
"description": "The segment's id.",
"type": "integer"
},
"name": {
"description": "The name of the segment.",
"example": "segment A",
"type": "string"
},
"result": {
"description": "Whether this was evaluated as true or false.",
"type": "boolean"
},
"constraints": {
"type": "array",
"description": "The list of constraints in this segment.",
"items": {
"$ref": "#/components/schemas/playgroundConstraintSchema"
}
}
}
},
"playgroundRequestSchema": {
"description": "Data for the playground API to evaluate toggles",
"type": "object",
"required": [
"environment",
"context"
],
"properties": {
"environment": {
"type": "string",
"example": "development",
"description": "The environment to evaluate toggles in."
},
"projects": {
"oneOf": [
{
"type": "array",
"items": {
"type": "string"
},
"example": [
"my-project"
],
"description": "A list of projects to check for toggles in."
},
{
"type": "string",
"enum": [
"*"
],
"description": "Check toggles in all projects."
}
]
},
"context": {
"description": "The context to use when evaluating toggles",
"$ref": "#/components/schemas/sdkContextSchema"
}
}
},
"playgroundResponseSchema": {
"description": "The state of all features given the provided input.",
"type": "object",
"additionalProperties": false,
"required": [
"features",
"input"
],
"properties": {
"input": {
"description": "The given input used to evaluate the features.",
"$ref": "#/components/schemas/playgroundRequestSchema"
},
"features": {
"type": "array",
"description": "The list of features that have been evaluated.",
"items": {
"$ref": "#/components/schemas/playgroundFeatureSchema"
}
}
}
},
"projectEnvironmentSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"environment"
],
"properties": {
"environment": {
"type": "string"
}
}
},
"projectSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"id",
"name"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"health": {
"type": "number"
},
"featureCount": {
"type": "number"
},
"memberCount": {
"type": "number"
},
"createdAt": {
"type": "string",
"format": "date-time"
},
"updatedAt": {
"type": "string",
"format": "date-time",
"nullable": true
}
}
},
"projectsSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"version",
"projects"
],
"properties": {
"version": {
"type": "integer"
},
"projects": {
"type": "array",
"items": {
"$ref": "#/components/schemas/projectSchema"
}
}
}
},
"resetPasswordSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"resetPasswordUrl"
],
"properties": {
"resetPasswordUrl": {
"type": "string"
}
}
},
"roleSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"id",
"type",
"name"
],
"properties": {
"id": {
"type": "number"
},
"type": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
}
}
},
"sdkContextSchema": {
"description": "The Unleash context as modeled in client SDKs",
"type": "object",
"additionalProperties": {
"type": "string",
"example": "top-level custom context value"
},
"required": [
"appName"
],
"properties": {
"appName": {
"type": "string",
"minLength": 1,
"example": "My cool application."
},
"currentTime": {
"type": "string",
"format": "date-time",
"example": "2022-07-05T12:56:41+02:00"
},
"environment": {
"type": "string",
"deprecated": true
},
"properties": {
"type": "object",
"additionalProperties": {
"type": "string"
},
"example": {
"customContextField": "this is one!",
"otherCustomField": "3"
}
},
"remoteAddress": {
"type": "string",
"example": "192.168.1.1"
},
"sessionId": {
"type": "string",
"example": "b65e7b23-fec0-4814-a129-0e9861ef18fc"
},
"userId": {
"type": "string",
"example": "[email protected]"
}
}
},
"segmentSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"id",
"constraints"
],
"properties": {
"id": {
"type": "number"
},
"name": {
"type": "string"
},
"description": {
"type": "string",
"nullable": true
},
"constraints": {
"type": "array",
"items": {
"$ref": "#/components/schemas/constraintSchema"
}
}
}
},
"setStrategySortOrderSchema": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"id",
"sortOrder"
],
"properties": {
"id": {
"type": "string"
},
"sortOrder": {
"type": "number"
}
}
}
},
"sortOrderSchema": {
"type": "object",
"additionalProperties": {
"type": "number"
}
},
"splashSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"userId",
"splashId",
"seen"
],
"properties": {
"userId": {
"type": "number"
},
"splashId": {
"type": "string"
},
"seen": {
"type": "boolean"
}
}
},
"stateSchema": {
"type": "object",
"additionalProperties": true,
"required": [
"version"
],
"properties": {
"version": {
"type": "integer"
},
"features": {
"type": "array",
"items": {
"$ref": "#/components/schemas/featureSchema"
}
},
"strategies": {
"type": "array",
"items": {
"$ref": "#/components/schemas/strategySchema"
}
},
"tags": {
"type": "array",
"items": {
"$ref": "#/components/schemas/tagSchema"
}
},
"tagTypes": {
"type": "array",
"items": {
"$ref": "#/components/schemas/tagTypeSchema"
}
},
"featureTags": {
"type": "array",
"items": {
"$ref": "#/components/schemas/featureTagSchema"
}
},
"projects": {
"type": "array",
"items": {
"$ref": "#/components/schemas/projectSchema"
}
},
"featureStrategies": {
"type": "array",
"items": {
"$ref": "#/components/schemas/featureStrategySchema"
}
},
"featureEnvironments": {
"type": "array",
"items": {
"$ref": "#/components/schemas/featureEnvironmentSchema"
}
},
"environments": {
"type": "array",
"items": {
"$ref": "#/components/schemas/environmentSchema"
}
},
"segments": {
"type": "array",
"items": {
"$ref": "#/components/schemas/segmentSchema"
}
},
"featureStrategySegments": {
"type": "array",
"items": {
"$ref": "#/components/schemas/featureStrategySegmentSchema"
}
}
}
},
"strategiesSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"version",
"strategies"
],
"properties": {
"version": {
"type": "integer"
},
"strategies": {
"type": "array",
"items": {
"$ref": "#/components/schemas/strategySchema"
}
}
}
},
"strategySchema": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"displayName",
"description",
"editable",
"deprecated",
"parameters"
],
"properties": {
"name": {
"type": "string"
},
"displayName": {
"type": "string",
"nullable": true
},
"description": {
"type": "string"
},
"editable": {
"type": "boolean"
},
"deprecated": {
"type": "boolean"
},
"parameters": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"name": {
"type": "string"
},
"type": {
"type": "string"
},
"description": {
"type": "string"
},
"required": {
"type": "boolean"
}
}
}
}
}
},
"tagSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"value",
"type"
],
"properties": {
"value": {
"type": "string"
},
"type": {
"type": "string"
}
}
},
"tagsSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"version",
"tags"
],
"properties": {
"version": {
"type": "integer"
},
"tags": {
"type": "array",
"items": {
"$ref": "#/components/schemas/tagSchema"
}
}
}
},
"tagTypeSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"name"
],
"properties": {
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"icon": {
"type": "string",
"nullable": true
}
}
},
"tagTypesSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"version",
"tagTypes"
],
"properties": {
"version": {
"type": "integer"
},
"tagTypes": {
"type": "array",
"items": {
"$ref": "#/components/schemas/tagTypeSchema"
}
}
}
},
"tagWithVersionSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"version",
"tag"
],
"properties": {
"version": {
"type": "integer"
},
"tag": {
"$ref": "#/components/schemas/tagSchema"
}
}
},
"tokenUserSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"id",
"name",
"email",
"token",
"createdBy",
"role"
],
"properties": {
"id": {
"type": "number"
},
"name": {
"type": "string"
},
"email": {
"type": "string"
},
"token": {
"type": "string"
},
"createdBy": {
"type": "string",
"nullable": true
},
"role": {
"$ref": "#/components/schemas/roleSchema"
}
}
},
"uiConfigSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"version",
"unleashUrl",
"baseUriPath",
"versionInfo"
],
"properties": {
"slogan": {
"type": "string"
},
"name": {
"type": "string"
},
"version": {
"type": "string"
},
"environment": {
"type": "string"
},
"unleashUrl": {
"type": "string"
},
"baseUriPath": {
"type": "string"
},
"disablePasswordAuth": {
"type": "boolean"
},
"segmentValuesLimit": {
"type": "number"
},
"strategySegmentsLimit": {
"type": "number"
},
"flags": {
"type": "object",
"additionalProperties": {
"type": "boolean"
}
},
"links": {
"type": "array",
"items": {
"type": "object"
}
},
"authenticationType": {
"type": "string",
"enum": [
"open-source",
"demo",
"enterprise",
"hosted",
"custom",
"none"
]
},
"versionInfo": {
"$ref": "#/components/schemas/versionSchema"
}
}
},
"updateApiTokenSchema": {
"type": "object",
"required": [
"expiresAt"
],
"properties": {
"expiresAt": {
"type": "string",
"format": "date-time"
}
}
},
"updateFeatureSchema": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"type": {
"type": "string"
},
"stale": {
"type": "boolean"
},
"archived": {
"type": "boolean"
},
"createdAt": {
"type": "string",
"format": "date-time"
},
"impressionData": {
"type": "boolean"
},
"constraints": {
"type": "array",
"items": {
"$ref": "#/components/schemas/constraintSchema"
}
}
}
},
"updateFeatureStrategySchema": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"sortOrder": {
"type": "number"
},
"constraints": {
"type": "array",
"items": {
"$ref": "#/components/schemas/constraintSchema"
}
},
"parameters": {
"$ref": "#/components/schemas/parametersSchema"
}
}
},
"updateTagTypeSchema": {
"type": "object",
"properties": {
"description": {
"type": "string"
},
"icon": {
"type": "string"
}
}
},
"updateUserSchema": {
"type": "object",
"additionalProperties": true,
"properties": {
"email": {
"type": "string"
},
"name": {
"type": "string"
},
"rootRole": {
"type": "number"
}
}
},
"upsertContextFieldSchema": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"stickiness": {
"type": "boolean"
},
"sortOrder": {
"type": "number"
},
"legalValues": {
"type": "array",
"items": {
"$ref": "#/components/schemas/legalValueSchema"
}
}
}
},
"upsertStrategySchema": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"editable": {
"type": "boolean"
},
"parameters": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"type": {
"type": "string"
},
"description": {
"type": "string"
},
"required": {
"type": "boolean"
}
}
}
}
}
},
"usersGroupsBaseSchema": {
"type": "object",
"additionalProperties": false,
"properties": {
"groups": {
"type": "array",
"items": {
"$ref": "#/components/schemas/groupSchema"
}
},
"users": {
"type": "array",
"items": {
"$ref": "#/components/schemas/userSchema"
}
}
}
},
"userSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"id"
],
"properties": {
"id": {
"type": "number"
},
"isAPI": {
"type": "boolean"
},
"name": {
"type": "string"
},
"email": {
"type": "string"
},
"username": {
"type": "string"
},
"imageUrl": {
"type": "string"
},
"inviteLink": {
"type": "string"
},
"loginAttempts": {
"type": "number"
},
"emailSent": {
"type": "boolean"
},
"rootRole": {
"type": "number"
},
"seenAt": {
"type": "string",
"format": "date-time",
"nullable": true
},
"createdAt": {
"type": "string",
"format": "date-time"
}
}
},
"usersSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"users"
],
"properties": {
"users": {
"type": "array",
"items": {
"$ref": "#/components/schemas/userSchema"
}
},
"rootRoles": {
"type": "array",
"items": {
"$ref": "#/components/schemas/roleSchema"
}
}
}
},
"usersSearchSchema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/userSchema"
}
},
"validatePasswordSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"password"
],
"properties": {
"password": {
"type": "string"
}
}
},
"validateTagTypeSchema": {
"type": "object",
"required": [
"valid",
"tagType"
],
"properties": {
"valid": {
"type": "boolean"
},
"tagType": {
"$ref": "#/components/schemas/tagTypeSchema"
}
}
},
"variantSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"weight",
"weightType",
"stickiness"
],
"properties": {
"name": {
"type": "string"
},
"weight": {
"type": "number"
},
"weightType": {
"type": "string"
},
"stickiness": {
"type": "string"
},
"payload": {
"type": "object",
"required": [
"type",
"value"
],
"properties": {
"type": {
"type": "string"
},
"value": {
"type": "string"
}
}
},
"overrides": {
"type": "array",
"items": {
"$ref": "#/components/schemas/overrideSchema"
}
}
}
},
"variantsSchema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/variantSchema"
}
},
"versionSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"current",
"latest",
"isLatest",
"instanceId"
],
"properties": {
"current": {
"type": "object",
"additionalProperties": false,
"properties": {
"oss": {
"type": "string"
},
"enterprise": {
"type": "string"
}
}
},
"latest": {
"type": "object",
"additionalProperties": false,
"properties": {
"oss": {
"type": "string"
},
"enterprise": {
"type": "string"
}
}
},
"isLatest": {
"type": "boolean"
},
"instanceId": {
"type": "string"
}
}
}
}
},
"tags": [
{
"name": "admin"
},
{
"name": "client"
},
{
"name": "auth"
},
{
"name": "other"
}
],
"paths": {
"/health": {
"get": {
"tags": [
"other"
],
"operationId": "getHealth",
"responses": {
"200": {
"description": "healthCheckSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/healthCheckSchema"
}
}
}
},
"500": {
"description": "healthCheckSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/healthCheckSchema"
}
}
}
}
}
}
},
"/auth/simple/login": {
"post": {
"tags": [
"auth"
],
"operationId": "login",
"requestBody": {
"description": "loginSchema",
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/loginSchema"
}
}
}
},
"responses": {
"200": {
"description": "userSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/userSchema"
}
}
}
}
}
}
},
"/auth/reset/validate": {
"get": {
"tags": [
"auth"
],
"operationId": "validateToken",
"responses": {
"200": {
"description": "tokenUserSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/tokenUserSchema"
}
}
}
}
}
}
},
"/auth/reset/password": {
"post": {
"tags": [
"other"
],
"operationId": "changePassword",
"requestBody": {
"description": "changePasswordSchema",
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/changePasswordSchema"
}
}
}
},
"responses": {
"200": {
"description": "This response has no body."
}
}
}
},
"/auth/reset/validate-password": {
"post": {
"tags": [
"other"
],
"operationId": "validatePassword",
"requestBody": {
"description": "validatePasswordSchema",
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/validatePasswordSchema"
}
}
}
},
"responses": {
"200": {
"description": "This response has no body."
}
}
}
},
"/auth/reset/password-email": {
"post": {
"tags": [
"other"
],
"operationId": "sendResetPasswordEmail",
"requestBody": {
"description": "emailSchema",
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/emailSchema"
}
}
}
},
"responses": {
"200": {
"description": "This response has no body."
}
}
}
},
"/api/admin/features": {
"get": {
"tags": [
"admin"
],
"operationId": "getAllToggles",
"responses": {
"200": {
"description": "featuresSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/featuresSchema"
}
}
}
}
},
"deprecated": true
}
},
"/api/admin/features/validate": {
"post": {
"tags": [
"admin"
],
"operationId": "validateFeature",
"responses": {
"200": {
"description": "This response has no body."
}
}
}
},
"/api/admin/features/{featureName}/tags": {
"get": {
"tags": [
"admin"
],
"operationId": "listTags",
"responses": {
"200": {
"description": "tagsSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/tagsSchema"
}
}
}
}
},
"parameters": [
{
"name": "featureName",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
},
"post": {
"tags": [
"admin"
],
"operationId": "addTag",
"requestBody": {
"description": "tagSchema",
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/tagSchema"
}
}
}
},
"responses": {
"201": {
"description": "tagSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/tagSchema"
}
}
}
}
},
"parameters": [
{
"name": "featureName",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
}
},
"/api/admin/features/{featureName}/tags/{type}/{value}": {
"delete": {
"tags": [
"admin"
],
"operationId": "removeTag",
"responses": {
"200": {
"description": "This response has no body."
}
},
"parameters": [
{
"name": "featureName",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "type",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "value",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
}
},
"/api/admin/feature-types": {
"get": {
"tags": [
"admin"
],
"operationId": "getAllFeatureTypes",
"responses": {
"200": {
"description": "featureTypesSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/featureTypesSchema"
}
}
}
}
}
}
},
"/api/admin/archive/features": {
"get": {
"tags": [
"admin"
],
"operationId": "getArchivedFeatures",
"responses": {
"200": {
"description": "featuresSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/featuresSchema"
}
}
}
}
},
"deprecated": true
}
},
"/api/admin/archive/features/{projectId}": {
"get": {
"tags": [
"admin"
],
"operationId": "getArchivedFeaturesByProjectId",
"responses": {
"200": {
"description": "featuresSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/featuresSchema"
}
}
}
}
},
"deprecated": true,
"parameters": [
{
"name": "projectId",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
}
},
"/api/admin/archive/{featureName}": {
"delete": {
"tags": [
"admin"
],
"operationId": "deleteFeature",
"responses": {
"200": {
"description": "This response has no body."
}
},
"parameters": [
{
"name": "featureName",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
}
},
"/api/admin/archive/revive/{featureName}": {
"post": {
"tags": [
"admin"
],
"operationId": "reviveFeature",
"responses": {
"200": {
"description": "This response has no body."
}
},
"parameters": [
{
"name": "featureName",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
}
},
"/api/admin/strategies": {
"get": {
"tags": [
"admin"
],
"operationId": "getAllStrategies",
"responses": {
"200": {
"description": "strategiesSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/strategiesSchema"
}
}
}
}
}
},
"post": {
"tags": [
"admin"
],
"operationId": "createStrategy",
"requestBody": {
"description": "upsertStrategySchema",
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/upsertStrategySchema"
}
}
}
},
"responses": {
"201": {
"description": "This response has no body."
}
}
}
},
"/api/admin/strategies/{name}": {
"get": {
"tags": [
"admin"
],
"operationId": "getStrategy",
"responses": {
"200": {
"description": "strategySchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/strategySchema"
}
}
}
}
},
"parameters": [
{
"name": "name",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
},
"delete": {
"tags": [
"admin"
],
"operationId": "removeStrategy",
"responses": {
"200": {
"description": "This response has no body."
}
},
"parameters": [
{
"name": "name",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
}
},
"/api/admin/strategies/{strategyName}": {
"put": {
"tags": [
"admin"
],
"operationId": "updateStrategy",
"requestBody": {
"description": "upsertStrategySchema",
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/upsertStrategySchema"
}
}
}
},
"responses": {
"200": {
"description": "This response has no body."
}
},
"parameters": [
{
"name": "strategyName",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
}
},
"/api/admin/strategies/{strategyName}/deprecate": {
"post": {
"tags": [
"admin"
],
"operationId": "deprecateStrategy",
"responses": {
"200": {
"description": "This response has no body."
}
},
"parameters": [
{
"name": "strategyName",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
}
},
"/api/admin/strategies/{strategyName}/reactivate": {
"post": {
"tags": [
"admin"
],
"operationId": "reactivateStrategy",
"responses": {
"200": {
"description": "This response has no body."
}
},
"parameters": [
{
"name": "strategyName",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
}
},
"/api/admin/events": {
"get": {
"operationId": "getEvents",
"tags": [
"admin"
],
"responses": {
"200": {
"description": "eventsSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/eventsSchema"
}
}
}
},
"401": {
"description": "Authorization information is missing or invalid. Provide a valid API token as the `authorization` header, e.g. `authorization:*.*.my-admin-token`."
}
},
"parameters": [
{
"name": "project",
"description": "The name of the project whose events you want to retrieve",
"schema": {
"type": "string"
},
"in": "query"
}
],
"description": "Returns **the last 100** from the Unleash instance when called without a query parameter. When called with a `project` parameter, returns **all events** for the specified project.\n\nIf the provided project does not exist, the list of events will be empty.",
"summary": "Get the most recent events from the Unleash instance or all events related to a project."
}
},
"/api/admin/events/{featureName}": {
"get": {
"operationId": "getEventsForToggle",
"tags": [
"admin"
],
"responses": {
"200": {
"description": "featureEventsSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/featureEventsSchema"
}
}
}
},
"401": {
"description": "Authorization information is missing or invalid. Provide a valid API token as the `authorization` header, e.g. `authorization:*.*.my-admin-token`."
}
},
"description": "Returns all events related to the specified feature toggle. If the feature toggle does not exist, the list of events will be empty.",
"summary": "Get all events related to a specific feature toggle.",
"parameters": [
{
"name": "featureName",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
}
},
"/api/admin/playground": {
"post": {
"operationId": "getPlayground",
"tags": [
"admin"
],
"responses": {
"200": {
"description": "playgroundResponseSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/playgroundResponseSchema"
}
}
}
},
"400": {
"description": "The request data does not match what we expect."
},
"401": {
"description": "Authorization information is missing or invalid. Provide a valid API token as the `authorization` header, e.g. `authorization:*.*.my-admin-token`."
}
},
"requestBody": {
"description": "playgroundRequestSchema",
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/playgroundRequestSchema"
}
}
}
},
"description": "Use the provided `context`, `environment`, and `projects` to evaluate toggles on this Unleash instance. Returns a list of all toggles that match the parameters and what they evaluate to. The response also contains the input parameters that were provided.",
"summary": "Evaluate an Unleash context against a set of environments and projects."
}
},
"/api/admin/metrics/applications/{appName}": {
"post": {
"tags": [
"admin"
],
"operationId": "createApplication",
"responses": {
"202": {
"description": "This response has no body."
}
},
"requestBody": {
"description": "applicationSchema",
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/applicationSchema"
}
}
}
},
"parameters": [
{
"name": "appName",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
},
"delete": {
"tags": [
"admin"
],
"operationId": "deleteApplication",
"responses": {
"200": {
"description": "This response has no body."
}
},
"parameters": [
{
"name": "appName",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
},
"get": {
"tags": [
"admin"
],
"operationId": "getApplication",
"responses": {
"200": {
"description": "applicationSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/applicationSchema"
}
}
}
}
},
"parameters": [
{
"name": "appName",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
}
},
"/api/admin/metrics/applications": {
"get": {
"tags": [
"admin"
],
"operationId": "getApplications",
"responses": {
"200": {
"description": "applicationsSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/applicationsSchema"
}
}
}
}
}
}
},
"/api/admin/client-metrics/features/{name}/raw": {
"get": {
"operationId": "getRawFeatureMetrics",
"tags": [
"admin"
],
"responses": {
"200": {
"description": "featureMetricsSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/featureMetricsSchema"
}
}
}
}
},
"parameters": [
{
"name": "name",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
}
},
"/api/admin/client-metrics/features/{name}": {
"get": {
"operationId": "getFeatureUsageSummary",
"tags": [
"admin"
],
"responses": {
"200": {
"description": "featureUsageSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/featureUsageSchema"
}
}
}
}
},
"parameters": [
{
"name": "name",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
}
},
"/api/admin/user": {
"get": {
"tags": [
"admin"
],
"operationId": "getMe",
"responses": {
"200": {
"description": "meSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/meSchema"
}
}
}
}
}
}
},
"/api/admin/user/change-password": {
"post": {
"tags": [
"admin"
],
"operationId": "changeMyPassword",
"requestBody": {
"description": "passwordSchema",
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/passwordSchema"
}
}
}
},
"responses": {
"200": {
"description": "This response has no body."
},
"400": {
"description": "passwordMismatch"
}
}
}
},
"/api/admin/ui-config": {
"get": {
"tags": [
"admin"
],
"operationId": "getUIConfig",
"responses": {
"200": {
"description": "uiConfigSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/uiConfigSchema"
}
}
}
}
}
}
},
"/api/admin/ui-bootstrap": {
"get": {
"tags": [
"other"
],
"operationId": "getBootstrapUiData",
"responses": {
"202": {
"description": "bootstrapUiSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/bootstrapUiSchema"
}
}
}
}
}
}
},
"/api/admin/context": {
"get": {
"tags": [
"admin"
],
"operationId": "getContextFields",
"responses": {
"200": {
"description": "contextFieldsSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/contextFieldsSchema"
}
}
}
}
}
},
"post": {
"tags": [
"admin"
],
"operationId": "createContextField",
"requestBody": {
"description": "upsertContextFieldSchema",
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/upsertContextFieldSchema"
}
}
}
},
"responses": {
"201": {
"description": "This response has no body."
}
}
}
},
"/api/admin/context/{contextField}": {
"get": {
"tags": [
"admin"
],
"operationId": "getContextField",
"responses": {
"200": {
"description": "contextFieldSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/contextFieldSchema"
}
}
}
}
},
"parameters": [
{
"name": "contextField",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
},
"put": {
"tags": [
"admin"
],
"operationId": "updateContextField",
"requestBody": {
"description": "upsertContextFieldSchema",
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/upsertContextFieldSchema"
}
}
}
},
"responses": {
"200": {
"description": "This response has no body."
}
},
"parameters": [
{
"name": "contextField",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
},
"delete": {
"tags": [
"admin"
],
"operationId": "deleteContextField",
"responses": {
"200": {
"description": "This response has no body."
}
},
"parameters": [
{
"name": "contextField",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
}
},
"/api/admin/context/validate": {
"post": {
"tags": [
"admin"
],
"operationId": "validate",
"requestBody": {
"description": "nameSchema",
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/nameSchema"
}
}
}
},
"responses": {
"200": {
"description": "This response has no body."
}
}
}
},
"/api/admin/state/import": {
"post": {
"tags": [
"admin"
],
"operationId": "import",
"responses": {
"202": {
"description": "This response has no body."
}
},
"requestBody": {
"description": "stateSchema",
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/stateSchema"
}
}
}
}
}
},
"/api/admin/state/export": {
"get": {
"tags": [
"admin"
],
"operationId": "export",
"responses": {
"200": {
"description": "stateSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/stateSchema"
}
}
}
}
},
"parameters": [
{
"name": "format",
"schema": {
"type": "string",
"enum": [
"json",
"yaml"
],
"default": "json"
},
"description": "Desired export format. Must be either `json` or `yaml`.",
"in": "query"
},
{
"name": "download",
"schema": {
"default": false,
"anyOf": [
{
"type": "boolean"
},
{
"type": "string",
"minLength": 1
},
{
"type": "number"
}
]
},
"description": "Whether exported data should be downloaded as a file.",
"in": "query"
},
{
"name": "strategies",
"schema": {
"default": true,
"anyOf": [
{
"type": "boolean"
},
{
"type": "string",
"minLength": 1
},
{
"type": "number"
}
]
},
"description": "Whether strategies should be included in the exported data.",
"in": "query"
},
{
"name": "featureToggles",
"schema": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string",
"minLength": 1
},
{
"type": "number"
}
],
"default": true
},
"description": "Whether feature toggles should be included in the exported data.",
"in": "query"
},
{
"name": "projects",
"schema": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string",
"minLength": 1
},
{
"type": "number"
}
],
"default": true
},
"description": "Whether projects should be included in the exported data.",
"in": "query"
},
{
"name": "tags",
"schema": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string",
"minLength": 1
},
{
"type": "number"
}
],
"default": true
},
"description": "Whether tag types, tags, and feature_tags should be included in the exported data.",
"in": "query"
},
{
"name": "environments",
"schema": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string",
"minLength": 1
},
{
"type": "number"
}
],
"default": true
},
"description": "Whether environments should be included in the exported data.",
"in": "query"
}
]
}
},
"/api/admin/tags": {
"get": {
"tags": [
"admin"
],
"operationId": "getTags",
"responses": {
"200": {
"description": "tagsSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/tagsSchema"
}
}
}
}
}
},
"post": {
"tags": [
"admin"
],
"operationId": "createTag",
"responses": {
"201": {
"description": "This response has no body."
}
},
"requestBody": {
"description": "tagSchema",
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/tagSchema"
}
}
}
}
}
},
"/api/admin/tags/{type}": {
"get": {
"tags": [
"admin"
],
"operationId": "getTagsByType",
"responses": {
"200": {
"description": "tagsSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/tagsSchema"
}
}
}
}
},
"parameters": [
{
"name": "type",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
}
},
"/api/admin/tags/{type}/{value}": {
"get": {
"tags": [
"admin"
],
"operationId": "getTag",
"responses": {
"200": {
"description": "tagWithVersionSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/tagWithVersionSchema"
}
}
}
}
},
"parameters": [
{
"name": "type",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "value",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
},
"delete": {
"tags": [
"admin"
],
"operationId": "deleteTag",
"responses": {
"200": {
"description": "This response has no body."
}
},
"parameters": [
{
"name": "type",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "value",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
}
},
"/api/admin/tag-types": {
"get": {
"tags": [
"admin"
],
"operationId": "getTagTypes",
"responses": {
"200": {
"description": "tagTypesSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/tagTypesSchema"
}
}
}
}
}
},
"post": {
"tags": [
"admin"
],
"operationId": "createTagType",
"responses": {
"201": {
"description": "tagTypeSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/tagTypeSchema"
}
}
}
}
},
"requestBody": {
"description": "tagTypeSchema",
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/tagTypeSchema"
}
}
}
}
}
},
"/api/admin/tag-types/validate": {
"post": {
"tags": [
"admin"
],
"operationId": "validateTagType",
"responses": {
"200": {
"description": "validateTagTypeSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/validateTagTypeSchema"
}
}
}
}
},
"requestBody": {
"description": "tagTypeSchema",
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/tagTypeSchema"
}
}
}
}
}
},
"/api/admin/tag-types/{name}": {
"get": {
"tags": [
"admin"
],
"operationId": "getTagType",
"responses": {
"200": {
"description": "tagTypeSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/tagTypeSchema"
}
}
}
}
},
"parameters": [
{
"name": "name",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
},
"put": {
"tags": [
"admin"
],
"operationId": "updateTagType",
"responses": {
"200": {
"description": "This response has no body."
}
},
"requestBody": {
"description": "updateTagTypeSchema",
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/updateTagTypeSchema"
}
}
}
},
"parameters": [
{
"name": "name",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
},
"delete": {
"tags": [
"admin"
],
"operationId": "deleteTagType",
"responses": {
"200": {
"description": "This response has no body."
}
},
"parameters": [
{
"name": "name",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
}
},
"/api/admin/addons": {
"get": {
"tags": [
"admin"
],
"operationId": "getAddons",
"responses": {
"200": {
"description": "addonsSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/addonsSchema"
}
}
}
}
}
},
"post": {
"tags": [
"admin"
],
"operationId": "createAddon",
"requestBody": {
"description": "addonSchema",
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/addonSchema"
}
}
}
},
"responses": {
"200": {
"description": "addonSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/addonSchema"
}
}
}
}
}
}
},
"/api/admin/addons/{id}": {
"get": {
"tags": [
"admin"
],
"operationId": "getAddon",
"responses": {
"200": {
"description": "addonSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/addonSchema"
}
}
}
}
},
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
},
"put": {
"tags": [
"admin"
],
"operationId": "updateAddon",
"requestBody": {
"description": "addonSchema",
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/addonSchema"
}
}
}
},
"responses": {
"200": {
"description": "addonSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/addonSchema"
}
}
}
}
},
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
},
"delete": {
"tags": [
"admin"
],
"operationId": "deleteAddon",
"responses": {
"200": {
"description": "This response has no body."
}
},
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
}
},
"/api/admin/api-tokens": {
"get": {
"tags": [
"admin"
],
"operationId": "getAllApiTokens",
"responses": {
"200": {
"description": "apiTokensSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/apiTokensSchema"
}
}
}
}
}
},
"post": {
"tags": [
"admin"
],
"operationId": "createApiToken",
"requestBody": {
"description": "createApiTokenSchema",
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/createApiTokenSchema"
}
}
}
},
"responses": {
"201": {
"description": "apiTokenSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/apiTokenSchema"
}
}
}
}
}
}
},
"/api/admin/api-tokens/{token}": {
"put": {
"tags": [
"admin"
],
"operationId": "updateApiToken",
"requestBody": {
"description": "updateApiTokenSchema",
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/updateApiTokenSchema"
}
}
}
},
"responses": {
"200": {
"description": "This response has no body."
}
},
"parameters": [
{
"name": "token",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
},
"delete": {
"tags": [
"admin"
],
"operationId": "deleteApiToken",
"responses": {
"200": {
"description": "This response has no body."
}
},
"parameters": [
{
"name": "token",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
}
},
"/api/admin/user-admin/validate-password": {
"post": {
"tags": [
"admin"
],
"operationId": "validateUserPassword",
"requestBody": {
"description": "passwordSchema",
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/passwordSchema"
}
}
}
},
"responses": {
"200": {
"description": "This response has no body."
}
}
}
},
"/api/admin/user-admin/{id}/change-password": {
"post": {
"tags": [
"admin"
],
"operationId": "changeUserPassword",
"requestBody": {
"description": "passwordSchema",
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/passwordSchema"
}
}
}
},
"responses": {
"200": {
"description": "This response has no body."
}
},
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
}
},
"/api/admin/user-admin/reset-password": {
"post": {
"tags": [
"admin"
],
"operationId": "resetUserPassword",
"requestBody": {
"description": "idSchema",
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/idSchema"
}
}
}
},
"responses": {
"200": {
"description": "resetPasswordSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/resetPasswordSchema"
}
}
}
}
}
}
},
"/api/admin/user-admin": {
"get": {
"tags": [
"admin"
],
"operationId": "getUsers",
"responses": {
"200": {
"description": "usersSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/usersSchema"
}
}
}
}
}
},
"post": {
"tags": [
"admin"
],
"operationId": "createUser",
"requestBody": {
"description": "createUserSchema",
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/createUserSchema"
}
}
}
},
"responses": {
"200": {
"description": "userSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/userSchema"
}
}
}
}
}
}
},
"/api/admin/user-admin/search": {
"get": {
"tags": [
"admin"
],
"operationId": "searchUsers",
"responses": {
"200": {
"description": "usersSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/usersSchema"
}
}
}
}
}
}
},
"/api/admin/user-admin/access": {
"get": {
"tags": [
"admin"
],
"operationId": "getBaseUsersAndGroups",
"responses": {
"200": {
"description": "usersGroupsBaseSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/usersGroupsBaseSchema"
}
}
}
}
}
}
},
"/api/admin/user-admin/{id}": {
"get": {
"tags": [
"admin"
],
"operationId": "getUser",
"responses": {
"200": {
"description": "userSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/userSchema"
}
}
}
}
},
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
},
"put": {
"tags": [
"admin"
],
"operationId": "updateUser",
"requestBody": {
"description": "updateUserSchema",
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/updateUserSchema"
}
}
}
},
"responses": {
"200": {
"description": "userSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/userSchema"
}
}
}
}
},
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
},
"delete": {
"tags": [
"admin"
],
"operationId": "deleteUser",
"responses": {
"200": {
"description": "This response has no body."
}
},
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
}
},
"/api/admin/feedback": {
"post": {
"tags": [
"admin"
],
"operationId": "createFeedback",
"requestBody": {
"description": "feedbackSchema",
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/feedbackSchema"
}
}
}
},
"responses": {
"200": {
"description": "feedbackSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/feedbackSchema"
}
}
}
}
}
}
},
"/api/admin/feedback/{id}": {
"put": {
"tags": [
"admin"
],
"operationId": "updateFeedback",
"requestBody": {
"description": "feedbackSchema",
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/feedbackSchema"
}
}
}
},
"responses": {
"200": {
"description": "feedbackSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/feedbackSchema"
}
}
}
}
},
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
}
},
"/api/admin/projects": {
"get": {
"tags": [
"admin"
],
"operationId": "getProjects",
"responses": {
"200": {
"description": "projectsSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/projectsSchema"
}
}
}
}
}
}
},
"/api/admin/projects/{projectId}/features/{featureName}/environments/{environment}": {
"get": {
"tags": [
"admin"
],
"operationId": "getFeatureEnvironment",
"responses": {
"200": {
"description": "featureEnvironmentSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/featureEnvironmentSchema"
}
}
}
}
},
"parameters": [
{
"name": "projectId",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "featureName",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "environment",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
}
},
"/api/admin/projects/{projectId}/features/{featureName}/environments/{environment}/off": {
"post": {
"tags": [
"admin"
],
"operationId": "toggleFeatureEnvironmentOff",
"responses": {
"200": {
"description": "featureSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/featureSchema"
}
}
}
}
},
"parameters": [
{
"name": "projectId",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "featureName",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "environment",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
}
},
"/api/admin/projects/{projectId}/features/{featureName}/environments/{environment}/on": {
"post": {
"tags": [
"admin"
],
"operationId": "toggleFeatureEnvironmentOn",
"responses": {
"200": {
"description": "featureSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/featureSchema"
}
}
}
}
},
"parameters": [
{
"name": "projectId",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "featureName",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "environment",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
}
},
"/api/admin/projects/{projectId}/features/{featureName}/environments/{environment}/strategies": {
"get": {
"tags": [
"admin"
],
"operationId": "getFeatureStrategies",
"responses": {
"200": {
"description": "featureStrategySchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/featureStrategySchema"
}
}
}
}
},
"parameters": [
{
"name": "projectId",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "featureName",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "environment",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
},
"post": {
"tags": [
"admin"
],
"operationId": "addFeatureStrategy",
"requestBody": {
"description": "createFeatureStrategySchema",
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/createFeatureStrategySchema"
}
}
}
},
"responses": {
"200": {
"description": "featureStrategySchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/featureStrategySchema"
}
}
}
}
},
"parameters": [
{
"name": "projectId",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "featureName",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "environment",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
}
},
"/api/admin/projects/{projectId}/features/{featureName}/environments/{environment}/strategies/{strategyId}": {
"get": {
"tags": [
"admin"
],
"operationId": "getFeatureStrategy",
"responses": {
"200": {
"description": "featureStrategySchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/featureStrategySchema"
}
}
}
}
},
"parameters": [
{
"name": "projectId",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "featureName",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "environment",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "strategyId",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
},
"put": {
"tags": [
"admin"
],
"operationId": "updateFeatureStrategy",
"requestBody": {
"description": "updateFeatureStrategySchema",
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/updateFeatureStrategySchema"
}
}
}
},
"responses": {
"200": {
"description": "featureStrategySchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/featureStrategySchema"
}
}
}
}
},
"parameters": [
{
"name": "projectId",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "featureName",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "environment",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "strategyId",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
},
"patch": {
"tags": [
"admin"
],
"operationId": "patchFeatureStrategy",
"requestBody": {
"description": "patchesSchema",
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/patchesSchema"
}
}
}
},
"responses": {
"200": {
"description": "featureStrategySchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/featureStrategySchema"
}
}
}
}
},
"parameters": [
{
"name": "projectId",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "featureName",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "environment",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "strategyId",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
},
"delete": {
"operationId": "deleteFeatureStrategy",
"tags": [
"admin"
],
"responses": {
"200": {
"description": "This response has no body."
}
},
"parameters": [
{
"name": "projectId",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "featureName",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "environment",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "strategyId",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
}
},
"/api/admin/projects/{projectId}/features/{featureName}/environments/{environment}/strategies/set-sort-order": {
"post": {
"tags": [
"admin"
],
"operationId": "setStrategySortOrder",
"requestBody": {
"description": "setStrategySortOrderSchema",
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/setStrategySortOrderSchema"
}
}
}
},
"responses": {
"200": {
"description": "This response has no body."
}
},
"parameters": [
{
"name": "projectId",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "featureName",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "environment",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
}
},
"/api/admin/projects/{projectId}/features": {
"get": {
"tags": [
"admin"
],
"operationId": "getFeatures",
"responses": {
"200": {
"description": "featuresSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/featuresSchema"
}
}
}
}
},
"parameters": [
{
"name": "projectId",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
},
"post": {
"tags": [
"admin"
],
"operationId": "createFeature",
"requestBody": {
"description": "createFeatureSchema",
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/createFeatureSchema"
}
}
}
},
"responses": {
"200": {
"description": "featureSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/featureSchema"
}
}
}
}
},
"parameters": [
{
"name": "projectId",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
}
},
"/api/admin/projects/{projectId}/features/{featureName}/clone": {
"post": {
"tags": [
"admin"
],
"operationId": "cloneFeature",
"requestBody": {
"description": "cloneFeatureSchema",
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/cloneFeatureSchema"
}
}
}
},
"responses": {
"200": {
"description": "featureSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/featureSchema"
}
}
}
}
},
"parameters": [
{
"name": "projectId",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "featureName",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
}
},
"/api/admin/projects/{projectId}/features/{featureName}": {
"get": {
"operationId": "getFeature",
"tags": [
"admin"
],
"responses": {
"200": {
"description": "featureSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/featureSchema"
}
}
}
}
},
"parameters": [
{
"name": "projectId",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "featureName",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
},
"put": {
"tags": [
"admin"
],
"operationId": "updateFeature",
"requestBody": {
"description": "updateFeatureSchema",
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/updateFeatureSchema"
}
}
}
},
"responses": {
"200": {
"description": "featureSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/featureSchema"
}
}
}
}
},
"parameters": [
{
"name": "projectId",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "featureName",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
},
"patch": {
"tags": [
"admin"
],
"operationId": "patchFeature",
"requestBody": {
"description": "patchesSchema",
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/patchesSchema"
}
}
}
},
"responses": {
"200": {
"description": "featureSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/featureSchema"
}
}
}
}
},
"parameters": [
{
"name": "projectId",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "featureName",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
},
"delete": {
"tags": [
"admin"
],
"operationId": "archiveFeature",
"responses": {
"200": {
"description": "This response has no body."
}
},
"parameters": [
{
"name": "projectId",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "featureName",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
}
},
"/api/admin/projects/{projectId}/environments": {
"post": {
"tags": [
"admin"
],
"operationId": "addEnvironmentToProject",
"requestBody": {
"description": "projectEnvironmentSchema",
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/projectEnvironmentSchema"
}
}
}
},
"responses": {
"200": {
"description": "This response has no body."
}
},
"parameters": [
{
"name": "projectId",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
}
},
"/api/admin/projects/{projectId}/environments/{environment}": {
"delete": {
"tags": [
"admin"
],
"operationId": "removeEnvironmentFromProject",
"responses": {
"200": {
"description": "This response has no body."
}
},
"parameters": [
{
"name": "projectId",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "environment",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
}
},
"/api/admin/projects/{projectId}": {
"get": {
"tags": [
"admin"
],
"operationId": "getProjectHealthOverview",
"responses": {
"200": {
"description": "healthOverviewSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/healthOverviewSchema"
}
}
}
}
},
"parameters": [
{
"name": "projectId",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
}
},
"/api/admin/projects/{projectId}/health-report": {
"get": {
"tags": [
"admin"
],
"operationId": "getProjectHealthReport",
"responses": {
"200": {
"description": "healthReportSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/healthReportSchema"
}
}
}
}
},
"parameters": [
{
"name": "projectId",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
}
},
"/api/admin/projects/{projectId}/features/{featureName}/variants": {
"get": {
"tags": [
"admin"
],
"operationId": "getFeatureVariants",
"responses": {
"200": {
"description": "featureVariantsSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/featureVariantsSchema"
}
}
}
}
},
"parameters": [
{
"name": "projectId",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "featureName",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
},
"patch": {
"tags": [
"admin"
],
"operationId": "patchFeatureVariants",
"requestBody": {
"description": "patchesSchema",
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/patchesSchema"
}
}
}
},
"responses": {
"200": {
"description": "featureVariantsSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/featureVariantsSchema"
}
}
}
}
},
"parameters": [
{
"name": "projectId",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "featureName",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
},
"put": {
"tags": [
"admin"
],
"operationId": "overwriteFeatureVariants",
"requestBody": {
"description": "variantsSchema",
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/variantsSchema"
}
}
}
},
"responses": {
"200": {
"description": "featureVariantsSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/featureVariantsSchema"
}
}
}
}
},
"parameters": [
{
"name": "projectId",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "featureName",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
}
},
"/api/admin/environments": {
"get": {
"tags": [
"admin"
],
"operationId": "getAllEnvironments",
"responses": {
"200": {
"description": "This response has no body."
}
}
}
},
"/api/admin/environments/{name}": {
"get": {
"tags": [
"admin"
],
"operationId": "getEnvironment",
"responses": {
"200": {
"description": "environmentSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/environmentSchema"
}
}
}
}
},
"parameters": [
{
"name": "name",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
}
},
"/api/admin/environments/sort-order": {
"put": {
"tags": [
"admin"
],
"operationId": "updateSortOrder",
"requestBody": {
"description": "sortOrderSchema",
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/sortOrderSchema"
}
}
}
},
"responses": {
"200": {
"description": "This response has no body."
}
}
}
},
"/api/admin/environments/{name}/on": {
"post": {
"tags": [
"admin"
],
"operationId": "toggleEnvironmentOn",
"responses": {
"204": {
"description": "This response has no body."
}
},
"parameters": [
{
"name": "name",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
}
},
"/api/admin/environments/{name}/off": {
"post": {
"tags": [
"admin"
],
"operationId": "toggleEnvironmentOff",
"responses": {
"204": {
"description": "This response has no body."
}
},
"parameters": [
{
"name": "name",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
}
},
"/api/admin/splash/{id}": {
"post": {
"tags": [
"admin"
],
"operationId": "updateSplashSettings",
"responses": {
"200": {
"description": "splashSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/splashSchema"
}
}
}
}
},
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
}
},
"/api/admin/constraints/validate": {
"post": {
"tags": [
"admin"
],
"operationId": "validateConstraint",
"requestBody": {
"description": "constraintSchema",
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/constraintSchema"
}
}
}
},
"responses": {
"204": {
"description": "validConstraint"
},
"400": {
"description": "invalidConstraint"
}
}
}
},
"/api/client/features/{featureName}": {
"get": {
"operationId": "getClientFeature",
"tags": [
"client"
],
"responses": {
"200": {
"description": "clientFeaturesSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/clientFeaturesSchema"
}
}
}
}
},
"parameters": [
{
"name": "featureName",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
}
},
"/api/client/features": {
"get": {
"operationId": "getAllClientFeatures",
"tags": [
"client"
],
"responses": {
"200": {
"description": "clientFeaturesSchema",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/clientFeaturesSchema"
}
}
}
}
}
}
},
"/api/client/metrics": {
"post": {
"tags": [
"client"
],
"operationId": "registerClientMetrics",
"requestBody": {
"description": "clientMetricsSchema",
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/clientMetricsSchema"
}
}
}
},
"responses": {
"202": {
"description": "This response has no body."
},
"400": {
"description": "The request data does not match what we expect."
}
}
}
},
"/api/client/register": {
"post": {
"tags": [
"client"
],
"operationId": "registerClientApplication",
"requestBody": {
"description": "clientApplicationSchema",
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/clientApplicationSchema"
}
}
}
},
"responses": {
"202": {
"description": "This response has no body."
}
}
}
}
}
}
Hmm, it's possible you may need to clean and re-gen the sidebar at least. I did a quick test and this is what I ended up with:
https://user-images.githubusercontent.com/9343811/183501675-caf02d85-8a2a-4333-8d3e-2eaf1448ceb8.mov
If you added descriptions to your root level tags and set categoryLinkSource to "tag" you would see that description rendered on the category index pages. Markdown is also support for the descriptions.
Huh, interesting. Cleaning and regenerating doesn't seem to do the trick for me, so there's probably a configuration setting somewhere. It still renders just as a single flat layer π€ I've regenerated docs (into a new folder) and restarted the docusaurus process, so that should be taken care of.
The docusaurus.config.js file has the following plugin section for this:
[
'docusaurus-plugin-openapi-docs',
{
id: 'api-operations',
docsPluginId: 'classic',
config: {
server: {
specPath: 'http://localhost:4242/docs/openapi.json',
outputDir: 'docs/generated/openapi/server',
sidebarOptions: {
groupPathsBy: 'tag',
categoryLinkSource: 'tag' // or null/undefined
},
},
},
},
]
and I'm using this sidebar entry:
{
label: 'OpenAPI',
collapsed: true,
type: 'category',
link: {
type: 'generated-index',
title: 'API docs',
description: 'Generated API docs for the OpenAPI spec',
},
items: [
{
type: 'autogenerated',
dirName: 'generated/openapi/server',
},
],
}
Is there some configuration option I have missed? I'll keep digging in the meantime π·πΌ
Ah, it looks to be an issue with your sidebar entry. With sidebarOptions, the plugin will generate a file named sidebar.js which is a module that exports a sidebar slice object for your API docs.
You'll want to change your sidebar entry to something like this:
{
label: 'OpenAPI',
collapsed: true,
type: 'category',
link: {
type: 'generated-index',
title: 'API docs',
description: 'Generated API docs for the OpenAPI spec',
},
items: require("./docs/generated/openapi/server/sidebar.js"),
}
Ah, is that it! Thanks! ππΌ I definitely wouldn't have found that myself π That may be a common way to include generated stuff in docusaurus, but I hadn't done that before, so it might be worth mentioning in the docs? You've got great examples showing the docusaurus.config.js file, but it doesn't show you how you include it in the sidebar (or even that you have to).
You've got great examples showing the docusaurus.config.js file, but it doesn't show you how you include it in the sidebar (or even that you have to).
I agree that the sidebars can be documented better - or, at least we should add a hint to check the demo sidebars.js for practical examples. Thanks again for the feedback!
No worries and thanks for the work on creating and maintaining this package ππΌ I've found the answers I'm looking for now, so you can close the issue if you want to. If you'd rather keep it open as a work item for later, that's fine too. I'll leave it up to you βΊοΈ
#257