Skip to main content

Integration

Polymorphic external service integration. Uses @JsonTypeInfo for JSON serialization discriminator. Subtypes cover authentication, CRM, KB, livechat, LLM, ticketing, and translation providers. Collection: integrations | DB: MongoDB Source: hbf-core/src/main/java/gr/helvia/hbf/core/domain/Integration.kt TypeScript: hbf-core-api/src/datamodel/integration.ts, hbf-core-api/src/datamodel/plugin.ts

Base Fields (all subtypes inherit these)

FieldTypeRequiredIndexedNotes
idStringyesPK@Null on create (auto-generated)
nameStringyes@NotNull on create
enabledBooleanno
descriptionStringno
typeIntegrationTypeyes@JsonTypeInfo discriminator
tagsList<String>no
organizationOrganizationyes@DBRef lazy, @JsonIgnore
organizationRefStringno@Transient, @WriteOnly
categoryIntegrationCategoryyes@NotNull on create
createdAtDateyes@CreatedDate
updatedAtDateyes@LastModifiedDate

Subtypes

OIDCIntegration (type: OIDC_AUTHENTICATION, category: AUTHENTICATION)

Source: hbf-core/src/main/java/gr/helvia/hbf/core/domain/OIDCIntegration.kt

FieldTypeNotes
configurationUrlStringOIDC discovery URL
issuerString@NotNull on create
authorizationEndpointString@NotNull on create
tokenEndpointString@NotNull on create
jwksUriString@NotNull on create
grantTypeGrantType@NotNull on create. AUTHORIZATION_CODE or AUTHORIZATION_CODE_PKCE
clientIdString@NotNull on create
clientSecretString@WriteOnly
challengeMethodChallengeMethodDefault: SHA_256. SHA_256 or PLAIN
additionalScopesString
emailKeyString@PrivateProperty, claim key for email extraction
fullNameKeyString@PrivateProperty, claim key for full name extraction

MicrosoftDynamicsCrmIntegration (type: MICROSOFT_DYNAMICS_CRM, category: CRM)

Source: hbf-core/src/main/java/gr/helvia/hbf/core/domain/MicrosoftDynamicsIntegration.kt

Extends abstract MicrosoftDynamicsIntegration.

FieldTypeNotes
baseUrlStringDynamics 365 base URL
clientIdString
clientSecretString
azureTenantIdString
scopeString
versionString
entityPropertiesSet<MicrosoftDynamicsEntityProperty>Field mappings
filterExpressionStringOData filter expression
filterPropertyFilterPropertyLinks CRM property to subscriber property
contactLinkTemplateStringURL template for CRM contact

MicrosoftDynamicsKbIntegration (type: MICROSOFT_DYNAMICS_KB, category: KB)

Source: same as CRM above.

Same fields as the CRM variant minus filterProperty and contactLinkTemplate.

AzureBlobStorageKbIntegration (type: AZURE_BLOB_STORAGE_KB, category: KB)

Source: hbf-core/src/main/java/gr/helvia/hbf/core/domain/AzureBlobStorageKbIntegration.kt TypeScript: hbf-core-api/src/datamodel/integration.ts (not yet present — gap, needed by hbf-knowledge-manager)

Extends abstract WebhookIntegration (adds webhookKey).

FieldTypeNotes
webhookKeyStringInherited from WebhookIntegration. Format: <accountName_lower>/<containerName_lower>. Used to index integrations for webhook routing
accountNameStringAzure Storage account name
containerNameStringAzure Blob container name
sasTokenStringSAS token for container access
pathPrefixStringOptional blob path prefix filter. Only blobs under this prefix are synced
allowedContentTypesList<String>Optional MIME type allowlist. If empty, all types are accepted
organizationIdString@Transient. Populated at query time from the owning Organization

CiscoLivechatIntegration (type: CISCO_LIVECHAT, category: LIVECHAT)

Source: hbf-core/src/main/java/gr/helvia/hbf/core/domain/CiscoLivechatIntegration.kt

FieldTypeNotes
endpointString@NotNull on create
chatIdLong@NotNull on create
ccxQueueTagString@NotNull on create
clientIdString
clientSecretString

HelviaLivechatIntegration (type: HELVIA_LIVECHAT, category: LIVECHAT)

Source: hbf-core/src/main/java/gr/helvia/hbf/core/domain/Integration.kt

No additional fields beyond the base Integration.

ZendeskLivechatIntegration (type: ZENDESK_LIVECHAT, category: LIVECHAT)

Source: hbf-core/src/main/java/gr/helvia/hbf/core/domain/ZendeskLivechatIntegration.kt

FieldTypeNotes
baseUrlString@NotNull on create. Without /sc suffix
appIdString@NotNull on create
keyIdString@NotNull on create
secretString@NotNull on create
webhookIdString@NotNull on create
webhookKeyString@NotNull on create

GenesysLivechatIntegration (type: GENESYS_LIVECHAT, category: LIVECHAT)

Source: hbf-core/src/main/java/gr/helvia/hbf/core/domain/GenesysLivechatIntegration.kt

Extends abstract WebhookIntegration (adds webhookKey).

FieldTypeNotes
webhookKeyStringInherited from WebhookIntegration. @NotNull on create
clientIdString@NotNull on create
clientSecretString@NotNull on create
regionString@NotNull on create. Genesys domain, e.g. "mypurecloud.ie"
openIntegrationIdString@NotNull on create
queueIdsSet<String>Subscribed queue IDs

OpenAIIntegration (type: OPEN_AI_LLM, category: LLM)

Source: hbf-core/src/main/java/gr/helvia/hbf/core/domain/OpenAIIntegration.kt

FieldTypeNotes
apiKeyString@NotNull on create
projectString
openAIOrganizationString
customUrlString

AzureAIIntegration (type: AZURE_AI_LLM, category: LLM)

Source: hbf-core/src/main/java/gr/helvia/hbf/core/domain/AzureAIIntegration.kt

FieldTypeNotes
endpointString@NotNull on create
deploymentNameStringDeprecated
apiVersionStringDeprecated
apiKeyString@NotNull on create

GeminiAIIntegration (type: GEMINI_AI_LLM, category: LLM)

Source: hbf-core/src/main/java/gr/helvia/hbf/core/domain/GeminiAIIntegration.kt

FieldTypeNotes
apiKeyString@NotNull

ZendeskTicketingIntegration (type: ZENDESK_TICKETING, category: TICKETING)

Source: hbf-core/src/main/java/gr/helvia/hbf/core/domain/ZendeskTicketingIntegration.kt

FieldTypeNotes
baseUrlString@NotNull on create
userNameString@NotNull on create
tokenString@NotNull on create, @WriteOnly

GoogleTranslationIntegration (type: GOOGLE_TRANSLATION, category: TRANSLATION)

Source: hbf-core/src/main/java/gr/helvia/hbf/core/domain/GoogleTranslationIntegration.kt

FieldTypeNotes
apiKeyString@NotNull on create

Abstract Intermediate Classes

WebhookIntegration (abstract, extends Integration)

FieldTypeNotes
webhookKeyString@NotNull on create. Webhook validation key

Used by: GenesysLivechatIntegration, AzureBlobStorageKbIntegration

MicrosoftDynamicsIntegration (abstract, extends Integration)

FieldTypeNotes
baseUrlString
clientIdString
clientSecretString
azureTenantIdString
scopeString
versionString
entityPropertiesSet<MicrosoftDynamicsEntityProperty>
filterExpressionString

Used by: MicrosoftDynamicsCrmIntegration, MicrosoftDynamicsKbIntegration

Supporting Types

MicrosoftDynamicsEntityProperty

FieldTypeNotes
dataPropertyPathStringCRM OData property path
domainPropertyNameStringSubscriber property name
displayNameStringFriendly name
typeEntityPropertyTypeTEXT, NUMBER, CHOICE, LOOKUP, DATETIME
valueAnyPopulated from CRM response

FilterProperty

FieldTypeNotes
dataPropertyNameStringCRM property name
subscriberPropertyNameStringSubscriber property name

Enums

IntegrationType

ValueCategoryDescription
OIDC_AUTHENTICATIONAUTHENTICATIONOpenID Connect SSO
MICROSOFT_DYNAMICS_CRMCRMMS Dynamics 365 CRM
MICROSOFT_DYNAMICS_KBKBMS Dynamics knowledge base
AZURE_BLOB_STORAGE_KBKBAzure Blob Storage file-based knowledge base
CISCO_LIVECHATLIVECHATCisco CCX live chat
HELVIA_LIVECHATLIVECHATBuilt-in Helvia live chat
ZENDESK_LIVECHATLIVECHATZendesk Sunshine live chat
GENESYS_LIVECHATLIVECHATGenesys Cloud live chat
AZURE_AI_LLMLLMAzure AI (OpenAI on Azure)
OPEN_AI_LLMLLMOpenAI API
GEMINI_AI_LLMLLMGoogle Gemini
ZENDESK_TICKETINGTICKETINGZendesk ticketing
GOOGLE_TRANSLATIONTRANSLATIONGoogle Cloud Translation

IntegrationCategory

ValueDescription
AUTHENTICATIONSSO/auth providers
CRMCustomer relationship management
KBExternal knowledge base
LIVECHATLive chat providers
LLMLarge language model providers
TICKETINGTicketing systems
TRANSLATIONTranslation services

GrantType (OIDC)

Value
AUTHORIZATION_CODE
AUTHORIZATION_CODE_PKCE

ChallengeMethod (OIDC)

Value
SHA_256
PLAIN

EntityPropertyType (MS Dynamics)

Value
TEXT
NUMBER
CHOICE
LOOKUP
DATETIME

Relationships

  • Belongs to: Organization (via @DBRef)
  • Referenced by: Tenant (via integrations list and plugin settings)
  • Referenced by: LoginSettings (for auth integrations)
  • Referenced by: KnowledgeBase (for integration-type KBs)

TypeScript Mapping

hbf-core (Kotlin)hbf-core-api (TypeScript)Notes
IntegrationIntegrationTS base omits organization, organizationRef, tags, enabled, createdAt, updatedAt
IntegrationTypeIntegrationTypeTS uses OPENID_AUTHENTICATION vs Kotlin's OIDC_AUTHENTICATION
IntegrationCategoryIntegrationCategoryTS omits TRANSLATION
OIDCIntegrationOIDCIntegrationAligned
OpenAIIntegrationOpenAIIntegrationAligned
AzureAIIntegrationAzureAIIntegrationAligned
GeminiAIIntegrationGeminiAIIntegrationAligned
CiscoLivechatIntegrationCiscoLivechatIntegrationIn plugin.ts
ZendeskLivechatIntegrationZendeskSunshineLivechatIntegrationDifferent naming
GenesysLivechatIntegrationGenesysLivechatIntegrationIn plugin.ts
ZendeskTicketingIntegration(not in TS)Gap
GoogleTranslationIntegration(not in TS)Gap
MicrosoftDynamicsCrmIntegration(not in TS)Gap
MicrosoftDynamicsKbIntegration(not in TS)Gap
AzureBlobStorageKbIntegration(not in TS)Gap — needed by hbf-knowledge-manager. AZURE_BLOB_STORAGE_KB also missing from IntegrationType enum in hbf-core-api