1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-07-17 13:46:47 +02:00
unleash.unleash/src/lib/openapi/spec/addons-schema.ts
Christopher Kolstad 53354224fc
chore: Bump biome and configure husky (#6589)
Upgrades biome to 1.6.1, and updates husky pre-commit hook.

Most changes here are making type imports explicit.
2024-03-18 13:58:05 +01:00

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>;