######  Attributes Supported by Integration Apps #######
# id: Internal Id for the integrations, used by the hooks
# logo: place the image in /public/dashboard/images/integrations and reference here
# i18n_key: the key under which translations for the integration is placed in en.yml
# action: if integration requires external redirect url
# hook_type: ( account / inbox )
# feature_flag: (string) feature flag to enable/disable the integration
# allow_multiple_hooks: whether multiple hooks can be created for the integration
# settings_json_schema: the json schema used to validate the settings hash (https://json-schema.org/)
# settings_form_schema: the formulate schema used in frontend to render settings form (https://vueformulate.com/)
########################################################
webhooks:
  id: webhook
  logo: webhooks.png
  i18n_key: webhooks
  action: /webhook
  hook_type: account
  allow_multiple_hooks: true
dashboard_apps:
  id: dashboard_apps
  logo: dashboard_apps.png
  i18n_key: dashboard_apps
  hook_type: account
  allow_multiple_hooks: true
openai:
  id: openai
  logo: openai.png
  i18n_key: openai
  action: /openai
  hook_type: account
  allow_multiple_hooks: false
  settings_json_schema:
    {
      'type': 'object',
      'properties':
        {
          'api_key': { 'type': 'string' },
          'label_suggestion': { 'type': 'boolean' },
          'model_tests': { 'type': 'object' },
          'validated_models': { 'type': 'array', 'items': { 'type': 'string' } },
        },
      'required': ['api_key'],
      'additionalProperties': false,
    }
  settings_form_schema:
    [
      {
        'label': 'API Key',
        'type': 'text',
        'name': 'api_key',
        'validation': 'required',
      },
      {
        'label': 'Show label suggestions',
        'type': 'checkbox',
        'name': 'label_suggestion',
        'validation': '',
      },
    ]
  visible_properties: ['api_key', 'label_suggestion']
gemini:
  id: gemini
  logo: gemini.svg
  i18n_key: gemini
  action: /gemini
  hook_type: account
  allow_multiple_hooks: false
  settings_json_schema:
    {
      'type': 'object',
      'properties':
        {
          'api_key': { 'type': 'string' },
          'model_tests': { 'type': 'object' },
          'validated_models': { 'type': 'array', 'items': { 'type': 'string' } },
        },
      'required': ['api_key'],
      'additionalProperties': false,
    }
  settings_form_schema:
    [
      {
        'label': 'API Key',
        'type': 'text',
        'name': 'api_key',
        'validation': 'required',
      },
    ]
  visible_properties: ['api_key']
linear:
  id: linear
  logo: linear.png
  i18n_key: linear
  action: https://linear.app/oauth/authorize
  hook_type: account
  allow_multiple_hooks: false
notion:
  id: notion
  logo: notion.png
  i18n_key: notion
  hook_type: account
  allow_multiple_hooks: false
slack:
  id: slack
  logo: slack.png
  i18n_key: slack
  action: https://slack.com/oauth/v2/authorize?scope=commands,chat:write,channels:read,channels:manage,channels:join,groups:read,groups:write,im:write,mpim:write,users:read,users:read.email,chat:write.customize,channels:history,groups:history,mpim:history,im:history,files:read,files:write
  hook_type: account
  allow_multiple_hooks: false
dialogflow:
  id: dialogflow
  logo: dialogflow.png
  i18n_key: dialogflow
  action: /dialogflow
  hook_type: inbox
  allow_multiple_hooks: true
  settings_json_schema:
    {
      'type': 'object',
      'properties':
        {
          'project_id': { 'type': 'string' },
          'credentials': { 'type': 'object' },
          'region': { 'type': 'string' },
        },
      'required': ['project_id', 'credentials'],
      'additionalProperties': false,
    }
  settings_form_schema:
    [
      {
        'label': 'Dialogflow Project ID',
        'type': 'text',
        'name': 'project_id',
        'validation': 'required',
        'validationName': 'Project Id',
      },
      {
        'label': 'Dialogflow Project Key File',
        'type': 'textarea',
        'name': 'credentials',
        'validation': 'required|JSON',
        'validationName': 'Credentials',
        'validation-messages':
          { 'JSON': 'Invalid JSON', 'required': 'Credentials is required' },
      },
      {
        'label': 'Dialogflow Region',
        'type': 'select',
        'name': 'region',
        'default': 'global',
        'options': [
          { 'label': 'Global - Default', 'value': 'global' },
          { 'label': 'AS-NE1 - Tokyo, Japan', 'value': 'asia-northeast1' },
          { 'label': 'AU-SE1 - Sydney, Australia', 'value': 'australia-southeast1' },
          { 'label': 'EU-W1 - St. Ghislain, Belgium', 'value': 'europe-west1' },
          { 'label': 'EU-W2 - London, England', 'value': 'europe-west2' },
        ],
      },
    ]
  visible_properties: ['project_id', 'region']
google_translate:
  id: google_translate
  logo: google-translate.png
  i18n_key: google_translate
  action: /google_translate
  hook_type: account
  allow_multiple_hooks: false
  settings_json_schema:
    {
      'type': 'object',
      'properties':
        {
          'project_id': { 'type': 'string' },
          'credentials': { 'type': 'object' },
        },
      'required': ['project_id', 'credentials'],
      'additionalProperties': false,
    }
  settings_form_schema:
    [
      {
        'label': 'Google Cloud Project ID',
        'type': 'text',
        'name': 'project_id',
        'validation': 'required',
        'validationName': 'Project Id',
      },
      {
        'label': 'Google Cloud Project Key File',
        'type': 'textarea',
        'name': 'credentials',
        'validation': 'required|JSON',
        'validationName': 'Credentials',
        'validation-messages':
          { 'JSON': 'Invalid JSON', 'required': 'Credentials is required' },
      },
    ]
  visible_properties: ['project_id']
dyte:
  id: dyte
  logo: dyte.png
  i18n_key: dyte
  action: /dyte
  hook_type: account
  allow_multiple_hooks: false
  settings_json_schema:
    {
      'type': 'object',
      'properties':
        {
          'api_key': { 'type': 'string' },
          'organization_id': { 'type': 'string' },
        },
      'required': ['api_key', 'organization_id'],
      'additionalProperties': false,
    }
  settings_form_schema:
    [
      {
        'label': 'Organization ID',
        'type': 'text',
        'name': 'organization_id',
        'validation': 'required',
      },
      {
        'label': 'API Key',
        'type': 'text',
        'name': 'api_key',
        'validation': 'required',
      },
    ]
  visible_properties: ['organization_id']

shopify:
  id: shopify
  logo: shopify.png
  i18n_key: shopify
  hook_type: account
  allow_multiple_hooks: false

leadsquared:
  id: leadsquared
  feature_flag: crm_integration
  logo: leadsquared.png
  i18n_key: leadsquared
  action: /leadsquared
  hook_type: account
  allow_multiple_hooks: false
  settings_json_schema:
    {
      'type': 'object',
      'properties':
        {
          'access_key': { 'type': 'string' },
          'secret_key': { 'type': 'string' },
          'endpoint_url': { 'type': 'string' },
          'app_url': { 'type': 'string' },
          'timezone': { 'type': 'string' },
          'enable_conversation_activity': { 'type': 'boolean' },
          'enable_transcript_activity': { 'type': 'boolean' },
          'conversation_activity_score': { 'type': 'string' },
          'transcript_activity_score': { 'type': 'string' },
          'conversation_activity_code': { 'type': 'integer' },
          'transcript_activity_code': { 'type': 'integer' },
        },
      'required': ['access_key', 'secret_key'],
      'additionalProperties': false,
    }
  settings_form_schema:
    [
      {
        'label': 'Access Key',
        'type': 'text',
        'name': 'access_key',
        'validation': 'required',
      },
      {
        'label': 'Secret Key',
        'type': 'text',
        'name': 'secret_key',
        'validation': 'required',
      },
      {
        'label': 'Push Conversation Activity',
        'type': 'checkbox',
        'name': 'enable_conversation_activity',
        'help': 'Enable this option to push an activity when a conversation is created',
      },
      {
        'label': 'Conversation Activity Score',
        'type': 'number',
        'name': 'conversation_activity_score',
        'help': 'Score to assign to the conversation created activity, default is 0',
      },
      {
        'label': 'Push Transcript Activity',
        'type': 'checkbox',
        'name': 'enable_transcript_activity',
        'help': 'Enable this option to push an activity when a transcript is created',
      },
      {
        'label': 'Transcript Activity Score',
        'type': 'number',
        'name': 'transcript_activity_score',
        'help': 'Score to assign to the conversation transcript activity, default is 0',
      },
    ]
  visible_properties:
    [
      'access_key',
      'endpoint_url',
      'enable_conversation_activity',
      'enable_transcript_activity',
      'conversation_activity_score',
      'transcript_activity_score',
    ]
