1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-01-25 00:07:47 +01:00

docs: prep to add OpenAPI spec to Unleash docs (#1907)

* Docs: start experimenting with OpenAPI and docusaurus

* Docs: add docusaurus-theme-openapi-docs pkg

* Wip: current status

* Docs: Add 'docusaurus-plugin-api-docs'

* Move openapi into own sidebar; generate from localhost

* Chore: Update docusaurus plugin for OpenAPI

* Add website/yarn.lock to git

* Fix: fix CSS warning by using flex-end instead of end

* docs: make openapi generated code work again

* docs: make tags work properly with openapi sidebar

* Docs/chore: update OpenAPI tag scheme.

Add a whole bunch of new tags to make it easier to understand
available tags in OpenAPI.

* docs: point to new openapi docs from old api docs

* docs: typo

* Docs:  link restructure

* docs: add operation indicators to openapi docs

* docs: change badge color for operations

* docs: update openapi-docs package

It now sorts tags the same as the schema

* docs: pluralize APIs in slug

* docs: update links to generated api docs

* docs: update openapi snapshot tests with new tags

* docs: conditionally load spec from localhost or from file

* docs: Remove changes relating to immediate switchover

* refactor: rename types; extract into separate file

* docs: fix api doc links
This commit is contained in:
Thomas Heartman 2022-08-12 11:37:57 +02:00 committed by GitHub
parent a7d575061e
commit 9448461aaa
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
44 changed files with 15213 additions and 235 deletions

2
.gitignore vendored
View File

@ -50,10 +50,8 @@ package-lock.json
/website/build /website/build
/website/backers.json /website/backers.json
/website/node_modules /website/node_modules
/website/yarn.lock
/website/translated_docs /website/translated_docs
/website/i18n/* /website/i18n/*
.env .env
#report.json #report.json

View File

@ -104,6 +104,7 @@ import { groupSchema } from './spec/group-schema';
import { groupsSchema } from './spec/groups-schema'; import { groupsSchema } from './spec/groups-schema';
import { groupUserModelSchema } from './spec/group-user-model-schema'; import { groupUserModelSchema } from './spec/group-user-model-schema';
import { usersGroupsBaseSchema } from './spec/users-groups-base-schema'; import { usersGroupsBaseSchema } from './spec/users-groups-base-schema';
import { openApiTags } from './util/openapi-tags';
import { searchEventsSchema } from './spec/search-events-schema'; import { searchEventsSchema } from './spec/search-events-schema';
// All schemas in `openapi/spec` should be listed here. // All schemas in `openapi/spec` should be listed here.
@ -271,5 +272,6 @@ export const createOpenApiSchema = ({
}, },
schemas: mapValues(schemas, removeJsonSchemaProps), schemas: mapValues(schemas, removeJsonSchemaProps),
}, },
tags: openApiTags,
}; };
}; };

View File

@ -1,6 +1,7 @@
import { OpenAPIV3 } from 'openapi-types'; import { OpenAPIV3 } from 'openapi-types';
import { OpenApiTag } from './openapi-tags';
export interface ApiOperation<Tag = 'admin' | 'client' | 'auth' | 'other'> export interface ApiOperation<Tag = OpenApiTag>
extends Omit<OpenAPIV3.OperationObject, 'tags'> { extends Omit<OpenAPIV3.OperationObject, 'tags'> {
operationId: string; operationId: string;
tags: [Tag]; tags: [Tag];

View File

@ -0,0 +1,82 @@
const OPENAPI_TAGS = [
{
name: 'Addons',
description:
'Create, update, and delete [Unleash addons](https://docs.getunleash.io/addons).',
},
{ name: 'Admin UI', description: 'Configure the Unleash Admin UI.' },
{
name: 'API tokens',
description:
'Create, update, and delete [Unleash API tokens](https://docs.getunleash.io/reference/api-tokens-and-client-keys).',
},
{
name: 'Archive',
description:
'Revive or permanently delete [archived feature toggles](https://docs.getunleash.io/advanced/archived_toggles).',
},
{ name: 'Auth', description: 'Manage logins, passwords, etc.' },
{
name: 'Client',
description:
'Endpoints for [Unleash server-side clients](https://docs.getunleash.io/sdks).',
},
{
name: 'Context',
description:
'Create, update, and delete [context fields](https://docs.getunleash.io/user_guide/unleash_context) that Unleash is aware of.',
},
{
name: 'Environments',
description:
'Create, update, delete, enable or disable [environments](https://docs.getunleash.io/user_guide/environments) for this Unleash instance.',
},
{ name: 'Events', description: 'Read events from this Unleash instance.' },
{
name: 'Features',
description:
'Create, update, and delete [features toggles](https://docs.getunleash.io/reference/feature-toggles).',
},
{
name: 'Import/Export',
description:
'[Import and export](https://docs.getunleash.io/deploy/import_export) the state of your Unleash instance.',
},
{
name: 'Metrics',
description: 'Register, read, or delete metrics recorded by Unleash.',
},
{
name: 'Operational',
description:
'Endpoints related to the operational status of this Unleash instance.',
},
{
name: 'Playground',
description:
'Evaluate an Unleash context against your feature toggles.',
},
{
name: 'Projects',
description:
'Create, update, and delete [Unleash projects](https://docs.getunleash.io/user_guide/projects).',
},
{
name: 'Strategies',
description:
'Create, update, delete, manage [custom strategies](https://docs.getunleash.io/advanced/custom_activation_strategy).',
},
{
name: 'Tags',
description:
'Create, update, and delete [tags and tag types](https://docs.getunleash.io/advanced/tags).',
},
{ name: 'Users', description: 'Manage users and passwords.' },
] as const;
// make the export mutable, so it can be used in a schema
export const openApiTags = [...OPENAPI_TAGS].sort((a, b) =>
a.name.localeCompare(b.name),
);
export type OpenApiTag = typeof OPENAPI_TAGS[number]['name'];

View File

@ -47,7 +47,7 @@ class AddonController extends Controller {
handler: this.getAddons, handler: this.getAddons,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Addons'],
operationId: 'getAddons', operationId: 'getAddons',
responses: { responses: {
200: createResponseSchema('addonsSchema'), 200: createResponseSchema('addonsSchema'),
@ -63,7 +63,7 @@ class AddonController extends Controller {
permission: CREATE_ADDON, permission: CREATE_ADDON,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Addons'],
operationId: 'createAddon', operationId: 'createAddon',
requestBody: createRequestSchema('addonSchema'), requestBody: createRequestSchema('addonSchema'),
responses: { 200: createResponseSchema('addonSchema') }, responses: { 200: createResponseSchema('addonSchema') },
@ -78,7 +78,7 @@ class AddonController extends Controller {
permission: NONE, permission: NONE,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Addons'],
operationId: 'getAddon', operationId: 'getAddon',
responses: { 200: createResponseSchema('addonSchema') }, responses: { 200: createResponseSchema('addonSchema') },
}), }),
@ -92,7 +92,7 @@ class AddonController extends Controller {
permission: UPDATE_ADDON, permission: UPDATE_ADDON,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Addons'],
operationId: 'updateAddon', operationId: 'updateAddon',
requestBody: createRequestSchema('addonSchema'), requestBody: createRequestSchema('addonSchema'),
responses: { 200: createResponseSchema('addonSchema') }, responses: { 200: createResponseSchema('addonSchema') },
@ -108,7 +108,7 @@ class AddonController extends Controller {
permission: DELETE_ADDON, permission: DELETE_ADDON,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Addons'],
operationId: 'deleteAddon', operationId: 'deleteAddon',
responses: { 200: emptyResponse }, responses: { 200: emptyResponse },
}), }),

View File

@ -68,7 +68,7 @@ export class ApiTokenController extends Controller {
permission: READ_API_TOKEN, permission: READ_API_TOKEN,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['API tokens'],
operationId: 'getAllApiTokens', operationId: 'getAllApiTokens',
responses: { responses: {
200: createResponseSchema('apiTokensSchema'), 200: createResponseSchema('apiTokensSchema'),
@ -84,7 +84,7 @@ export class ApiTokenController extends Controller {
permission: CREATE_API_TOKEN, permission: CREATE_API_TOKEN,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['API tokens'],
operationId: 'createApiToken', operationId: 'createApiToken',
requestBody: createRequestSchema('createApiTokenSchema'), requestBody: createRequestSchema('createApiTokenSchema'),
responses: { responses: {
@ -101,7 +101,7 @@ export class ApiTokenController extends Controller {
permission: UPDATE_API_TOKEN, permission: UPDATE_API_TOKEN,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['API tokens'],
operationId: 'updateApiToken', operationId: 'updateApiToken',
requestBody: createRequestSchema('updateApiTokenSchema'), requestBody: createRequestSchema('updateApiTokenSchema'),
responses: { responses: {
@ -119,7 +119,7 @@ export class ApiTokenController extends Controller {
permission: DELETE_API_TOKEN, permission: DELETE_API_TOKEN,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['API tokens'],
operationId: 'deleteApiToken', operationId: 'deleteApiToken',
responses: { responses: {
200: emptyResponse, 200: emptyResponse,

View File

@ -42,7 +42,7 @@ export default class ArchiveController extends Controller {
permission: NONE, permission: NONE,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Archive'],
operationId: 'getArchivedFeatures', operationId: 'getArchivedFeatures',
responses: { 200: createResponseSchema('featuresSchema') }, responses: { 200: createResponseSchema('featuresSchema') },
deprecated: true, deprecated: true,
@ -57,7 +57,7 @@ export default class ArchiveController extends Controller {
permission: NONE, permission: NONE,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Archive'],
operationId: 'getArchivedFeaturesByProjectId', operationId: 'getArchivedFeaturesByProjectId',
responses: { 200: createResponseSchema('featuresSchema') }, responses: { 200: createResponseSchema('featuresSchema') },
deprecated: true, deprecated: true,
@ -73,7 +73,7 @@ export default class ArchiveController extends Controller {
permission: DELETE_FEATURE, permission: DELETE_FEATURE,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Archive'],
operationId: 'deleteFeature', operationId: 'deleteFeature',
responses: { 200: emptyResponse }, responses: { 200: emptyResponse },
}), }),
@ -88,7 +88,7 @@ export default class ArchiveController extends Controller {
permission: UPDATE_FEATURE, permission: UPDATE_FEATURE,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Archive'],
operationId: 'reviveFeature', operationId: 'reviveFeature',
responses: { 200: emptyResponse }, responses: { 200: emptyResponse },
}), }),

View File

@ -57,7 +57,7 @@ class ClientMetricsController extends Controller {
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
operationId: 'getRawFeatureMetrics', operationId: 'getRawFeatureMetrics',
tags: ['admin'], tags: ['Metrics'],
responses: { responses: {
200: createResponseSchema('featureMetricsSchema'), 200: createResponseSchema('featureMetricsSchema'),
}, },
@ -73,7 +73,7 @@ class ClientMetricsController extends Controller {
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
operationId: 'getFeatureUsageSummary', operationId: 'getFeatureUsageSummary',
tags: ['admin'], tags: ['Metrics'],
responses: { responses: {
200: createResponseSchema('featureUsageSchema'), 200: createResponseSchema('featureUsageSchema'),
}, },

View File

@ -55,7 +55,7 @@ class ConfigController extends Controller {
permission: NONE, permission: NONE,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Admin UI'],
operationId: 'getUIConfig', operationId: 'getUIConfig',
responses: { responses: {
200: createResponseSchema('uiConfigSchema'), 200: createResponseSchema('uiConfigSchema'),

View File

@ -35,7 +35,7 @@ export default class ConstraintController extends Controller {
permission: NONE, permission: NONE,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Features'],
operationId: 'validateConstraint', operationId: 'validateConstraint',
requestBody: createRequestSchema('constraintSchema'), requestBody: createRequestSchema('constraintSchema'),
responses: { responses: {

View File

@ -60,7 +60,7 @@ export class ContextController extends Controller {
permission: NONE, permission: NONE,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Context'],
operationId: 'getContextFields', operationId: 'getContextFields',
responses: { responses: {
200: createResponseSchema('contextFieldsSchema'), 200: createResponseSchema('contextFieldsSchema'),
@ -76,7 +76,7 @@ export class ContextController extends Controller {
permission: NONE, permission: NONE,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Context'],
operationId: 'getContextField', operationId: 'getContextField',
responses: { responses: {
200: createResponseSchema('contextFieldSchema'), 200: createResponseSchema('contextFieldSchema'),
@ -92,7 +92,7 @@ export class ContextController extends Controller {
permission: CREATE_CONTEXT_FIELD, permission: CREATE_CONTEXT_FIELD,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Context'],
operationId: 'createContextField', operationId: 'createContextField',
requestBody: createRequestSchema( requestBody: createRequestSchema(
'upsertContextFieldSchema', 'upsertContextFieldSchema',
@ -111,7 +111,7 @@ export class ContextController extends Controller {
permission: UPDATE_CONTEXT_FIELD, permission: UPDATE_CONTEXT_FIELD,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Context'],
operationId: 'updateContextField', operationId: 'updateContextField',
requestBody: createRequestSchema( requestBody: createRequestSchema(
'upsertContextFieldSchema', 'upsertContextFieldSchema',
@ -131,7 +131,7 @@ export class ContextController extends Controller {
permission: DELETE_CONTEXT_FIELD, permission: DELETE_CONTEXT_FIELD,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Context'],
operationId: 'deleteContextField', operationId: 'deleteContextField',
responses: { responses: {
200: emptyResponse, 200: emptyResponse,
@ -147,7 +147,7 @@ export class ContextController extends Controller {
permission: UPDATE_CONTEXT_FIELD, permission: UPDATE_CONTEXT_FIELD,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Context'],
operationId: 'validate', operationId: 'validate',
requestBody: createRequestSchema('nameSchema'), requestBody: createRequestSchema('nameSchema'),
responses: { responses: {

View File

@ -49,7 +49,7 @@ export class EnvironmentsController extends Controller {
permission: NONE, permission: NONE,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Environments'],
operationId: 'getAllEnvironments', operationId: 'getAllEnvironments',
responses: { 200: emptyResponse }, responses: { 200: emptyResponse },
}), }),
@ -63,7 +63,7 @@ export class EnvironmentsController extends Controller {
permission: NONE, permission: NONE,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Environments'],
operationId: 'getEnvironment', operationId: 'getEnvironment',
responses: { responses: {
200: createResponseSchema('environmentSchema'), 200: createResponseSchema('environmentSchema'),
@ -79,7 +79,7 @@ export class EnvironmentsController extends Controller {
permission: ADMIN, permission: ADMIN,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Environments'],
operationId: 'updateSortOrder', operationId: 'updateSortOrder',
requestBody: createRequestSchema('sortOrderSchema'), requestBody: createRequestSchema('sortOrderSchema'),
responses: { 200: emptyResponse }, responses: { 200: emptyResponse },
@ -95,7 +95,7 @@ export class EnvironmentsController extends Controller {
permission: ADMIN, permission: ADMIN,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Environments'],
operationId: 'toggleEnvironmentOn', operationId: 'toggleEnvironmentOn',
responses: { 204: emptyResponse }, responses: { 204: emptyResponse },
}), }),
@ -110,7 +110,7 @@ export class EnvironmentsController extends Controller {
permission: ADMIN, permission: ADMIN,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Environments'],
operationId: 'toggleEnvironmentOff', operationId: 'toggleEnvironmentOff',
responses: { 204: emptyResponse }, responses: { 204: emptyResponse },
}), }),

View File

@ -50,7 +50,7 @@ export default class EventController extends Controller {
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
operationId: 'getEvents', operationId: 'getEvents',
tags: ['admin'], tags: ['Events'],
responses: { responses: {
...getStandardResponses(401), ...getStandardResponses(401),
200: createResponseSchema('eventsSchema'), 200: createResponseSchema('eventsSchema'),
@ -79,7 +79,7 @@ export default class EventController extends Controller {
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
operationId: 'getEventsForToggle', operationId: 'getEventsForToggle',
tags: ['admin'], tags: ['Events'],
responses: { responses: {
...getStandardResponses(401), ...getStandardResponses(401),
200: createResponseSchema('featureEventsSchema'), 200: createResponseSchema('featureEventsSchema'),
@ -97,7 +97,7 @@ export default class EventController extends Controller {
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
operationId: 'searchEvents', operationId: 'searchEvents',
tags: ['admin'], tags: ['Events'],
requestBody: createRequestSchema('searchEventsSchema'), requestBody: createRequestSchema('searchEventsSchema'),
responses: { 200: createResponseSchema('eventsSchema') }, responses: { 200: createResponseSchema('eventsSchema') },
}), }),

View File

@ -37,7 +37,7 @@ export class FeatureTypeController extends Controller {
permission: NONE, permission: NONE,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Features'],
operationId: 'getAllFeatureTypes', operationId: 'getAllFeatureTypes',
responses: { responses: {
200: createResponseSchema('featureTypesSchema'), 200: createResponseSchema('featureTypesSchema'),

View File

@ -77,7 +77,7 @@ class FeatureController extends Controller {
permission: NONE, permission: NONE,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Features'],
operationId: 'getAllToggles', operationId: 'getAllToggles',
responses: { 200: createResponseSchema('featuresSchema') }, responses: { 200: createResponseSchema('featuresSchema') },
deprecated: true, deprecated: true,
@ -92,7 +92,7 @@ class FeatureController extends Controller {
permission: NONE, permission: NONE,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Features'],
operationId: 'validateFeature', operationId: 'validateFeature',
responses: { 200: emptyResponse }, responses: { 200: emptyResponse },
}), }),
@ -106,7 +106,7 @@ class FeatureController extends Controller {
permission: NONE, permission: NONE,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Features'],
operationId: 'listTags', operationId: 'listTags',
responses: { 200: createResponseSchema('tagsSchema') }, responses: { 200: createResponseSchema('tagsSchema') },
}), }),
@ -120,7 +120,7 @@ class FeatureController extends Controller {
handler: this.addTag, handler: this.addTag,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Features'],
operationId: 'addTag', operationId: 'addTag',
requestBody: createRequestSchema('tagSchema'), requestBody: createRequestSchema('tagSchema'),
responses: { 201: createResponseSchema('tagSchema') }, responses: { 201: createResponseSchema('tagSchema') },
@ -136,7 +136,7 @@ class FeatureController extends Controller {
handler: this.removeTag, handler: this.removeTag,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Features'],
operationId: 'removeTag', operationId: 'removeTag',
responses: { 200: emptyResponse }, responses: { 200: emptyResponse },
}), }),

View File

@ -41,7 +41,7 @@ class MetricsController extends Controller {
permission: UPDATE_APPLICATION, permission: UPDATE_APPLICATION,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Metrics'],
operationId: 'createApplication', operationId: 'createApplication',
responses: { responses: {
202: emptyResponse, 202: emptyResponse,
@ -58,7 +58,7 @@ class MetricsController extends Controller {
acceptAnyContentType: true, acceptAnyContentType: true,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Metrics'],
operationId: 'deleteApplication', operationId: 'deleteApplication',
responses: { responses: {
200: emptyResponse, 200: emptyResponse,
@ -73,7 +73,7 @@ class MetricsController extends Controller {
permission: NONE, permission: NONE,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Metrics'],
operationId: 'getApplications', operationId: 'getApplications',
responses: { responses: {
200: createResponseSchema('applicationsSchema'), 200: createResponseSchema('applicationsSchema'),
@ -88,7 +88,7 @@ class MetricsController extends Controller {
permission: NONE, permission: NONE,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Metrics'],
operationId: 'getApplication', operationId: 'getApplication',
responses: { responses: {
200: createResponseSchema('applicationSchema'), 200: createResponseSchema('applicationSchema'),

View File

@ -39,7 +39,7 @@ export default class PlaygroundController extends Controller {
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
operationId: 'getPlayground', operationId: 'getPlayground',
tags: ['admin'], tags: ['Playground'],
responses: { responses: {
...getStandardResponses(400, 401), ...getStandardResponses(400, 401),
200: createResponseSchema('playgroundResponseSchema'), 200: createResponseSchema('playgroundResponseSchema'),

View File

@ -40,7 +40,7 @@ export default class EnvironmentsController extends Controller {
permission: UPDATE_PROJECT, permission: UPDATE_PROJECT,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Projects'],
operationId: 'addEnvironmentToProject', operationId: 'addEnvironmentToProject',
requestBody: createRequestSchema( requestBody: createRequestSchema(
'projectEnvironmentSchema', 'projectEnvironmentSchema',
@ -58,7 +58,7 @@ export default class EnvironmentsController extends Controller {
permission: UPDATE_PROJECT, permission: UPDATE_PROJECT,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Projects'],
operationId: 'removeEnvironmentFromProject', operationId: 'removeEnvironmentFromProject',
responses: { 200: emptyResponse }, responses: { 200: emptyResponse },
}), }),

View File

@ -94,7 +94,7 @@ export default class ProjectFeaturesController extends Controller {
handler: this.getFeatureEnvironment, handler: this.getFeatureEnvironment,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Features'],
operationId: 'getFeatureEnvironment', operationId: 'getFeatureEnvironment',
responses: { responses: {
200: createResponseSchema('featureEnvironmentSchema'), 200: createResponseSchema('featureEnvironmentSchema'),
@ -111,7 +111,7 @@ export default class ProjectFeaturesController extends Controller {
permission: UPDATE_FEATURE_ENVIRONMENT, permission: UPDATE_FEATURE_ENVIRONMENT,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Features'],
operationId: 'toggleFeatureEnvironmentOff', operationId: 'toggleFeatureEnvironmentOff',
responses: { 200: createResponseSchema('featureSchema') }, responses: { 200: createResponseSchema('featureSchema') },
}), }),
@ -126,7 +126,7 @@ export default class ProjectFeaturesController extends Controller {
permission: UPDATE_FEATURE_ENVIRONMENT, permission: UPDATE_FEATURE_ENVIRONMENT,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Features'],
operationId: 'toggleFeatureEnvironmentOn', operationId: 'toggleFeatureEnvironmentOn',
responses: { 200: createResponseSchema('featureSchema') }, responses: { 200: createResponseSchema('featureSchema') },
}), }),
@ -140,7 +140,7 @@ export default class ProjectFeaturesController extends Controller {
permission: NONE, permission: NONE,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Features'],
operationId: 'getFeatureStrategies', operationId: 'getFeatureStrategies',
responses: { responses: {
200: createResponseSchema('featureStrategySchema'), 200: createResponseSchema('featureStrategySchema'),
@ -156,7 +156,7 @@ export default class ProjectFeaturesController extends Controller {
permission: CREATE_FEATURE_STRATEGY, permission: CREATE_FEATURE_STRATEGY,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Features'],
operationId: 'addFeatureStrategy', operationId: 'addFeatureStrategy',
requestBody: createRequestSchema( requestBody: createRequestSchema(
'createFeatureStrategySchema', 'createFeatureStrategySchema',
@ -175,7 +175,7 @@ export default class ProjectFeaturesController extends Controller {
permission: NONE, permission: NONE,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Features'],
operationId: 'getFeatureStrategy', operationId: 'getFeatureStrategy',
responses: { responses: {
200: createResponseSchema('featureStrategySchema'), 200: createResponseSchema('featureStrategySchema'),
@ -191,7 +191,7 @@ export default class ProjectFeaturesController extends Controller {
permission: UPDATE_FEATURE_STRATEGY, permission: UPDATE_FEATURE_STRATEGY,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Features'],
operationId: 'setStrategySortOrder', operationId: 'setStrategySortOrder',
requestBody: createRequestSchema( requestBody: createRequestSchema(
'setStrategySortOrderSchema', 'setStrategySortOrderSchema',
@ -210,7 +210,7 @@ export default class ProjectFeaturesController extends Controller {
permission: UPDATE_FEATURE_STRATEGY, permission: UPDATE_FEATURE_STRATEGY,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Features'],
operationId: 'updateFeatureStrategy', operationId: 'updateFeatureStrategy',
requestBody: createRequestSchema( requestBody: createRequestSchema(
'updateFeatureStrategySchema', 'updateFeatureStrategySchema',
@ -229,7 +229,7 @@ export default class ProjectFeaturesController extends Controller {
permission: UPDATE_FEATURE_STRATEGY, permission: UPDATE_FEATURE_STRATEGY,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Features'],
operationId: 'patchFeatureStrategy', operationId: 'patchFeatureStrategy',
requestBody: createRequestSchema('patchesSchema'), requestBody: createRequestSchema('patchesSchema'),
responses: { responses: {
@ -248,7 +248,7 @@ export default class ProjectFeaturesController extends Controller {
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
operationId: 'deleteFeatureStrategy', operationId: 'deleteFeatureStrategy',
tags: ['admin'], tags: ['Features'],
responses: { 200: emptyResponse }, responses: { 200: emptyResponse },
}), }),
], ],
@ -261,7 +261,7 @@ export default class ProjectFeaturesController extends Controller {
permission: NONE, permission: NONE,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Features'],
operationId: 'getFeatures', operationId: 'getFeatures',
responses: { 200: createResponseSchema('featuresSchema') }, responses: { 200: createResponseSchema('featuresSchema') },
}), }),
@ -275,7 +275,7 @@ export default class ProjectFeaturesController extends Controller {
permission: CREATE_FEATURE, permission: CREATE_FEATURE,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Features'],
operationId: 'createFeature', operationId: 'createFeature',
requestBody: createRequestSchema('createFeatureSchema'), requestBody: createRequestSchema('createFeatureSchema'),
responses: { 200: createResponseSchema('featureSchema') }, responses: { 200: createResponseSchema('featureSchema') },
@ -291,7 +291,7 @@ export default class ProjectFeaturesController extends Controller {
permission: CREATE_FEATURE, permission: CREATE_FEATURE,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Features'],
operationId: 'cloneFeature', operationId: 'cloneFeature',
requestBody: createRequestSchema('cloneFeatureSchema'), requestBody: createRequestSchema('cloneFeatureSchema'),
responses: { 200: createResponseSchema('featureSchema') }, responses: { 200: createResponseSchema('featureSchema') },
@ -307,7 +307,7 @@ export default class ProjectFeaturesController extends Controller {
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
operationId: 'getFeature', operationId: 'getFeature',
tags: ['admin'], tags: ['Features'],
responses: { 200: createResponseSchema('featureSchema') }, responses: { 200: createResponseSchema('featureSchema') },
}), }),
], ],
@ -320,7 +320,7 @@ export default class ProjectFeaturesController extends Controller {
permission: UPDATE_FEATURE, permission: UPDATE_FEATURE,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Features'],
operationId: 'updateFeature', operationId: 'updateFeature',
requestBody: createRequestSchema('updateFeatureSchema'), requestBody: createRequestSchema('updateFeatureSchema'),
responses: { 200: createResponseSchema('featureSchema') }, responses: { 200: createResponseSchema('featureSchema') },
@ -335,7 +335,7 @@ export default class ProjectFeaturesController extends Controller {
permission: UPDATE_FEATURE, permission: UPDATE_FEATURE,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Features'],
operationId: 'patchFeature', operationId: 'patchFeature',
requestBody: createRequestSchema('patchesSchema'), requestBody: createRequestSchema('patchesSchema'),
responses: { 200: createResponseSchema('featureSchema') }, responses: { 200: createResponseSchema('featureSchema') },
@ -351,7 +351,7 @@ export default class ProjectFeaturesController extends Controller {
permission: DELETE_FEATURE, permission: DELETE_FEATURE,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Features'],
operationId: 'archiveFeature', operationId: 'archiveFeature',
responses: { 200: emptyResponse }, responses: { 200: emptyResponse },
}), }),

View File

@ -44,7 +44,7 @@ export default class ProjectHealthReport extends Controller {
permission: NONE, permission: NONE,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Projects'],
operationId: 'getProjectHealthOverview', operationId: 'getProjectHealthOverview',
responses: { responses: {
200: createResponseSchema('healthOverviewSchema'), 200: createResponseSchema('healthOverviewSchema'),
@ -60,7 +60,7 @@ export default class ProjectHealthReport extends Controller {
permission: NONE, permission: NONE,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Projects'],
operationId: 'getProjectHealthReport', operationId: 'getProjectHealthReport',
responses: { responses: {
200: createResponseSchema('healthReportSchema'), 200: createResponseSchema('healthReportSchema'),

View File

@ -33,7 +33,7 @@ export default class ProjectApi extends Controller {
permission: NONE, permission: NONE,
middleware: [ middleware: [
services.openApiService.validPath({ services.openApiService.validPath({
tags: ['admin'], tags: ['Projects'],
operationId: 'getProjects', operationId: 'getProjects',
responses: { responses: {
200: createResponseSchema('projectsSchema'), 200: createResponseSchema('projectsSchema'),

View File

@ -44,7 +44,7 @@ export default class VariantsController extends Controller {
handler: this.getVariants, handler: this.getVariants,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Features'],
operationId: 'getFeatureVariants', operationId: 'getFeatureVariants',
responses: { responses: {
200: createResponseSchema('featureVariantsSchema'), 200: createResponseSchema('featureVariantsSchema'),
@ -59,7 +59,7 @@ export default class VariantsController extends Controller {
handler: this.patchVariants, handler: this.patchVariants,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Features'],
operationId: 'patchFeatureVariants', operationId: 'patchFeatureVariants',
requestBody: createRequestSchema('patchesSchema'), requestBody: createRequestSchema('patchesSchema'),
responses: { responses: {
@ -75,7 +75,7 @@ export default class VariantsController extends Controller {
handler: this.overwriteVariants, handler: this.overwriteVariants,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Features'],
operationId: 'overwriteFeatureVariants', operationId: 'overwriteFeatureVariants',
requestBody: createRequestSchema('variantsSchema'), requestBody: createRequestSchema('variantsSchema'),
responses: { responses: {

View File

@ -58,7 +58,7 @@ class StateController extends Controller {
handler: this.import, handler: this.import,
middleware: [ middleware: [
this.openApiService.validPath({ this.openApiService.validPath({
tags: ['admin'], tags: ['Import/Export'],
operationId: 'import', operationId: 'import',
responses: { responses: {
202: emptyResponse, 202: emptyResponse,
@ -74,7 +74,7 @@ class StateController extends Controller {
handler: this.export, handler: this.export,
middleware: [ middleware: [
this.openApiService.validPath({ this.openApiService.validPath({
tags: ['admin'], tags: ['Import/Export'],
operationId: 'export', operationId: 'export',
responses: { responses: {
200: createResponseSchema('stateSchema'), 200: createResponseSchema('stateSchema'),

View File

@ -54,7 +54,7 @@ class StrategyController extends Controller {
permission: NONE, permission: NONE,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Strategies'],
operationId: 'getAllStrategies', operationId: 'getAllStrategies',
responses: { responses: {
200: createResponseSchema('strategiesSchema'), 200: createResponseSchema('strategiesSchema'),
@ -70,7 +70,7 @@ class StrategyController extends Controller {
permission: NONE, permission: NONE,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Strategies'],
operationId: 'getStrategy', operationId: 'getStrategy',
responses: { 200: createResponseSchema('strategySchema') }, responses: { 200: createResponseSchema('strategySchema') },
}), }),
@ -85,7 +85,7 @@ class StrategyController extends Controller {
acceptAnyContentType: true, acceptAnyContentType: true,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Strategies'],
operationId: 'removeStrategy', operationId: 'removeStrategy',
responses: { 200: emptyResponse }, responses: { 200: emptyResponse },
}), }),
@ -99,7 +99,7 @@ class StrategyController extends Controller {
permission: CREATE_STRATEGY, permission: CREATE_STRATEGY,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Strategies'],
operationId: 'createStrategy', operationId: 'createStrategy',
requestBody: createRequestSchema('upsertStrategySchema'), requestBody: createRequestSchema('upsertStrategySchema'),
responses: { 201: emptyResponse }, responses: { 201: emptyResponse },
@ -114,7 +114,7 @@ class StrategyController extends Controller {
permission: UPDATE_STRATEGY, permission: UPDATE_STRATEGY,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Strategies'],
operationId: 'updateStrategy', operationId: 'updateStrategy',
requestBody: createRequestSchema('upsertStrategySchema'), requestBody: createRequestSchema('upsertStrategySchema'),
responses: { 200: emptyResponse }, responses: { 200: emptyResponse },
@ -130,7 +130,7 @@ class StrategyController extends Controller {
acceptAnyContentType: true, acceptAnyContentType: true,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Strategies'],
operationId: 'deprecateStrategy', operationId: 'deprecateStrategy',
responses: { 200: emptyResponse }, responses: { 200: emptyResponse },
}), }),
@ -145,7 +145,7 @@ class StrategyController extends Controller {
acceptAnyContentType: true, acceptAnyContentType: true,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Strategies'],
operationId: 'reactivateStrategy', operationId: 'reactivateStrategy',
responses: { 200: emptyResponse }, responses: { 200: emptyResponse },
}), }),

View File

@ -51,7 +51,7 @@ class TagTypeController extends Controller {
permission: NONE, permission: NONE,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Tags'],
operationId: 'getTagTypes', operationId: 'getTagTypes',
responses: { 200: createResponseSchema('tagTypesSchema') }, responses: { 200: createResponseSchema('tagTypesSchema') },
}), }),
@ -64,7 +64,7 @@ class TagTypeController extends Controller {
permission: UPDATE_TAG_TYPE, permission: UPDATE_TAG_TYPE,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Tags'],
operationId: 'createTagType', operationId: 'createTagType',
responses: { 201: createResponseSchema('tagTypeSchema') }, responses: { 201: createResponseSchema('tagTypeSchema') },
requestBody: createRequestSchema('tagTypeSchema'), requestBody: createRequestSchema('tagTypeSchema'),
@ -78,7 +78,7 @@ class TagTypeController extends Controller {
permission: UPDATE_TAG_TYPE, permission: UPDATE_TAG_TYPE,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Tags'],
operationId: 'validateTagType', operationId: 'validateTagType',
responses: { responses: {
200: createResponseSchema('validateTagTypeSchema'), 200: createResponseSchema('validateTagTypeSchema'),
@ -94,7 +94,7 @@ class TagTypeController extends Controller {
permission: NONE, permission: NONE,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Tags'],
operationId: 'getTagType', operationId: 'getTagType',
responses: { responses: {
200: createResponseSchema('tagTypeSchema'), 200: createResponseSchema('tagTypeSchema'),
@ -109,7 +109,7 @@ class TagTypeController extends Controller {
permission: UPDATE_TAG_TYPE, permission: UPDATE_TAG_TYPE,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Tags'],
operationId: 'updateTagType', operationId: 'updateTagType',
responses: { responses: {
200: emptyResponse, 200: emptyResponse,
@ -126,7 +126,7 @@ class TagTypeController extends Controller {
permission: DELETE_TAG_TYPE, permission: DELETE_TAG_TYPE,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Tags'],
operationId: 'deleteTagType', operationId: 'deleteTagType',
responses: { responses: {
200: emptyResponse, 200: emptyResponse,

View File

@ -48,7 +48,7 @@ class TagController extends Controller {
permission: NONE, permission: NONE,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Tags'],
operationId: 'getTags', operationId: 'getTags',
responses: { 200: createResponseSchema('tagsSchema') }, responses: { 200: createResponseSchema('tagsSchema') },
}), }),
@ -61,7 +61,7 @@ class TagController extends Controller {
permission: UPDATE_FEATURE, permission: UPDATE_FEATURE,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Tags'],
operationId: 'createTag', operationId: 'createTag',
responses: { responses: {
201: emptyResponse, 201: emptyResponse,
@ -77,7 +77,7 @@ class TagController extends Controller {
permission: NONE, permission: NONE,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Tags'],
operationId: 'getTagsByType', operationId: 'getTagsByType',
responses: { responses: {
200: createResponseSchema('tagsSchema'), 200: createResponseSchema('tagsSchema'),
@ -92,7 +92,7 @@ class TagController extends Controller {
permission: NONE, permission: NONE,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Tags'],
operationId: 'getTag', operationId: 'getTag',
responses: { responses: {
200: createResponseSchema('tagWithVersionSchema'), 200: createResponseSchema('tagWithVersionSchema'),
@ -108,7 +108,7 @@ class TagController extends Controller {
permission: UPDATE_FEATURE, permission: UPDATE_FEATURE,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Tags'],
operationId: 'deleteTag', operationId: 'deleteTag',
responses: { responses: {
200: emptyResponse, 200: emptyResponse,

View File

@ -99,7 +99,7 @@ export default class UserAdminController extends Controller {
permission: NONE, permission: NONE,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Users'],
operationId: 'validateUserPassword', operationId: 'validateUserPassword',
requestBody: createRequestSchema('passwordSchema'), requestBody: createRequestSchema('passwordSchema'),
responses: { 200: emptyResponse }, responses: { 200: emptyResponse },
@ -114,7 +114,7 @@ export default class UserAdminController extends Controller {
permission: ADMIN, permission: ADMIN,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Users'],
operationId: 'changeUserPassword', operationId: 'changeUserPassword',
requestBody: createRequestSchema('passwordSchema'), requestBody: createRequestSchema('passwordSchema'),
responses: { 200: emptyResponse }, responses: { 200: emptyResponse },
@ -129,7 +129,7 @@ export default class UserAdminController extends Controller {
permission: ADMIN, permission: ADMIN,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Users'],
operationId: 'resetUserPassword', operationId: 'resetUserPassword',
requestBody: createRequestSchema('idSchema'), requestBody: createRequestSchema('idSchema'),
responses: { responses: {
@ -146,7 +146,7 @@ export default class UserAdminController extends Controller {
permission: ADMIN, permission: ADMIN,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Users'],
operationId: 'getUsers', operationId: 'getUsers',
responses: { 200: createResponseSchema('usersSchema') }, responses: { 200: createResponseSchema('usersSchema') },
}), }),
@ -160,7 +160,7 @@ export default class UserAdminController extends Controller {
permission: NONE, permission: NONE,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Users'],
operationId: 'searchUsers', operationId: 'searchUsers',
responses: { 200: createResponseSchema('usersSchema') }, responses: { 200: createResponseSchema('usersSchema') },
}), }),
@ -174,7 +174,7 @@ export default class UserAdminController extends Controller {
permission: NONE, permission: NONE,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Users'],
operationId: 'getBaseUsersAndGroups', operationId: 'getBaseUsersAndGroups',
responses: { responses: {
200: createResponseSchema('usersGroupsBaseSchema'), 200: createResponseSchema('usersGroupsBaseSchema'),
@ -190,7 +190,7 @@ export default class UserAdminController extends Controller {
permission: ADMIN, permission: ADMIN,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Users'],
operationId: 'createUser', operationId: 'createUser',
requestBody: createRequestSchema('createUserSchema'), requestBody: createRequestSchema('createUserSchema'),
responses: { 200: createResponseSchema('userSchema') }, responses: { 200: createResponseSchema('userSchema') },
@ -205,7 +205,7 @@ export default class UserAdminController extends Controller {
permission: ADMIN, permission: ADMIN,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Users'],
operationId: 'getUser', operationId: 'getUser',
responses: { 200: createResponseSchema('userSchema') }, responses: { 200: createResponseSchema('userSchema') },
}), }),
@ -219,7 +219,7 @@ export default class UserAdminController extends Controller {
permission: ADMIN, permission: ADMIN,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Users'],
operationId: 'updateUser', operationId: 'updateUser',
requestBody: createRequestSchema('updateUserSchema'), requestBody: createRequestSchema('updateUserSchema'),
responses: { 200: createResponseSchema('userSchema') }, responses: { 200: createResponseSchema('userSchema') },
@ -235,7 +235,7 @@ export default class UserAdminController extends Controller {
permission: ADMIN, permission: ADMIN,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Users'],
operationId: 'deleteUser', operationId: 'deleteUser',
responses: { 200: emptyResponse }, responses: { 200: emptyResponse },
}), }),

View File

@ -43,7 +43,7 @@ class UserFeedbackController extends Controller {
permission: NONE, permission: NONE,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Admin UI'],
operationId: 'createFeedback', operationId: 'createFeedback',
requestBody: createRequestSchema('feedbackSchema'), requestBody: createRequestSchema('feedbackSchema'),
responses: { 200: createResponseSchema('feedbackSchema') }, responses: { 200: createResponseSchema('feedbackSchema') },
@ -58,7 +58,7 @@ class UserFeedbackController extends Controller {
permission: NONE, permission: NONE,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Admin UI'],
operationId: 'updateFeedback', operationId: 'updateFeedback',
requestBody: createRequestSchema('feedbackSchema'), requestBody: createRequestSchema('feedbackSchema'),
responses: { 200: createResponseSchema('feedbackSchema') }, responses: { 200: createResponseSchema('feedbackSchema') },

View File

@ -37,7 +37,7 @@ class UserSplashController extends Controller {
permission: NONE, permission: NONE,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Admin UI'],
operationId: 'updateSplashSettings', operationId: 'updateSplashSettings',
responses: { 200: createResponseSchema('splashSchema') }, responses: { 200: createResponseSchema('splashSchema') },
}), }),

View File

@ -59,7 +59,7 @@ class UserController extends Controller {
permission: NONE, permission: NONE,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Users'],
operationId: 'getMe', operationId: 'getMe',
responses: { 200: createResponseSchema('meSchema') }, responses: { 200: createResponseSchema('meSchema') },
}), }),
@ -73,7 +73,7 @@ class UserController extends Controller {
permission: NONE, permission: NONE,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['admin'], tags: ['Users'],
operationId: 'changeMyPassword', operationId: 'changeMyPassword',
requestBody: createRequestSchema('passwordSchema'), requestBody: createRequestSchema('passwordSchema'),
responses: { responses: {

View File

@ -56,7 +56,7 @@ class ResetPasswordController extends Controller {
permission: NONE, permission: NONE,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['auth'], tags: ['Auth'],
operationId: 'validateToken', operationId: 'validateToken',
responses: { 200: createResponseSchema('tokenUserSchema') }, responses: { 200: createResponseSchema('tokenUserSchema') },
}), }),
@ -69,7 +69,7 @@ class ResetPasswordController extends Controller {
permission: NONE, permission: NONE,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['other'], tags: ['Auth'],
operationId: 'changePassword', operationId: 'changePassword',
requestBody: createRequestSchema('changePasswordSchema'), requestBody: createRequestSchema('changePasswordSchema'),
responses: { 200: emptyResponse }, responses: { 200: emptyResponse },
@ -83,7 +83,7 @@ class ResetPasswordController extends Controller {
permission: NONE, permission: NONE,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['other'], tags: ['Auth'],
operationId: 'validatePassword', operationId: 'validatePassword',
requestBody: createRequestSchema('validatePasswordSchema'), requestBody: createRequestSchema('validatePasswordSchema'),
responses: { 200: emptyResponse }, responses: { 200: emptyResponse },
@ -97,7 +97,7 @@ class ResetPasswordController extends Controller {
permission: NONE, permission: NONE,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['other'], tags: ['Auth'],
operationId: 'sendResetPasswordEmail', operationId: 'sendResetPasswordEmail',
requestBody: createRequestSchema('emailSchema'), requestBody: createRequestSchema('emailSchema'),
responses: { 200: emptyResponse }, responses: { 200: emptyResponse },

View File

@ -39,7 +39,7 @@ export class SimplePasswordProvider extends Controller {
permission: NONE, permission: NONE,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['auth'], tags: ['Auth'],
operationId: 'login', operationId: 'login',
requestBody: createRequestSchema('loginSchema'), requestBody: createRequestSchema('loginSchema'),
responses: { responses: {

View File

@ -79,7 +79,7 @@ export default class FeatureController extends Controller {
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
operationId: 'getClientFeature', operationId: 'getClientFeature',
tags: ['client'], tags: ['Client'],
responses: { responses: {
200: createResponseSchema('clientFeaturesSchema'), 200: createResponseSchema('clientFeaturesSchema'),
}, },
@ -95,7 +95,7 @@ export default class FeatureController extends Controller {
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
operationId: 'getAllClientFeatures', operationId: 'getAllClientFeatures',
tags: ['client'], tags: ['Client'],
responses: { responses: {
200: createResponseSchema('clientFeaturesSchema'), 200: createResponseSchema('clientFeaturesSchema'),
}, },

View File

@ -54,7 +54,7 @@ export default class ClientMetricsController extends Controller {
permission: NONE, permission: NONE,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['client'], tags: ['Client'],
operationId: 'registerClientMetrics', operationId: 'registerClientMetrics',
requestBody: createRequestSchema('clientMetricsSchema'), requestBody: createRequestSchema('clientMetricsSchema'),
responses: { responses: {

View File

@ -40,7 +40,7 @@ export default class RegisterController extends Controller {
permission: NONE, permission: NONE,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['client'], tags: ['Client'],
operationId: 'registerClientApplication', operationId: 'registerClientApplication',
requestBody: createRequestSchema('clientApplicationSchema'), requestBody: createRequestSchema('clientApplicationSchema'),
responses: { 202: emptyResponse }, responses: { 202: emptyResponse },

View File

@ -29,7 +29,7 @@ export class HealthCheckController extends Controller {
permission: NONE, permission: NONE,
middleware: [ middleware: [
openApiService.validPath({ openApiService.validPath({
tags: ['other'], tags: ['Operational'],
operationId: 'getHealth', operationId: 'getHealth',
responses: { responses: {
200: createResponseSchema('healthCheckSchema'), 200: createResponseSchema('healthCheckSchema'),

View File

@ -3061,7 +3061,7 @@ Object {
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Addons",
], ],
}, },
"post": Object { "post": Object {
@ -3090,7 +3090,7 @@ Object {
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Addons",
], ],
}, },
}, },
@ -3113,7 +3113,7 @@ Object {
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Addons",
], ],
}, },
"get": Object { "get": Object {
@ -3141,7 +3141,7 @@ Object {
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Addons",
], ],
}, },
"put": Object { "put": Object {
@ -3180,7 +3180,7 @@ Object {
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Addons",
], ],
}, },
}, },
@ -3200,7 +3200,7 @@ Object {
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "API tokens",
], ],
}, },
"post": Object { "post": Object {
@ -3229,7 +3229,7 @@ Object {
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "API tokens",
], ],
}, },
}, },
@ -3252,7 +3252,7 @@ Object {
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "API tokens",
], ],
}, },
"put": Object { "put": Object {
@ -3284,7 +3284,7 @@ Object {
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "API tokens",
], ],
}, },
}, },
@ -3305,7 +3305,7 @@ Object {
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Archive",
], ],
}, },
}, },
@ -3336,7 +3336,7 @@ Object {
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Archive",
], ],
}, },
}, },
@ -3359,7 +3359,7 @@ Object {
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Archive",
], ],
}, },
}, },
@ -3382,7 +3382,7 @@ Object {
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Archive",
], ],
}, },
}, },
@ -3412,7 +3412,7 @@ Object {
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Metrics",
], ],
}, },
}, },
@ -3442,7 +3442,7 @@ Object {
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Metrics",
], ],
}, },
}, },
@ -3469,7 +3469,7 @@ Object {
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Features",
], ],
}, },
}, },
@ -3489,7 +3489,7 @@ Object {
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Context",
], ],
}, },
"post": Object { "post": Object {
@ -3511,7 +3511,7 @@ Object {
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Context",
], ],
}, },
}, },
@ -3535,7 +3535,7 @@ Object {
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Context",
], ],
}, },
}, },
@ -3558,7 +3558,7 @@ Object {
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Context",
], ],
}, },
"get": Object { "get": Object {
@ -3586,7 +3586,7 @@ Object {
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Context",
], ],
}, },
"put": Object { "put": Object {
@ -3618,7 +3618,7 @@ Object {
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Context",
], ],
}, },
}, },
@ -3631,7 +3631,7 @@ Object {
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Environments",
], ],
}, },
}, },
@ -3655,7 +3655,7 @@ Object {
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Environments",
], ],
}, },
}, },
@ -3685,7 +3685,7 @@ Object {
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Environments",
], ],
}, },
}, },
@ -3708,7 +3708,7 @@ Object {
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Environments",
], ],
}, },
}, },
@ -3731,7 +3731,7 @@ Object {
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Environments",
], ],
}, },
}, },
@ -3768,7 +3768,7 @@ If 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.", "summary": "Get the most recent events from the Unleash instance or all events related to a project.",
"tags": Array [ "tags": Array [
"admin", "Events",
], ],
}, },
}, },
@ -3799,7 +3799,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Events",
], ],
}, },
}, },
@ -3834,7 +3834,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
"summary": "Get all events related to a specific feature toggle.", "summary": "Get all events related to a specific feature toggle.",
"tags": Array [ "tags": Array [
"admin", "Events",
], ],
}, },
}, },
@ -3854,7 +3854,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Features",
], ],
}, },
}, },
@ -3875,7 +3875,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Features",
], ],
}, },
}, },
@ -3888,7 +3888,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Features",
], ],
}, },
}, },
@ -3918,7 +3918,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Features",
], ],
}, },
"post": Object { "post": Object {
@ -3957,7 +3957,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Features",
], ],
}, },
}, },
@ -3996,7 +3996,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Features",
], ],
}, },
}, },
@ -4027,7 +4027,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Admin UI",
], ],
}, },
}, },
@ -4068,7 +4068,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Admin UI",
], ],
}, },
}, },
@ -4088,7 +4088,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Metrics",
], ],
}, },
}, },
@ -4111,7 +4111,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Metrics",
], ],
}, },
"get": Object { "get": Object {
@ -4139,7 +4139,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Metrics",
], ],
}, },
"post": Object { "post": Object {
@ -4171,7 +4171,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Metrics",
], ],
}, },
}, },
@ -4210,7 +4210,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
"summary": "Evaluate an Unleash context against a set of environments and projects.", "summary": "Evaluate an Unleash context against a set of environments and projects.",
"tags": Array [ "tags": Array [
"admin", "Playground",
], ],
}, },
}, },
@ -4230,7 +4230,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Projects",
], ],
}, },
}, },
@ -4260,7 +4260,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Projects",
], ],
}, },
}, },
@ -4294,7 +4294,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Projects",
], ],
}, },
}, },
@ -4325,7 +4325,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Projects",
], ],
}, },
}, },
@ -4355,7 +4355,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Features",
], ],
}, },
"post": Object { "post": Object {
@ -4394,7 +4394,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Features",
], ],
}, },
}, },
@ -4425,7 +4425,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Features",
], ],
}, },
"get": Object { "get": Object {
@ -4461,7 +4461,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Features",
], ],
}, },
"patch": Object { "patch": Object {
@ -4508,7 +4508,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Features",
], ],
}, },
"put": Object { "put": Object {
@ -4555,7 +4555,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Features",
], ],
}, },
}, },
@ -4604,7 +4604,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Features",
], ],
}, },
}, },
@ -4650,7 +4650,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Features",
], ],
}, },
}, },
@ -4696,7 +4696,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Features",
], ],
}, },
}, },
@ -4742,7 +4742,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Features",
], ],
}, },
}, },
@ -4788,7 +4788,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Features",
], ],
}, },
"post": Object { "post": Object {
@ -4843,7 +4843,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Features",
], ],
}, },
}, },
@ -4893,7 +4893,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Features",
], ],
}, },
}, },
@ -4940,7 +4940,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Features",
], ],
}, },
"get": Object { "get": Object {
@ -4992,7 +4992,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Features",
], ],
}, },
"patch": Object { "patch": Object {
@ -5055,7 +5055,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Features",
], ],
}, },
"put": Object { "put": Object {
@ -5118,7 +5118,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Features",
], ],
}, },
}, },
@ -5156,7 +5156,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Features",
], ],
}, },
"patch": Object { "patch": Object {
@ -5203,7 +5203,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Features",
], ],
}, },
"put": Object { "put": Object {
@ -5250,7 +5250,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Features",
], ],
}, },
}, },
@ -5280,7 +5280,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Projects",
], ],
}, },
}, },
@ -5310,7 +5310,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Admin UI",
], ],
}, },
}, },
@ -5465,7 +5465,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Import/Export",
], ],
}, },
}, },
@ -5489,7 +5489,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Import/Export",
], ],
}, },
}, },
@ -5509,7 +5509,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Strategies",
], ],
}, },
"post": Object { "post": Object {
@ -5531,7 +5531,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Strategies",
], ],
}, },
}, },
@ -5554,7 +5554,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Strategies",
], ],
}, },
"get": Object { "get": Object {
@ -5582,7 +5582,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Strategies",
], ],
}, },
}, },
@ -5616,7 +5616,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Strategies",
], ],
}, },
}, },
@ -5639,7 +5639,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Strategies",
], ],
}, },
}, },
@ -5662,7 +5662,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Strategies",
], ],
}, },
}, },
@ -5682,7 +5682,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Tags",
], ],
}, },
"post": Object { "post": Object {
@ -5711,7 +5711,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Tags",
], ],
}, },
}, },
@ -5742,7 +5742,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Tags",
], ],
}, },
}, },
@ -5765,7 +5765,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Tags",
], ],
}, },
"get": Object { "get": Object {
@ -5793,7 +5793,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Tags",
], ],
}, },
"put": Object { "put": Object {
@ -5825,7 +5825,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Tags",
], ],
}, },
}, },
@ -5845,7 +5845,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Tags",
], ],
}, },
"post": Object { "post": Object {
@ -5867,7 +5867,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Tags",
], ],
}, },
}, },
@ -5897,7 +5897,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Tags",
], ],
}, },
}, },
@ -5928,7 +5928,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Tags",
], ],
}, },
"get": Object { "get": Object {
@ -5964,7 +5964,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Tags",
], ],
}, },
}, },
@ -5984,7 +5984,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Admin UI",
], ],
}, },
}, },
@ -6004,7 +6004,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Users",
], ],
}, },
}, },
@ -6024,7 +6024,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Users",
], ],
}, },
"post": Object { "post": Object {
@ -6053,7 +6053,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Users",
], ],
}, },
}, },
@ -6073,7 +6073,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Users",
], ],
}, },
}, },
@ -6104,7 +6104,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Users",
], ],
}, },
}, },
@ -6124,7 +6124,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Users",
], ],
}, },
}, },
@ -6148,7 +6148,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Users",
], ],
}, },
}, },
@ -6171,7 +6171,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Users",
], ],
}, },
"get": Object { "get": Object {
@ -6199,7 +6199,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Users",
], ],
}, },
"put": Object { "put": Object {
@ -6238,7 +6238,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Users",
], ],
}, },
}, },
@ -6272,7 +6272,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Users",
], ],
}, },
}, },
@ -6299,7 +6299,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"admin", "Users",
], ],
}, },
}, },
@ -6319,7 +6319,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"client", "Client",
], ],
}, },
}, },
@ -6349,7 +6349,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"client", "Client",
], ],
}, },
}, },
@ -6376,7 +6376,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"client", "Client",
], ],
}, },
}, },
@ -6400,7 +6400,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"client", "Client",
], ],
}, },
}, },
@ -6424,7 +6424,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"other", "Auth",
], ],
}, },
}, },
@ -6448,7 +6448,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"other", "Auth",
], ],
}, },
}, },
@ -6468,7 +6468,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"auth", "Auth",
], ],
}, },
}, },
@ -6492,7 +6492,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"other", "Auth",
], ],
}, },
}, },
@ -6523,7 +6523,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"auth", "Auth",
], ],
}, },
}, },
@ -6553,7 +6553,7 @@ If the provided project does not exist, the list of events will be empty.",
}, },
}, },
"tags": Array [ "tags": Array [
"other", "Operational",
], ],
}, },
}, },
@ -6568,5 +6568,79 @@ If the provided project does not exist, the list of events will be empty.",
"url": "http://localhost:4242", "url": "http://localhost:4242",
}, },
], ],
"tags": Array [
Object {
"description": "Create, update, and delete [Unleash addons](https://docs.getunleash.io/addons).",
"name": "Addons",
},
Object {
"description": "Configure the Unleash Admin UI.",
"name": "Admin UI",
},
Object {
"description": "Create, update, and delete [Unleash API tokens](https://docs.getunleash.io/reference/api-tokens-and-client-keys).",
"name": "API tokens",
},
Object {
"description": "Revive or permanently delete [archived feature toggles](https://docs.getunleash.io/advanced/archived_toggles).",
"name": "Archive",
},
Object {
"description": "Manage logins, passwords, etc.",
"name": "Auth",
},
Object {
"description": "Endpoints for [Unleash server-side clients](https://docs.getunleash.io/sdks).",
"name": "Client",
},
Object {
"description": "Create, update, and delete [context fields](https://docs.getunleash.io/user_guide/unleash_context) that Unleash is aware of.",
"name": "Context",
},
Object {
"description": "Create, update, delete, enable or disable [environments](https://docs.getunleash.io/user_guide/environments) for this Unleash instance.",
"name": "Environments",
},
Object {
"description": "Read events from this Unleash instance.",
"name": "Events",
},
Object {
"description": "Create, update, and delete [features toggles](https://docs.getunleash.io/reference/feature-toggles).",
"name": "Features",
},
Object {
"description": "[Import and export](https://docs.getunleash.io/deploy/import_export) the state of your Unleash instance.",
"name": "Import/Export",
},
Object {
"description": "Register, read, or delete metrics recorded by Unleash.",
"name": "Metrics",
},
Object {
"description": "Endpoints related to the operational status of this Unleash instance.",
"name": "Operational",
},
Object {
"description": "Evaluate an Unleash context against your feature toggles.",
"name": "Playground",
},
Object {
"description": "Create, update, and delete [Unleash projects](https://docs.getunleash.io/user_guide/projects).",
"name": "Projects",
},
Object {
"description": "Create, update, delete, manage [custom strategies](https://docs.getunleash.io/advanced/custom_activation_strategy).",
"name": "Strategies",
},
Object {
"description": "Create, update, and delete [tags and tag types](https://docs.getunleash.io/advanced/tags).",
"name": "Tags",
},
Object {
"description": "Manage users and passwords.",
"name": "Users",
},
],
} }
`; `;

View File

@ -22,11 +22,12 @@ The internal API used by the Admin UI (unleash-frontend). Since v4.0.0 all opera
With versions earlier than v4.0.0 and `insecure` authentication Basic Auth (with curl `-u myemail@test.com:`) is enough. With versions earlier than v4.0.0 and `insecure` authentication Basic Auth (with curl `-u myemail@test.com:`) is enough.
- [Feature Toggles API](/api/admin/features) - [Events API](/api/admin/events-api.md)
- [Strategies API](/api/admin/strategies) - [Feature Toggles API](/api/admin/feature-toggles-api.md)
- [Events API](/api/admin/events) - [Metrics API](/api/admin/metrics-api.md)
- [Metrics API](/api/admin/metrics) - [Project API](/api/admin/project.md)
- [Tags API](/api/admin/tags) - [Strategies API](/api/admin/strategies-api.md)
- [Tags API](/api/admin/tags-api.md)
## System API's {#system-apis} ## System API's {#system-apis}

View File

@ -119,6 +119,8 @@ module.exports = {
{ sync: true }, { sync: true },
], ],
], ],
docLayoutComponent: '@theme/DocPage',
docItemComponent: '@theme/ApiItem',
}, },
theme: { theme: {
customCss: require.resolve('./src/css/custom.css'), customCss: require.resolve('./src/css/custom.css'),
@ -179,5 +181,28 @@ module.exports = {
}, },
}, },
], ],
// NOTE: activate this when we sort out the enterprise / open
// source API situation
//
// [
// 'docusaurus-plugin-openapi-docs',
// {
// id: 'api-operations',
// docsPluginId: 'classic',
// config: {
// server: {
// specPath: process.env.NODE_ENV === 'development' ?
// 'http://localhost:4242/docs/openapi.json'
// : './openapi-spec.generated.json',
// outputDir: 'docs/reference/apis/unleash',
// sidebarOptions: {
// groupPathsBy: 'tag',
// categoryLinkSource: 'tag',
// },
// },
// },
// },
// ],
], ],
themes: ['docusaurus-theme-openapi-docs'], // Allows use of @theme/ApiItem and other components
}; };

View File

@ -27,6 +27,8 @@
"@mdx-js/react": "1.6.22", "@mdx-js/react": "1.6.22",
"@svgr/webpack": "6.3.1", "@svgr/webpack": "6.3.1",
"clsx": "1.2.1", "clsx": "1.2.1",
"docusaurus-plugin-openapi-docs": "1.1.5",
"docusaurus-theme-openapi-docs": "1.1.5",
"file-loader": "6.2.0", "file-loader": "6.2.0",
"react": "18.2.0", "react": "18.2.0",
"react-dom": "18.2.0", "react-dom": "18.2.0",

View File

@ -160,6 +160,7 @@ module.exports = {
'api/admin/segments', 'api/admin/segments',
'api/admin/state', 'api/admin/state',
'api/admin/strategies', 'api/admin/strategies',
'api/admin/tags',
'api/admin/user-admin', 'api/admin/user-admin',
], ],
'Client API': [ 'Client API': [
@ -172,7 +173,21 @@ module.exports = {
'api/internal/health', 'api/internal/health',
], ],
}, },
'api/open_api', // NOTE: activate this when we're ready to integrate generated OpenAPI docs
//
// {
// label: 'OpenAPI docs',
// collapsed: true,
// type: 'category',
// link: {
// title: 'Unleash Server APIs',
// type: 'generated-index',
// description:
// 'Generated API docs based on the Unleash OpenAPI schema. For the time being, some additional info can also be found in the older API docs.',
// slug: '/reference/apis/unleash',
// },
// items: require('./docs/reference/apis/unleash/sidebar.js'),
// },
], ],
}, },
{ {

View File

@ -121,7 +121,7 @@
margin-top: var(--row-gap); margin-top: var(--row-gap);
display: flex; display: flex;
flex-direction: row-reverse; flex-direction: row-reverse;
justify-content: end; justify-content: flex-end;
gap: var(--element-horizontal-gap); gap: var(--element-horizontal-gap);
} }
@ -145,7 +145,7 @@ button.close-button {
.close-button-row { .close-button-row {
display: flex; display: flex;
justify-content: end; justify-content: flex-end;
} }
.close-button svg { .close-button svg {

View File

@ -167,3 +167,65 @@ html[data-theme='dark'] .header-github-link:before {
} }
/* end video content container */ /* end video content container */
/* docusaurus-plugin-openapi-docs styling
Taken from
https://github.com/PaloAltoNetworks/docusaurus-openapi-docs/blob/main/demo/src/css/custom.css#L45
Based on this thread:
https://github.com/PaloAltoNetworks/docusaurus-openapi-docs/issues/177
*/
/* Sidebar Method labels */
.api-method > .menu__link {
align-items: center;
justify-content: start;
}
.api-method > .menu__link::before {
width: 50px;
height: 20px;
font-size: 12px;
line-height: 20px;
text-transform: uppercase;
font-weight: 600;
border-radius: 0.25rem;
border: 1px solid;
margin-right: var(--ifm-spacing-horizontal);
text-align: center;
flex-shrink: 0;
border-color: transparent;
color: white;
}
.get > .menu__link::before {
content: 'get';
background-color: var(--openapi-code-blue);
}
.post > .menu__link::before {
content: 'post';
background-color: var(--openapi-code-green);
}
.delete > .menu__link::before {
content: 'del';
background-color: var(--openapi-code-red);
}
.put > .menu__link::before {
content: 'put';
background-color: var(--openapi-code-orange);
}
.patch > .menu__link::before {
content: 'patch';
background-color: var(--openapi-code-green);
}
.head > .menu__link::before {
content: 'head';
background-color: var(--ifm-color-secondary-darkest);
}

14716
website/yarn.lock Normal file

File diff suppressed because it is too large Load Diff