diff --git a/src/lib/routes/admin-api/index.ts b/src/lib/routes/admin-api/index.ts index dce4d343be..ea6aae28c3 100644 --- a/src/lib/routes/admin-api/index.ts +++ b/src/lib/routes/admin-api/index.ts @@ -90,6 +90,13 @@ class AdminApi extends Controller { '/user-admin', new UserAdminController(config, services).router, ); + this.use( + '/api/suggest-changes', + conditionalMiddleware( + () => config.flagResolver.isEnabled('suggestChanges'), + new ProxyController(config, services).router, + ), + ); this.app.use( '/feedback', new UserFeedbackController(config, services).router, diff --git a/src/lib/routes/admin-api/suggest-changes/index.ts b/src/lib/routes/admin-api/suggest-changes/index.ts new file mode 100644 index 0000000000..f108568f71 --- /dev/null +++ b/src/lib/routes/admin-api/suggest-changes/index.ts @@ -0,0 +1,76 @@ +import { Response, Request } from 'express'; +import { IUnleashConfig, IUnleashServices } from '../../types'; +import { Logger } from '../../../logger'; +import { NONE } from '../../../types/permissions'; +import Controller from '../../controller'; +import { restore } from 'nock/types'; + +type Services = Pick< + IUnleashServices, + 'settingService' | 'proxyService' | 'openApiService' +>; + +export default class SuggestChangesController extends Controller { + private readonly logger: Logger; + + private services: Services; + + constructor(config: IUnleashConfig, services: Services) { + super(config); + this.logger = config.getLogger('proxy-api/index.ts'); + this.services = services; + + this.route({ + method: 'get', + path: '/:changeRequestId', + handler: this.getChangeRequest, + permission: NONE, + }); + } + + async createChangeRequest(req: Request, res: Response): Promise {} + + async getChangeRequest(req: Request, res: Response): Promise { + res.json({ + environment: 'production', + state: 'REVIEW', + createdBy: 'Tymek', + project: 'new-project', + // approvers: [], + changeSet: [ + { + feature: 'feature1', + // featureToggle: { + // //...state + // }, + changes: [ + { + action: 'updateEnabled', + payload: true, + updatedBy: 'user1', + eventData: {}, + }, + ], + }, + { + feature: 'feature2', + // featureToggle: { + // //...state + // }, + changes: [ + { + action: 'updateEnabled', + payload: true, + updatedBy: 'user1', + eventData: {}, + }, + ], + }, + ], + }); + } + + async approveChangeRequest(req: Request, res: Response): Promise {} + + async applyChangeRequest(req: Request, res: Response): Promise {} +} diff --git a/src/server-dev.ts b/src/server-dev.ts index 5a4fb02d18..25362ea61b 100644 --- a/src/server-dev.ts +++ b/src/server-dev.ts @@ -39,6 +39,7 @@ process.nextTick(async () => { anonymiseEventLog: false, responseTimeWithAppName: true, personalAccessTokens: true, + suggestChanges: true, }, }, authentication: {