mirror of
				https://github.com/Unleash/unleash.git
				synced 2025-10-27 11:02:16 +01:00 
			
		
		
		
	OpenAPI - feature environment endpoints (#4166)
## About the changes
Fix OpenAPI definitions for endpoint
`/api/admin/projects/{projectId}/features/{featureName}/environments/{environment}`
and similar.
			
			
This commit is contained in:
		
							parent
							
								
									ec1bc9bb4e
								
							
						
					
					
						commit
						1b99b700d6
					
				| @ -90,7 +90,6 @@ const metaRules: Rule[] = [ | |||||||
|             }, |             }, | ||||||
|         }, |         }, | ||||||
|         knownExceptions: [ |         knownExceptions: [ | ||||||
|             'batchFeaturesSchema', |  | ||||||
|             'batchStaleSchema', |             'batchStaleSchema', | ||||||
|             'cloneFeatureSchema', |             'cloneFeatureSchema', | ||||||
|             'createFeatureSchema', |             'createFeatureSchema', | ||||||
| @ -98,7 +97,6 @@ const metaRules: Rule[] = [ | |||||||
|             'environmentsSchema', |             'environmentsSchema', | ||||||
|             'environmentsProjectSchema', |             'environmentsProjectSchema', | ||||||
|             'featureEnvironmentSchema', |             'featureEnvironmentSchema', | ||||||
|             'featureSchema', |  | ||||||
|             'featuresSchema', |             'featuresSchema', | ||||||
|             'featureStrategySegmentSchema', |             'featureStrategySegmentSchema', | ||||||
|             'featureTypeSchema', |             'featureTypeSchema', | ||||||
| @ -150,7 +148,6 @@ const metaRules: Rule[] = [ | |||||||
|             'adminFeaturesQuerySchema', |             'adminFeaturesQuerySchema', | ||||||
|             'applicationSchema', |             'applicationSchema', | ||||||
|             'applicationsSchema', |             'applicationsSchema', | ||||||
|             'batchFeaturesSchema', |  | ||||||
|             'batchStaleSchema', |             'batchStaleSchema', | ||||||
|             'cloneFeatureSchema', |             'cloneFeatureSchema', | ||||||
|             'createFeatureSchema', |             'createFeatureSchema', | ||||||
| @ -158,7 +155,6 @@ const metaRules: Rule[] = [ | |||||||
|             'createInvitedUserSchema', |             'createInvitedUserSchema', | ||||||
|             'dateSchema', |             'dateSchema', | ||||||
|             'environmentsSchema', |             'environmentsSchema', | ||||||
|             'featureSchema', |  | ||||||
|             'featuresSchema', |             'featuresSchema', | ||||||
|             'featureStrategySegmentSchema', |             'featureStrategySegmentSchema', | ||||||
|             'featureTypeSchema', |             'featureTypeSchema', | ||||||
| @ -169,7 +165,6 @@ const metaRules: Rule[] = [ | |||||||
|             'groupUserModelSchema', |             'groupUserModelSchema', | ||||||
|             'maintenanceSchema', |             'maintenanceSchema', | ||||||
|             'toggleMaintenanceSchema', |             'toggleMaintenanceSchema', | ||||||
|             'parametersSchema', |  | ||||||
|             'patchesSchema', |             'patchesSchema', | ||||||
|             'patchSchema', |             'patchSchema', | ||||||
|             'playgroundSegmentSchema', |             'playgroundSegmentSchema', | ||||||
|  | |||||||
| @ -3,6 +3,7 @@ import { FromSchema } from 'json-schema-to-ts'; | |||||||
| export const batchFeaturesSchema = { | export const batchFeaturesSchema = { | ||||||
|     $id: '#/components/schemas/batchFeaturesSchema', |     $id: '#/components/schemas/batchFeaturesSchema', | ||||||
|     type: 'object', |     type: 'object', | ||||||
|  |     description: 'A list of feature toggle names for batch operations', | ||||||
|     required: ['features'], |     required: ['features'], | ||||||
|     properties: { |     properties: { | ||||||
|         features: { |         features: { | ||||||
| @ -10,6 +11,7 @@ export const batchFeaturesSchema = { | |||||||
|             items: { |             items: { | ||||||
|                 type: 'string', |                 type: 'string', | ||||||
|             }, |             }, | ||||||
|  |             description: 'List of feature toggle names', | ||||||
|         }, |         }, | ||||||
|     }, |     }, | ||||||
|     components: { |     components: { | ||||||
|  | |||||||
| @ -42,6 +42,7 @@ export const featureEnvironmentSchema = { | |||||||
|         }, |         }, | ||||||
|         variantCount: { |         variantCount: { | ||||||
|             type: 'number', |             type: 'number', | ||||||
|  |             description: 'The number of defined variants', | ||||||
|         }, |         }, | ||||||
|         strategies: { |         strategies: { | ||||||
|             type: 'array', |             type: 'array', | ||||||
|  | |||||||
| @ -12,6 +12,7 @@ export const featureSchema = { | |||||||
|     type: 'object', |     type: 'object', | ||||||
|     additionalProperties: false, |     additionalProperties: false, | ||||||
|     required: ['name'], |     required: ['name'], | ||||||
|  |     description: 'A feature toggle definition', | ||||||
|     properties: { |     properties: { | ||||||
|         name: { |         name: { | ||||||
|             type: 'string', |             type: 'string', | ||||||
| @ -44,6 +45,7 @@ export const featureSchema = { | |||||||
|         enabled: { |         enabled: { | ||||||
|             type: 'boolean', |             type: 'boolean', | ||||||
|             example: true, |             example: true, | ||||||
|  |             description: '`true` if the feature is enabled, otherwise `false`.', | ||||||
|         }, |         }, | ||||||
|         stale: { |         stale: { | ||||||
|             type: 'boolean', |             type: 'boolean', | ||||||
| @ -68,18 +70,22 @@ export const featureSchema = { | |||||||
|             format: 'date-time', |             format: 'date-time', | ||||||
|             nullable: true, |             nullable: true, | ||||||
|             example: '2023-01-28T15:21:39.975Z', |             example: '2023-01-28T15:21:39.975Z', | ||||||
|  |             description: 'The date the feature was created', | ||||||
|         }, |         }, | ||||||
|         archivedAt: { |         archivedAt: { | ||||||
|             type: 'string', |             type: 'string', | ||||||
|             format: 'date-time', |             format: 'date-time', | ||||||
|             nullable: true, |             nullable: true, | ||||||
|             example: '2023-01-29T15:21:39.975Z', |             example: '2023-01-29T15:21:39.975Z', | ||||||
|  |             description: 'The date the feature was archived', | ||||||
|         }, |         }, | ||||||
|         lastSeenAt: { |         lastSeenAt: { | ||||||
|             type: 'string', |             type: 'string', | ||||||
|             format: 'date-time', |             format: 'date-time', | ||||||
|             nullable: true, |             nullable: true, | ||||||
|             example: '2023-01-28T16:21:39.975Z', |             example: '2023-01-28T16:21:39.975Z', | ||||||
|  |             description: | ||||||
|  |                 'The date when metrics where last collected for the feature', | ||||||
|         }, |         }, | ||||||
|         environments: { |         environments: { | ||||||
|             type: 'array', |             type: 'array', | ||||||
|  | |||||||
| @ -3,6 +3,7 @@ import { FromSchema } from 'json-schema-to-ts'; | |||||||
| export const parametersSchema = { | export const parametersSchema = { | ||||||
|     $id: '#/components/schemas/parametersSchema', |     $id: '#/components/schemas/parametersSchema', | ||||||
|     type: 'object', |     type: 'object', | ||||||
|  |     description: 'A list of parameters for a strategy', | ||||||
|     additionalProperties: { |     additionalProperties: { | ||||||
|         type: 'string', |         type: 'string', | ||||||
|     }, |     }, | ||||||
|  | |||||||
| @ -161,7 +161,7 @@ class FeatureController extends Controller { | |||||||
|                     operationId: 'removeTag', |                     operationId: 'removeTag', | ||||||
|                     responses: { |                     responses: { | ||||||
|                         200: emptyResponse, |                         200: emptyResponse, | ||||||
|                         ...getStandardResponses(404), |                         ...getStandardResponses(401, 403, 404), | ||||||
|                     }, |                     }, | ||||||
|                 }), |                 }), | ||||||
|             ], |             ], | ||||||
|  | |||||||
| @ -152,10 +152,14 @@ export default class ProjectFeaturesController extends Controller { | |||||||
|             handler: this.getFeatureEnvironment, |             handler: this.getFeatureEnvironment, | ||||||
|             middleware: [ |             middleware: [ | ||||||
|                 openApiService.validPath({ |                 openApiService.validPath({ | ||||||
|  |                     summary: 'Get a feature environment.', | ||||||
|  |                     description: | ||||||
|  |                         'Information about the enablement status and strategies for a feature toggle in specified environment.', | ||||||
|                     tags: ['Features'], |                     tags: ['Features'], | ||||||
|                     operationId: 'getFeatureEnvironment', |                     operationId: 'getFeatureEnvironment', | ||||||
|                     responses: { |                     responses: { | ||||||
|                         200: createResponseSchema('featureEnvironmentSchema'), |                         200: createResponseSchema('featureEnvironmentSchema'), | ||||||
|  |                         ...getStandardResponses(401, 403, 404), | ||||||
|                     }, |                     }, | ||||||
|                 }), |                 }), | ||||||
|             ], |             ], | ||||||
| @ -169,9 +173,15 @@ export default class ProjectFeaturesController extends Controller { | |||||||
|             permission: UPDATE_FEATURE_ENVIRONMENT, |             permission: UPDATE_FEATURE_ENVIRONMENT, | ||||||
|             middleware: [ |             middleware: [ | ||||||
|                 openApiService.validPath({ |                 openApiService.validPath({ | ||||||
|  |                     summary: 'Disable a feature toggle.', | ||||||
|  |                     description: | ||||||
|  |                         'Disable a feature toggle in the specified environment.', | ||||||
|                     tags: ['Features'], |                     tags: ['Features'], | ||||||
|                     operationId: 'toggleFeatureEnvironmentOff', |                     operationId: 'toggleFeatureEnvironmentOff', | ||||||
|                     responses: { 200: createResponseSchema('featureSchema') }, |                     responses: { | ||||||
|  |                         200: createResponseSchema('featureSchema'), | ||||||
|  |                         ...getStandardResponses(400, 401, 403, 404), | ||||||
|  |                     }, | ||||||
|                 }), |                 }), | ||||||
|             ], |             ], | ||||||
|         }); |         }); | ||||||
| @ -184,9 +194,15 @@ export default class ProjectFeaturesController extends Controller { | |||||||
|             permission: UPDATE_FEATURE_ENVIRONMENT, |             permission: UPDATE_FEATURE_ENVIRONMENT, | ||||||
|             middleware: [ |             middleware: [ | ||||||
|                 openApiService.validPath({ |                 openApiService.validPath({ | ||||||
|  |                     summary: 'Enable a feature toggle.', | ||||||
|  |                     description: | ||||||
|  |                         'Enable a feature toggle in the specified environment.', | ||||||
|                     tags: ['Features'], |                     tags: ['Features'], | ||||||
|                     operationId: 'toggleFeatureEnvironmentOn', |                     operationId: 'toggleFeatureEnvironmentOn', | ||||||
|                     responses: { 200: createResponseSchema('featureSchema') }, |                     responses: { | ||||||
|  |                         200: createResponseSchema('featureSchema'), | ||||||
|  |                         ...getStandardResponses(400, 401, 403, 404), | ||||||
|  |                     }, | ||||||
|                 }), |                 }), | ||||||
|             ], |             ], | ||||||
|         }); |         }); | ||||||
| @ -206,7 +222,10 @@ export default class ProjectFeaturesController extends Controller { | |||||||
|                     requestBody: createRequestSchema( |                     requestBody: createRequestSchema( | ||||||
|                         'bulkToggleFeaturesSchema', |                         'bulkToggleFeaturesSchema', | ||||||
|                     ), |                     ), | ||||||
|                     responses: { 405: emptyResponse }, |                     responses: { | ||||||
|  |                         200: emptyResponse, | ||||||
|  |                         ...getStandardResponses(400, 401, 403, 404, 413, 415), | ||||||
|  |                     }, | ||||||
|                 }), |                 }), | ||||||
|             ], |             ], | ||||||
|         }); |         }); | ||||||
| @ -226,7 +245,10 @@ export default class ProjectFeaturesController extends Controller { | |||||||
|                     requestBody: createRequestSchema( |                     requestBody: createRequestSchema( | ||||||
|                         'bulkToggleFeaturesSchema', |                         'bulkToggleFeaturesSchema', | ||||||
|                     ), |                     ), | ||||||
|                     responses: { 405: emptyResponse }, |                     responses: { | ||||||
|  |                         200: emptyResponse, | ||||||
|  |                         ...getStandardResponses(400, 401, 403, 404, 413, 415), | ||||||
|  |                     }, | ||||||
|                 }), |                 }), | ||||||
|             ], |             ], | ||||||
|         }); |         }); | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user