mirror of
				https://github.com/Unleash/unleash.git
				synced 2025-10-27 11:02:16 +01:00 
			
		
		
		
	openapi: update the splash endpoints and schemas for splash (#4227)
This change updates the splash endpoints and related schemas for the admin ui tag.
This commit is contained in:
		
							parent
							
								
									eb1df78383
								
							
						
					
					
						commit
						a785465943
					
				@ -108,7 +108,8 @@ import {
 | 
			
		||||
    setStrategySortOrderSchema,
 | 
			
		||||
    setUiConfigSchema,
 | 
			
		||||
    sortOrderSchema,
 | 
			
		||||
    splashSchema,
 | 
			
		||||
    splashRequestSchema,
 | 
			
		||||
    splashResponseSchema,
 | 
			
		||||
    stateSchema,
 | 
			
		||||
    strategiesSchema,
 | 
			
		||||
    strategySchema,
 | 
			
		||||
@ -305,7 +306,8 @@ export const schemas: UnleashSchemas = {
 | 
			
		||||
    setStrategySortOrderSchema,
 | 
			
		||||
    setUiConfigSchema,
 | 
			
		||||
    sortOrderSchema,
 | 
			
		||||
    splashSchema,
 | 
			
		||||
    splashRequestSchema,
 | 
			
		||||
    splashResponseSchema,
 | 
			
		||||
    stateSchema,
 | 
			
		||||
    strategiesSchema,
 | 
			
		||||
    strategySchema,
 | 
			
		||||
 | 
			
		||||
@ -111,7 +111,6 @@ const metaRules: Rule[] = [
 | 
			
		||||
            'resetPasswordSchema',
 | 
			
		||||
            'sdkContextSchema',
 | 
			
		||||
            'setUiConfigSchema',
 | 
			
		||||
            'splashSchema',
 | 
			
		||||
            'stateSchema',
 | 
			
		||||
            'strategiesSchema',
 | 
			
		||||
            'uiConfigSchema',
 | 
			
		||||
@ -160,7 +159,6 @@ const metaRules: Rule[] = [
 | 
			
		||||
            'setStrategySortOrderSchema',
 | 
			
		||||
            'setUiConfigSchema',
 | 
			
		||||
            'sortOrderSchema',
 | 
			
		||||
            'splashSchema',
 | 
			
		||||
            'strategiesSchema',
 | 
			
		||||
            'uiConfigSchema',
 | 
			
		||||
            'updateFeatureSchema',
 | 
			
		||||
 | 
			
		||||
@ -21,7 +21,8 @@ export * from './users-schema';
 | 
			
		||||
export * from './addons-schema';
 | 
			
		||||
export * from './events-schema';
 | 
			
		||||
export * from './groups-schema';
 | 
			
		||||
export * from './splash-schema';
 | 
			
		||||
export * from './splash-request-schema';
 | 
			
		||||
export * from './splash-response-schema';
 | 
			
		||||
export * from './feature-schema';
 | 
			
		||||
export * from './patches-schema';
 | 
			
		||||
export * from './profile-schema';
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										23
									
								
								src/lib/openapi/spec/splash-request-schema.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								src/lib/openapi/spec/splash-request-schema.ts
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,23 @@
 | 
			
		||||
import { FromSchema } from 'json-schema-to-ts';
 | 
			
		||||
 | 
			
		||||
export const splashRequestSchema = {
 | 
			
		||||
    $id: '#/components/schemas/splashRequestSchema',
 | 
			
		||||
    type: 'object',
 | 
			
		||||
    description: 'Data related to a user having seen a splash screen.',
 | 
			
		||||
    required: ['userId', 'splashId'],
 | 
			
		||||
    properties: {
 | 
			
		||||
        userId: {
 | 
			
		||||
            type: 'integer',
 | 
			
		||||
            description: 'The ID of the user that was shown the splash screen.',
 | 
			
		||||
            example: 1,
 | 
			
		||||
        },
 | 
			
		||||
        splashId: {
 | 
			
		||||
            type: 'string',
 | 
			
		||||
            description: 'The ID of the splash screen that was shown.',
 | 
			
		||||
            example: 'new-splash-screen',
 | 
			
		||||
        },
 | 
			
		||||
    },
 | 
			
		||||
    components: {},
 | 
			
		||||
} as const;
 | 
			
		||||
 | 
			
		||||
export type SplashRequestSchema = FromSchema<typeof splashRequestSchema>;
 | 
			
		||||
							
								
								
									
										22
									
								
								src/lib/openapi/spec/splash-response-schema.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								src/lib/openapi/spec/splash-response-schema.ts
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,22 @@
 | 
			
		||||
import { FromSchema } from 'json-schema-to-ts';
 | 
			
		||||
import { splashRequestSchema } from './splash-request-schema';
 | 
			
		||||
 | 
			
		||||
export const splashResponseSchema = {
 | 
			
		||||
    ...splashRequestSchema,
 | 
			
		||||
    $id: '#/components/schemas/splashResponseSchema',
 | 
			
		||||
    additionalProperties: false,
 | 
			
		||||
    description: 'Data related to a user having seen a splash screen.',
 | 
			
		||||
    required: [...splashRequestSchema.required, 'seen'],
 | 
			
		||||
    properties: {
 | 
			
		||||
        ...splashRequestSchema.properties,
 | 
			
		||||
        seen: {
 | 
			
		||||
            type: 'boolean',
 | 
			
		||||
            description:
 | 
			
		||||
                'Indicates whether the user has seen the splash screen or not.',
 | 
			
		||||
            example: true,
 | 
			
		||||
        },
 | 
			
		||||
    },
 | 
			
		||||
    components: {},
 | 
			
		||||
} as const;
 | 
			
		||||
 | 
			
		||||
export type SplashResponseSchema = FromSchema<typeof splashResponseSchema>;
 | 
			
		||||
@ -1,22 +0,0 @@
 | 
			
		||||
import { FromSchema } from 'json-schema-to-ts';
 | 
			
		||||
 | 
			
		||||
export const splashSchema = {
 | 
			
		||||
    $id: '#/components/schemas/splashSchema',
 | 
			
		||||
    type: 'object',
 | 
			
		||||
    additionalProperties: false,
 | 
			
		||||
    required: ['userId', 'splashId', 'seen'],
 | 
			
		||||
    properties: {
 | 
			
		||||
        userId: {
 | 
			
		||||
            type: 'number',
 | 
			
		||||
        },
 | 
			
		||||
        splashId: {
 | 
			
		||||
            type: 'string',
 | 
			
		||||
        },
 | 
			
		||||
        seen: {
 | 
			
		||||
            type: 'boolean',
 | 
			
		||||
        },
 | 
			
		||||
    },
 | 
			
		||||
    components: {},
 | 
			
		||||
} as const;
 | 
			
		||||
 | 
			
		||||
export type SplashSchema = FromSchema<typeof splashSchema>;
 | 
			
		||||
@ -8,7 +8,9 @@ import { IAuthRequest } from '../unleash-types';
 | 
			
		||||
import { NONE } from '../../types/permissions';
 | 
			
		||||
import { OpenApiService } from '../../services/openapi-service';
 | 
			
		||||
import { createResponseSchema } from '../../openapi/util/create-response-schema';
 | 
			
		||||
import { splashSchema, SplashSchema } from '../../openapi/spec/splash-schema';
 | 
			
		||||
import { splashRequestSchema } from '../../openapi/spec/splash-request-schema';
 | 
			
		||||
import { getStandardResponses } from '../../openapi';
 | 
			
		||||
import { SplashResponseSchema } from 'lib/openapi/spec/splash-response-schema';
 | 
			
		||||
 | 
			
		||||
class UserSplashController extends Controller {
 | 
			
		||||
    private logger: Logger;
 | 
			
		||||
@ -39,7 +41,13 @@ class UserSplashController extends Controller {
 | 
			
		||||
                openApiService.validPath({
 | 
			
		||||
                    tags: ['Admin UI'],
 | 
			
		||||
                    operationId: 'updateSplashSettings',
 | 
			
		||||
                    responses: { 200: createResponseSchema('splashSchema') },
 | 
			
		||||
                    summary: 'Update splash settings',
 | 
			
		||||
                    description:
 | 
			
		||||
                        'This operation updates splash settings for a user, indicating that they have seen a particualar splash screen.',
 | 
			
		||||
                    responses: {
 | 
			
		||||
                        200: createResponseSchema('splashResponseSchema'),
 | 
			
		||||
                        ...getStandardResponses(400, 401, 403, 415),
 | 
			
		||||
                    },
 | 
			
		||||
                }),
 | 
			
		||||
            ],
 | 
			
		||||
        });
 | 
			
		||||
@ -47,7 +55,7 @@ class UserSplashController extends Controller {
 | 
			
		||||
 | 
			
		||||
    private async updateSplashSettings(
 | 
			
		||||
        req: IAuthRequest<{ id: string }>,
 | 
			
		||||
        res: Response<SplashSchema>,
 | 
			
		||||
        res: Response<SplashResponseSchema>,
 | 
			
		||||
    ): Promise<void> {
 | 
			
		||||
        const { user } = req;
 | 
			
		||||
        const { id } = req.params;
 | 
			
		||||
@ -61,7 +69,7 @@ class UserSplashController extends Controller {
 | 
			
		||||
        this.openApiService.respondWithValidation(
 | 
			
		||||
            200,
 | 
			
		||||
            res,
 | 
			
		||||
            splashSchema.$id,
 | 
			
		||||
            splashRequestSchema.$id,
 | 
			
		||||
            await this.userSplashService.updateSplash(splash),
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -33,7 +33,13 @@ beforeAll(async () => {
 | 
			
		||||
        );
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    app = await setupAppWithCustomAuth(stores, preHook);
 | 
			
		||||
    app = await setupAppWithCustomAuth(stores, preHook, {
 | 
			
		||||
        experimental: {
 | 
			
		||||
            flags: {
 | 
			
		||||
                strictSchemaValidation: true,
 | 
			
		||||
            },
 | 
			
		||||
        },
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
afterAll(async () => {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user