1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-04-10 01:16:39 +02:00

feat: Maintenance openapi (#3478)

This commit is contained in:
Mateusz Kwasniewski 2023-04-10 09:55:29 +02:00 committed by GitHub
parent 3936a30403
commit d9f22f4349
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 65 additions and 3 deletions

View File

@ -140,6 +140,7 @@ import { openApiTags } from './util';
import { URL } from 'url';
import apiVersion from '../util/version';
import { maintenanceSchema } from './spec/maintenance-schema';
import { toggleMaintenanceSchema } from './spec/toggle-maintenance-schema';
import { bulkRegistrationSchema } from './spec/bulk-registration-schema';
import { bulkMetricsSchema } from './spec/bulk-metrics-schema';
import { clientMetricsEnvSchema } from './spec/client-metrics-env-schema';
@ -213,6 +214,7 @@ export const schemas = {
legalValueSchema,
loginSchema,
maintenanceSchema,
toggleMaintenanceSchema,
meSchema,
nameSchema,
overrideSchema,

View File

@ -8,6 +8,7 @@ export const maintenanceSchema = {
properties: {
enabled: {
type: 'boolean',
example: true,
},
},
components: {},

View File

@ -0,0 +1,18 @@
import { FromSchema } from 'json-schema-to-ts';
export const toggleMaintenanceSchema = {
$id: '#/components/schemas/toggleMaintenanceSchema',
type: 'object',
required: ['enabled'],
properties: {
enabled: {
type: 'boolean',
example: true,
},
},
components: {},
} as const;
export type ToggleMaintenanceSchema = FromSchema<
typeof toggleMaintenanceSchema
>;

View File

@ -6,6 +6,7 @@ import {
createRequestSchema,
createResponseSchema,
emptyResponse,
getStandardResponses,
} from '../../openapi';
import { OpenApiService } from '../../services';
import { IAuthRequest } from '../unleash-types';
@ -41,12 +42,16 @@ export default class MaintenanceController extends Controller {
handler: this.toggleMaintenance,
middleware: [
this.openApiService.validPath({
summary: 'Enabled/disabled maintenance mode',
description:
'Lets administrators put Unleash into a mostly read-only mode. While Unleash is in maintenance mode, users can not change any configuration settings',
tags: ['Maintenance'],
operationId: 'toggleMaintenance',
responses: {
204: emptyResponse,
...getStandardResponses(400, 401, 403),
},
requestBody: createRequestSchema('maintenanceSchema'),
requestBody: createRequestSchema('toggleMaintenanceSchema'),
}),
],
});
@ -57,10 +62,14 @@ export default class MaintenanceController extends Controller {
handler: this.getMaintenance,
middleware: [
this.openApiService.validPath({
summary: 'Get maintenance mode status',
description:
'Tells you whether maintenance mode is enabled or disabled',
tags: ['Maintenance'],
operationId: 'getMaintenance',
responses: {
200: createResponseSchema('maintenanceSchema'),
...getStandardResponses(401, 403),
},
}),
],

View File

@ -2178,6 +2178,7 @@ exports[`should serve the OpenAPI spec 1`] = `
"additionalProperties": false,
"properties": {
"enabled": {
"example": true,
"type": "boolean",
},
},
@ -3799,6 +3800,18 @@ Stats are divided into current and previous **windows**.
],
"type": "object",
},
"toggleMaintenanceSchema": {
"properties": {
"enabled": {
"example": true,
"type": "boolean",
},
},
"required": [
"enabled",
],
"type": "object",
},
"tokenUserSchema": {
"additionalProperties": false,
"properties": {
@ -5821,6 +5834,7 @@ If the provided project does not exist, the list of events will be empty.",
},
"/api/admin/maintenance": {
"get": {
"description": "Tells you whether maintenance mode is enabled or disabled",
"operationId": "getMaintenance",
"responses": {
"200": {
@ -5833,29 +5847,47 @@ If the provided project does not exist, the list of events will be empty.",
},
"description": "maintenanceSchema",
},
"401": {
"description": "Authorization information is missing or invalid. Provide a valid API token as the \`authorization\` header, e.g. \`authorization:*.*.my-admin-token\`.",
},
"403": {
"description": "User credentials are valid but does not have enough privileges to execute this operation",
},
},
"summary": "Get maintenance mode status",
"tags": [
"Maintenance",
],
},
"post": {
"description": "Lets administrators put Unleash into a mostly read-only mode. While Unleash is in maintenance mode, users can not change any configuration settings",
"operationId": "toggleMaintenance",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/maintenanceSchema",
"$ref": "#/components/schemas/toggleMaintenanceSchema",
},
},
},
"description": "maintenanceSchema",
"description": "toggleMaintenanceSchema",
"required": true,
},
"responses": {
"204": {
"description": "This response has no body.",
},
"400": {
"description": "The request data does not match what we expect.",
},
"401": {
"description": "Authorization information is missing or invalid. Provide a valid API token as the \`authorization\` header, e.g. \`authorization:*.*.my-admin-token\`.",
},
"403": {
"description": "User credentials are valid but does not have enough privileges to execute this operation",
},
},
"summary": "Enabled/disabled maintenance mode",
"tags": [
"Maintenance",
],