1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-01-20 00:08:02 +01:00
unleash.unleash/src/lib/addons/addon-schema.ts
2023-09-21 13:55:58 +01:00

40 lines
1.4 KiB
TypeScript

import joi from 'joi';
import { nameType } from '../routes/util';
import { tagTypeSchema } from '../services/tag-type-schema';
import { installationDefinitionSchema } from './installation-definition-schema';
export const addonDefinitionSchema = joi.object().keys({
name: nameType,
displayName: joi.string(),
documentationUrl: joi.string().uri({ scheme: [/https?/] }),
description: joi.string().allow(''),
howTo: joi.string().optional().allow(''),
deprecated: joi.string().optional().allow(''),
parameters: joi
.array()
.optional()
.items(
joi.object().keys({
name: joi.string().required(),
displayName: joi.string().required(),
type: joi.string().required(),
description: joi.string(),
placeholder: joi.string().allow(''),
required: joi.boolean().default(false),
sensitive: joi.boolean().default(false),
}),
),
events: joi.array().optional().items(joi.string()),
tagTypes: joi.array().optional().items(tagTypeSchema),
installation: installationDefinitionSchema.optional(),
alerts: joi
.array()
.optional()
.items(
joi.object().keys({
type: joi.string().valid('success', 'info', 'warning', 'error'),
text: joi.string().required(),
}),
),
});