mirror of
https://github.com/Unleash/unleash.git
synced 2025-07-17 13:46:47 +02:00
Upgrades biome to 1.6.1, and updates husky pre-commit hook. Most changes here are making type imports explicit.
282 lines
12 KiB
TypeScript
282 lines
12 KiB
TypeScript
import type { FromSchema } from 'json-schema-to-ts';
|
|
import { addonSchema } from './addon-schema';
|
|
import { addonTypeSchema } from './addon-type-schema';
|
|
import { addonParameterSchema } from './addon-parameter-schema';
|
|
import { tagTypeSchema } from './tag-type-schema';
|
|
|
|
export const addonsSchema = {
|
|
$id: '#/components/schemas/addonsSchema',
|
|
type: 'object',
|
|
required: ['addons', 'providers'],
|
|
description: `An object containing two things:
|
|
1. A list of all [addons](https://docs.getunleash.io/reference/addons) defined on this Unleash instance
|
|
2. A list of all addon providers defined on this instance`,
|
|
properties: {
|
|
addons: {
|
|
type: 'array',
|
|
description:
|
|
'All the addons that exist on this instance of Unleash.',
|
|
items: {
|
|
$ref: '#/components/schemas/addonSchema',
|
|
},
|
|
},
|
|
providers: {
|
|
type: 'array',
|
|
description:
|
|
'A list of all available addon providers, along with their parameters and descriptions.',
|
|
example: [
|
|
{
|
|
name: 'webhook',
|
|
displayName: 'Webhook',
|
|
description:
|
|
'A Webhook is a generic way to post messages from Unleash to third party services.',
|
|
documentationUrl:
|
|
'https://docs.getunleash.io/docs/addons/webhook',
|
|
parameters: [
|
|
{
|
|
name: 'url',
|
|
displayName: 'Webhook URL',
|
|
description:
|
|
'(Required) Unleash will perform a HTTP Post to the specified URL (one retry if first attempt fails)',
|
|
type: 'url',
|
|
required: true,
|
|
sensitive: true,
|
|
},
|
|
{
|
|
name: 'contentType',
|
|
displayName: 'Content-Type',
|
|
placeholder: 'application/json',
|
|
description:
|
|
'(Optional) The Content-Type header to use. Defaults to "application/json".',
|
|
type: 'text',
|
|
required: false,
|
|
sensitive: false,
|
|
},
|
|
{
|
|
name: 'authorization',
|
|
displayName: 'Authorization',
|
|
placeholder: '',
|
|
description:
|
|
'(Optional) The Authorization header to use. Not used if left blank.',
|
|
type: 'text',
|
|
required: false,
|
|
sensitive: true,
|
|
},
|
|
{
|
|
name: 'bodyTemplate',
|
|
displayName: 'Body template',
|
|
placeholder: `{
|
|
"event": "{{event.type}}",
|
|
"createdBy": "{{event.createdBy}}",
|
|
"featureToggle": "{{event.data.name}}",
|
|
"timestamp": "{{event.data.createdAt}}"
|
|
}`,
|
|
description:
|
|
"(Optional) You may format the body using a mustache template. If you don't specify anything, the format will similar to the events format (https://docs.getunleash.io/reference/api/legacy/unleash/admin/events)",
|
|
type: 'textfield',
|
|
required: false,
|
|
sensitive: false,
|
|
},
|
|
],
|
|
events: [
|
|
'feature-created',
|
|
'feature-updated',
|
|
'feature-archived',
|
|
'feature-revived',
|
|
'feature-stale-on',
|
|
'feature-stale-off',
|
|
'feature-environment-enabled',
|
|
'feature-environment-disabled',
|
|
'feature-strategy-remove',
|
|
'feature-strategy-update',
|
|
'feature-strategy-add',
|
|
'feature-metadata-updated',
|
|
'feature-variants-updated',
|
|
'feature-project-change',
|
|
'feature-tagged',
|
|
'feature-untagged',
|
|
'change-request-created',
|
|
'change-request-discarded',
|
|
'change-added',
|
|
'change-discarded',
|
|
'change-request-approved',
|
|
'change-request-approval-added',
|
|
'change-request-cancelled',
|
|
'change-request-sent-to-review',
|
|
'change-request-applied',
|
|
],
|
|
},
|
|
{
|
|
name: 'slack',
|
|
displayName: 'Slack',
|
|
description: 'Allows Unleash to post updates to Slack.',
|
|
documentationUrl:
|
|
'https://docs.getunleash.io/docs/addons/slack',
|
|
parameters: [
|
|
{
|
|
name: 'url',
|
|
displayName: 'Slack webhook URL',
|
|
description: '(Required)',
|
|
type: 'url',
|
|
required: true,
|
|
sensitive: true,
|
|
},
|
|
{
|
|
name: 'username',
|
|
displayName: 'Username',
|
|
placeholder: 'Unleash',
|
|
description:
|
|
'The username to use when posting messages to slack. Defaults to "Unleash".',
|
|
type: 'text',
|
|
required: false,
|
|
sensitive: false,
|
|
},
|
|
{
|
|
name: 'emojiIcon',
|
|
displayName: 'Emoji Icon',
|
|
placeholder: ':unleash:',
|
|
description:
|
|
'The emoji_icon to use when posting messages to slack. Defaults to ":unleash:".',
|
|
type: 'text',
|
|
required: false,
|
|
sensitive: false,
|
|
},
|
|
{
|
|
name: 'defaultChannel',
|
|
displayName: 'Default channel',
|
|
description:
|
|
'(Required) Default channel to post updates to if not specified in the slack-tag',
|
|
type: 'text',
|
|
required: true,
|
|
sensitive: false,
|
|
},
|
|
],
|
|
events: [
|
|
'feature-created',
|
|
'feature-updated',
|
|
'feature-archived',
|
|
'feature-revived',
|
|
'feature-stale-on',
|
|
'feature-stale-off',
|
|
'feature-environment-enabled',
|
|
'feature-environment-disabled',
|
|
'feature-strategy-remove',
|
|
'feature-strategy-update',
|
|
'feature-strategy-add',
|
|
'feature-metadata-updated',
|
|
'feature-variants-updated',
|
|
'feature-project-change',
|
|
],
|
|
tagTypes: [
|
|
{
|
|
name: 'slack',
|
|
description:
|
|
'Slack tag used by the slack-addon to specify the slack channel.',
|
|
icon: 'S',
|
|
},
|
|
],
|
|
},
|
|
{
|
|
name: 'teams',
|
|
displayName: 'Microsoft Teams',
|
|
description:
|
|
'Allows Unleash to post updates to Microsoft Teams.',
|
|
documentationUrl:
|
|
'https://docs.getunleash.io/docs/addons/teams',
|
|
parameters: [
|
|
{
|
|
name: 'url',
|
|
displayName: 'Microsoft Teams webhook URL',
|
|
description: '(Required)',
|
|
type: 'url',
|
|
required: true,
|
|
sensitive: true,
|
|
},
|
|
],
|
|
events: [
|
|
'feature-created',
|
|
'feature-updated',
|
|
'feature-archived',
|
|
'feature-revived',
|
|
'feature-stale-on',
|
|
'feature-stale-off',
|
|
'feature-environment-enabled',
|
|
'feature-environment-disabled',
|
|
'feature-strategy-remove',
|
|
'feature-strategy-update',
|
|
'feature-strategy-add',
|
|
'feature-metadata-updated',
|
|
'feature-variants-updated',
|
|
'feature-project-change',
|
|
],
|
|
},
|
|
{
|
|
name: 'datadog',
|
|
displayName: 'Datadog',
|
|
description: 'Allows Unleash to post updates to Datadog.',
|
|
documentationUrl:
|
|
'https://docs.getunleash.io/docs/addons/datadog',
|
|
parameters: [
|
|
{
|
|
name: 'url',
|
|
displayName: 'Datadog Events URL',
|
|
description:
|
|
"Default URL: https://api.datadoghq.com/api/v1/events. Needs to be changed if your're not using the US1 site.",
|
|
type: 'url',
|
|
required: false,
|
|
sensitive: false,
|
|
},
|
|
{
|
|
name: 'apiKey',
|
|
displayName: 'Datadog API key',
|
|
placeholder: 'j96c23b0f12a6b3434a8d710110bd862',
|
|
description:
|
|
'(Required) API key to connect to Datadog',
|
|
type: 'text',
|
|
required: true,
|
|
sensitive: true,
|
|
},
|
|
],
|
|
events: [
|
|
'feature-created',
|
|
'feature-updated',
|
|
'feature-archived',
|
|
'feature-revived',
|
|
'feature-stale-on',
|
|
'feature-stale-off',
|
|
'feature-environment-enabled',
|
|
'feature-environment-disabled',
|
|
'feature-strategy-remove',
|
|
'feature-strategy-update',
|
|
'feature-strategy-add',
|
|
'feature-metadata-updated',
|
|
'feature-project-change',
|
|
'feature-variants-updated',
|
|
],
|
|
tagTypes: [
|
|
{
|
|
name: 'datadog',
|
|
description:
|
|
'All Datadog tags added to a specific feature are sent to datadog event stream.',
|
|
icon: 'D',
|
|
},
|
|
],
|
|
},
|
|
],
|
|
items: {
|
|
$ref: '#/components/schemas/addonTypeSchema',
|
|
},
|
|
},
|
|
},
|
|
components: {
|
|
schemas: {
|
|
addonSchema,
|
|
addonTypeSchema,
|
|
tagTypeSchema,
|
|
addonParameterSchema,
|
|
},
|
|
},
|
|
} as const;
|
|
|
|
export type AddonsSchema = FromSchema<typeof addonsSchema>;
|