"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.addonsSchema = void 0;
const addon_schema_1 = require("./addon-schema");
const addon_type_schema_1 = require("./addon-type-schema");
const addon_parameter_schema_1 = require("./addon-parameter-schema");
const tag_type_schema_1 = require("./tag-type-schema");
exports.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: addon_schema_1.addonSchema,
            addonTypeSchema: addon_type_schema_1.addonTypeSchema,
            tagTypeSchema: tag_type_schema_1.tagTypeSchema,
            addonParameterSchema: addon_parameter_schema_1.addonParameterSchema,
        },
    },
};
//# sourceMappingURL=addons-schema.js.map