AI Agents

NameDescription
AgentDefImmutable definition of an AI agent, parsed from an XML file.
AgentDefEventHandlerDefinition of a single event handler an agent responds to, firing its instructions when a matching event occurs.
AgentDefEventHandlerSetThe event handlers an account has added to an agent definition, as one file.
AgentDefTimer
AgentSkillDefOne reference document an agent can pull into context when it judges the task needs it.
AgentSkillSetA file of skills, as an account may add to an agent without taking a copy of the whole definition.
AgentWorkflowDefDefinition of a single named workflow an agent can run: a series of steps, similar to a journey but much simpler.
AgentWorkflowStepA single step within an AgentWorkflowDef: instructions for the AI to carry out, plus a completion type that decides when the step is finished and whic...
ChatCompletionResponseDeserialised response from OpenAI's Chat Completions endpoint (POST /v1/chat/completions), returned by OpenAiClient.getChatCompletion.
DecisionAgentWorkflowStepCompletionTypeCompletion type that asks the AI to choose between a list of named choices, using a prompt to decide.
DecisionChoiceA single named option within a DecisionAgentWorkflowStepCompletionType, with a description that helps the AI decide whether to take it, and the comple...
EndWorkflowStepCompletionTypeCompletion type that marks the workflow as finished.
FunctionCallAgentWorkflowStepCompletionTypeCompletion type that finishes a step once a named function has been successfully called, for example when a sales claim is submitted.
ImmediateAgentWorkflowStepCompletionTypeCompletion type that progresses the workflow to the next step immediately, with no required actions.
LlmInferenceInfoRecords the parameters, timing and outcome of a single invokeInference call, built by LlmManager before the call and updated after it completes.
PromptAgentWorkflowStepCompletionTypeCompletion type that runs one or more prompts against the AI and then defers to an inner completion type to decide what happens next.
ResponsesDeserialised response from OpenAI's Responses endpoint (POST /v1/responses), returned by OpenAiClient.doResponses.
UserConfirmsAgentWorkflowStepCompletionTypeCompletion type that waits for the user to confirm before proceeding, then defers to an inner completion type.
ValidationAgentWorkflowStepCompletionTypeCompletion type that wraps another completion type so it only completes once one or more validation criteria are met.

Account Settings

NameDescription
AccountConfigSnapshotPortable, point-in-time capture of an account's app configuration, used to detect and review configuration drift.
AppDeltasGroups the config deltas for a single app, further split out by config item type.
AppTypeActionRecords that a group of config item changes (an AppTypeDeltas) has been actioned during deployment review, who actioned it, when, and how, using one o...
AppTypeDeltasHolds the config item deltas of one type, such as settings, within a single app's AppDeltas.
ConfigDeltaRepresents the difference between one portable config item in a source snapshot and the same item in a destination snapshot.
ConfigDiffRepresents the full set of differences between two account configuration snapshots, grouped by app and then by config item type.
ConfigItemRepresents a single portable item of app configuration captured into an AccountConfigSnapshot, such as an app's settings or an entity contributed by a...
IgnoredConfigItemRecords a single config item, or a wider group of config items, excluded from configuration diffs and deployments for a tenant account.
IgnoredConfigItemListThe full list of config items excluded from configuration diffs and deployments for a tenant account.

Addresses

NameDescription
AddressBeanPortable postal address, used as a nested property when building organisation, user and shopping cart addresses.

App Definitions

NameDescription
AppMenuItemOne item in the Kademi admin menu, contributed by an app through a menu element in its controllers.xml.
AttsMapA map of default component attributes, built with a fluent add(...) method so callers can chain calls when constructing the defaultAtts argument for t...
ComponentBeanA KEditor component registered by an app: a draggable, configurable block (e.g.
ControllerMappingMaps a URL path pattern to a logical controller registered by an app, with the list of methods that can be invoked against it based on the HTTP method...
ControllerMappingListRegistration API a repository app's server side JavaScript uses to declare everything the app contributes to the platform.
ControllerMethodBinds one HTTP method, such as GET or POST, on a ControllerMapping to the JS function that handles it, an optional required request parameter, and the...
DependencyRepresents one repository app that another app depends on, identified by app id and an optional branch or version, with a flag for whether the depende...
PaymentProviderDetailsRegistration that marks an app as a payment provider, holding the function names and payment form it offers to shopping carts.
RepoAppJourneyFieldV2Version two app field, evaluated either by calling a JavaScript function or by reading a bean property from the parent object.
RepoAppQuerySaved search query contributed by an app, registered with addQuery from a JSON file in the app repository.

Asset Types

NameDescription
AndMatcherCombines a list of asset interaction matchers with logical AND, matching an asset only when every child matcher matches it.
OrMatcherCombines a list of asset interaction matchers with logical OR, matching an asset if any one of the child matchers matches it.
PathMappingMaps a URL path pattern to an asset view within an asset type, used to route content delivery requests to the right view or to a new-instance form.
RequestContentTypeMatcherMatches when the current request's Content-Type header starts with a configured value.
RequestMethodMatcherMatches when the current request's HTTP method equals a configured method, such as GET or POST.
RequestParamMatcherMatches when the current request carries a configured parameter, optionally with a specific value.
TrueMatcherA matcher that always matches, regardless of the asset or the current request.

Assets

NameDescription
AssetRepresents one item in the asset library, such as an image, video, block of text or content item.
BinaryAssetAn asset whose content is a stored file, such as an uploaded document, image or video.
ContentItemAssetAn asset which is a combination of fields and relationships to other assets rather than a stored file.
ImageAssetAn image file in the asset library, with the pixel dimensions recorded alongside the stored file.
VideoAssetA video file in the asset library, with its playback duration and frame size recorded alongside the stored file.
VisualAssetA binary asset that has visible dimensions, being the shared parent of images and videos.

Builders

NameDescription
AbstractRecognitionBuilderBase fluent builder for the properties shared by every kind of recognition (level or badge): display title, image, colour, the free-form field1 to fie...
AcceptReferralBuilderFluent builder for accepting a referral.
AgentDefBuilderFluent builder for an AgentDef, obtained from AgentManager.newAgentDefBuilder().
AlertBuilderFluent builder for creating a new Alert, obtained from AlertsManager.newAlertBuilder.
ArrayBuilderFluent builder for a JSON array, used together with MapBuilder to assemble nested document bodies such as Elasticsearch index requests.
ArticleBuilderFluent builder for creating a new blog article with optional category, tags, images, files and audience filtering set in one call.
AssetViewsBuilderBuilds the AssetView instances used by content-type scripts to control how a matched request is rendered.
AuctionBuilderFluent builder for creating a new auction with optional images, access restrictions, bidding rules and page body content.
AuditItemSearchBuilderFluent builder for a filtered, paginated search over AuditItem records belonging to one tenant organisation.
AuthHandlerBuilderFluent builder for registering a custom Milton authentication handler backed by JS functions, reached from controllerMappings.authenticationHandler().
BaseCriteriaBuilderBase fluent builder for Hibernate criteria restrictions, exposed to JS as the chainable methods available on a query and on its AND/OR sub-blocks.
BuilderFluent builder for a FraudContext, the description of the operation a fraud rule is asked to score.
CacheBuilderFluent builder for declaring an app-scoped, in-memory cache, reached from controllerMappings.cacheBuilder().
CartItemBuilderFluent builder for adding a product SKU to a cart, or updating the existing line item for that SKU.
ChartBuilderFluent builder for a chart's title, axis labels, dimensions, orientation and data points.
CheckoutLineItemBuilderFluent builder for constructing a CustomCheckoutRuleLineItem, used by custom checkout rule implementations (including JS-based rule scripts) to add pr...
CheckoutRuleTypeBuilderBuilds a custom shopping cart checkout rule type contributed by this app.
ColumnMetaBuilderFluent builder for a single ColumnMeta, used to set a column's title, width, sort and visibility, and CSS classes or attributes before it is built as...
CommentPostBuilderBuilds a new comment against a blog article or a content resource, optionally as a reply to an existing comment and with extra request parameters atta...
ComponentBuilderBuilds a KEditor component declaration, which is a drag and drop block content editors can place on a page.
ConfigItemListBuilderBuilder used by an app's appendConfig implementation to add the app's config items, such as settings or app-specific entities, into an AccountConfigSn...
ControllerMappingBuilderFluent builder for registering a URL to controller mapping for a custom app, reached from controllerMappings.adminController() for admin screens or co...
CookieBuilderFluent builder for a single cookie, obtained from HttpWrapper.cookieBuilder(name).
DataSeriesExtraFieldBuilderFluent builder for adding a single extra field to a sales data series.
DebugSessionBuilderFluent builder for configuring a new DebugSession before it is started.
DefaultKSearchRequestBuilderFluent builder for one Elasticsearch search request, wrapping the native SearchRequestBuilder behind the KSearchRequestBuilder API.
DependencyMappingBuilderFluent builder for accumulating a list of Dependency entries.
DocumentAnalysisBuilderFluent builder for the options passed to an AWS Textract document analysis, configuring which features Textract runs and, for the queries feature, whi...
EmailItemBuilderFluent builder for composing a single outbound email and queuing it for delivery, obtained in JS from applications.email.emailBuilder().
EmailSenderDetailsBuilderFluent builder for configuring the JS function an app uses to send outgoing email.
ESFieldBuilderPer-field configuration for a single Elasticsearch mapping field, created by one of ESMappingsBuilder's newX methods and completed with a call to buil...
ESMappingsBuilderFluent builder for Elasticsearch index mappings, used by AppIndexer implementations to describe how a field is stored and searched.
EventBuilderFluent builder for assembling and firing a custom repository app trigger event, obtained by calling EventWrapper.eventBuilder and used from GraalJS vi...
FieldV2BuilderBuilds a version two field, which is a typed value an app contributes for use in segments, journeys and queries.
FilePostBuilderDescribes one file attached to a forum post, wall post or comment: its name, content hash, content type, size and display order.
ForumPostBuilderBuilds a new forum post or forum reply within a specific forum.
FunnelActionTypeBuilderBuilds a funnel action type, which is a step an automation can perform when it runs.
FunnelTriggerTypeBuilderBuilds a funnel trigger type, which lets an automation be started by an event raised by this app.
IdpDynamicPathsBuilderBuilder for registering a set of URL paths that an app handles as a dynamic identity provider endpoint.
ImageGenerationOptionsBuilderFluent builder for assembling ImageGenerationOptions before calling ImageGenerationManager.generateImage.
IndexItemBuilderFluent builder for assembling an IndexItem to add to a website's vector search index.
InvoicePaymentBuilderFluent builder for creating and saving an InvoicePayment.
JoinTableBuilderFluent builder for a JoinTable, which combines rows from two other registered tables on a matching key column.
JsImplementationBuilderFluent builder for registering a JS object as an app's implementation of a named platform extension point, reached from controllerMappings.newImplemen...
JsMetricTypeBuilderFluent builder for a JsMetricType, obtained from an app's controllerMappings.newMetricTypeBuilder().
JsonSchemaResponseFormatBuilderFluent builder for the OpenAI-style json_schema response format map that forces a language model to return output matching a specific structure.
JsServiceBuilderBuilds a named JavaScript service that this app publishes for other apps to call.
JsTableActionHandlerBuilderFluent builder for a JsTableActionHandler, exposed to app and library JS code as controllerMappings.newTableActionHandlerBuilder().
JunctionCriteriaBuilderA nested AND/OR block within a Hibernate criteria query, created by calling conjunction() or disjunction() on a BaseCriteriaBuilder.
KCriteriaBuilderBuilder and query factory for a single persistent entity type, scoped to the current admin organisation.
LoginNonceSearchBuilderFluent, JS-facing query builder for LoginNonce records, the login session tracking rows created each time a user authenticates.
MailboxMappingBuilderFluent builder for a mailbox mapping, letting a custom app capture incoming email for its website domain.
MapBuilderFluent builder for a nested map of string to object, used to assemble JSON-shaped documents such as Elasticsearch index bodies.
McpMappingBuilderFluent builder for registering a Model Context Protocol server contributed by an app, reached from controllerMappings.websiteMcpController for a serve...
MenuMappingBuilderFluent builder for a MenuMapping, letting an app contribute or modify menu items at runtime rather than declaring them statically in controllers.xml.
MetricBuilderFluent builder for a Metric, obtained from newMetricBuilder or QueryManager.newMetricBuilder.
ModuleStatusBuilderFluent builder for creating a new module status or updating an existing one, obtained from LearningManager.newModuleStatusBuilder().
NotificationBuilderFluent builder for the VAPID keys, subscriber subscription and payload needed to send a web push notification through HttpPushManager.sendNotification...
OrganisationBuilderFluent builder for creating a new Organisation, produced by newOrganisationBuilder().
ParticipantSearchBuilderBuilder for a search that finds the profiles or organisations eligible to participate in a promotion (a Reward), used to page and filter that particip...
PaymentProviderDetailsBuilderBuilds the payment provider registration for an app, so the app can take payments for shopping cart checkouts.
PipelineBuilderBuilds and saves a simple export-only pipeline for an endpoint: a transaction step wrapping either a query export step or a table uploader step, writt...
PointsAllocationSourceBuilderFluent builder for configuring and creating a points allocation source on a sales data series - the rule set that turns a series' sales records into r...
PointsExpiryRuleTypeBuilderFluent builder for a points expiry rule type contributed by an app, reached from controllerMappings.pointsExpiryRuleTypeBuilder(id, title).
PointsRuleTypeBuilderBuilds a points rule type, which decides whether a sales record earns points and how many.
PointStatementBuilderFluent builder that assembles and persists a PointStatement, a periodic snapshot of a participant's points balance for a reward.
PointsTransactionsSearchBuilderFluent builder for searching a tenant's points transactions, ie its Points and PointsDebit records.
PortletMappingBuilderFluent builder for an admin or website portlet contributed by an app, reached from controllerMappings.adminPortletController for admin pages or contro...
PostAttachmentBuilderDescribes one file attached to a forum post or comment: its name, content hash, content type, size, an optional note and its display order.
PostBuilderBase builder for creating a post, comment or reply: holds the common comment text, poster, posted date, website and branch, and any file attachments,...
ProductBuilderFluent builder for creating a new catalogue Product, letting callers set its pricing, categories, images and parameters before persisting it in one ca...
ProductParameterBuilderFluent builder for a single variant parameter of a product being built, such as size or colour, together with its selectable options.
ProductSearchBuilderFluent builder for searching products in the catalogue.
ProductSkuBuilderFluent builder that creates or updates a SKU for a given product and SKU code.
ProfileBuilderFluent builder for creating a profile together with its memberships, custom field values and addresses in one go.
ProfileTabsBuilderFluent builder for an extra tab, and optionally a summary panel, added to an admin profile or organisation page, reached from controllerMappings.admin...
PromotionBuilderFluent builder for constructing and persisting a new promotion (a Reward).
PromotionMechanicTypeBuilderBuilds a promotion mechanic type, which is the behaviour behind a promotion such as a prize draw or an instant win.
QrCodeBuilderFluent builder for rendering a QR code image, obtained via BarcodeManager.qrCode().
QueryParameterBuilderFluent builder for a QueryParameter, created via QueryParameter.newQueryParameterBuilder with the parameter's name and type, then configured with an o...
RecognitionBadgeBuilderFluent builder for creating a recognition badge, extending the common recognition properties defined on AbstractRecognitionBuilder.
RecognitionLevelBuilderFluent builder for creating a recognition level: extends the common recognition properties with a fixed level amount, an optional lookup-table name, a...
RecognitionTopicBuilderBuilds a new recognition topic for the current tenant organisation.
RecordMatcherBuilderFluent builder for creating and persisting a new record matcher on a sales data series.
ReferralBuilderFluent builder for sending a referral invitation.
RegressionBuilderAccumulates a time series of dated observations and builds an AnomalyDetectionModel or ForecastModel from them.
RepoAppEventDefBuilderFluent builder for declaring a repository app event, reached from ControllerMappingList.newEventDefinitionBuilder.
RepoEsMappingsBuilderFluent builder for declaring an app's Elasticsearch index mappings for one of its own databases.
RewardCategoryBuilderFluent builder for constructing and persisting a new RewardCategory.
RewardEntryBuilderFluent builder for constructing and submitting a new RewardEntry, recording that a profile has entered or been awarded a promotion.
RunBuilderCollects the settings for one agent turn, obtained from AgentOrchestratorManager.newRun and run by calling execute.
SearchParametersBuilderFluent builder for assembling the SearchParameters used to run a vector search.
SeriesBuilderCollects a metric time series a bucket at a time, so a script can stream histogram buckets in without building Java collections itself.
SigninProviderBuilderBuilds a single alternative sign in provider entry, such as an SSO button, for a repository app's admin console or website sign in page.
SigninProviderDetailsBuilderRegisters a function that dynamically produces the full list of alternative sign in providers for a repository app's admin console or website, as an a...
SkuSearchBuilderFluent builder for the criteria used to search or look up product SKUs in the catalogue.
SmsProviderDetailsBuilderRegisters a repository app as an SMS provider, by declaring the function names used to send a message and to supply the provider's settings.
SseMappingBuilderRegisters a Server-Sent Events (SSE) connection type for a repository app, so browsers can open a persistent event stream of that type and have the ap...
StreamEventBeanBuilderFluent builder that assembles a StreamEventBean and appends it to a profile's or lead's activity timeline.
TableViewMetaBuilderFluent builder for a TableViewMeta, used to assemble a table's paginator, records, columns and CSS classes step by step in a template or controller be...
TemplateDefBuilderBuilds a page or email template definition contributed by an app, so content editors can create pages from it.
ThumbnailBuilderFluent builder for generating a thumbnail from an uploaded image or PDF and saving it into content storage.
TriggerTypeBuilderRegisters a repository app automation trigger, which adds an entry to the automation page that a user can configure and that fires a format function w...
VoucherAllocationBuilderFluent builder for allocating a single voucher, either a specific voucher passed via voucher(Voucher) or, if none is given, the first available unallo...
VoucherStatusBuilderFluent builder for changing a voucher's status, recording who made the change, when, at which organisation and with what notes.
VoucherTypeAllocationBuilderFluent builder for allocating one or more vouchers of a given voucher type.
VoucherTypeBuilderFluent builder for creating a new voucher type, or updating an existing one, on the current tenant organisation.
WallPostBuilderCollects the data needed to post a comment onto an organisation's or profile's wall: the target entity, the comment text or a triggering ShareableItem...
WebsocketMappingBuilderFluent builder for one app-defined websocket data type, configuring its connect, disconnect and message handler functions and whether it is restricted...
ZipBuilderAdds entries to a zip file being written by exportToZip.

Content

NameDescription
AltFormatMatcherMatches an asset interaction against a request's "format" query parameter, used to serve alternate rendered formats of an asset such as a transcoded v...
ContentTypesHolds the content-type configuration for a tenant: the asset type definitions loaded from the content-types repository, and the paths to the JS source...
EditAssetActionDefault form-submit action for asset types: creates or updates the underlying content item from posted form fields.
JsAssetActionForm-submit action that delegates to a named JavaScript function registered with the content type system.
LogAssetActionForm-submit action that logs the submission for debugging and otherwise does nothing.
MultiAssetActionForm-submit action that chains a list of other actions together and runs each of them on the same submission.
NewAssetMatcherMatches an asset interaction only while the asset is newly instantiated, ie created in memory but not yet persisted.
RedirectAssetActionForm-submit action that redirects to a URL built from an MVEL template.
StartJourneyAssetActionForm-submit action that enrols the current user into a marketing journey (funnel) when a form is submitted.

Custom Fields

NameDescription
ExtraFieldDefines a single configurable field on an entity such as a lead, an automation trigger, or a metric - name, title, type, options and validation, plus...
ExtraFieldRendererFluent builder for rendering an ExtraField as an HTML form control, with the value, CSS classes, name attributes and kcode selection flag configured t...
GroupExtraFieldAn extra field definition that renders as an editable group select drop down, letting a form present a choice of groups as one of the configurable cus...
ProfileIdentifierExtraFieldMarks an extra field as a unique profile identifier, letting a profile be looked up by that field's value instead of by username.

Database Entities

NameDescription
AccessBlockRecords a restriction on access for one entity, either a profile or an organisation, within an account.
AddressA postal address stored against a Kademi account, made up of the usual two address lines, city, state, postcode and country.
AddressBookAn AddressBook is a Repository which can have linked contact records.
AgentA running instance of an agent definition for one particular user.
AgentMemoryOne durable fact an agent has recorded about the person it works for.
AgentRunExecution state for one run of an Agent's gather, plan, act and verify loop, as driven by the AgentOrchestrator.
AgentTargetLinks an Agent to the thing it is paying attention to, so an agent can be given a set of profiles or organisations to work on.
AgentWorkflowThe current state of one piece of work an AI agent is carrying out, much as a Lead is the state of one profile's progress through a journey.
AlertA message shown on the dashboard of a website or of the admin console, optionally narrowed to a particular audience.
AlertAckRecords one member's relationship with an alert: that the alert has been activated for them, and, once they dismiss it, that they have acknowledged it...
AppRatingA single star rating and written review left by a profile against a marketplace item.
AppRepositoryA repository holding the source of one app, theme, library or recipe installed into an organisation.
AsyncJobOne unit of background work in the platform's asynchronous job queue, such as an import, an export or a bulk update.
AsyncJobStatusHolds the current progress of a background job, so a client can poll it while the job is still running.
AttendeeRequestOne person's invitation to, or registration for, a CalEvent, along with the participation status saying whether they have accepted.
AuctionA single item put up for bidding on a website, with its bidding window, starting price and current leading bid.
AuctionBidOne bid placed on an auction, recording the amount, who placed it, when, and the IP address it came from.
AuctionGroupGives the members of a user group access to an auction, so they can view it and bid.
AuctionImageAn image shown for an auction, for example a photo of the item being auctioned.
AuctionOrganisationGives an organisation access to an auction, so the people in it can view the auction and bid.
AuctionSetA named group of auctions run together as one event, holding the auctions and the default start and end dates new ones inherit.
AuditItemOne recorded change to an audited record, holding what changed, who changed it and the record's previous state so the change can be reverted.
AuditRestorePointMarks a moment in an organisation's audit history that its configuration can be rolled back to.
BackupRecordTracks one backup taken of an organisation's data, from the moment it is requested through to the file it produces.
BaseEmailCategoryNamed category used to file email jobs under an organisation so administrators can group and browse them.
BaseEmailJobBase class for every email job in an account: scheduled emails, one-off group emails and email triggers.
BaseRecognitionCommon definition shared by the two kinds of recognition a profile can earn: a badge and a level.
BlogA blog on a website, holding its articles along with the tags and categories used to organise them.
BlogArticleRepresents a blog article.
BlogArticleTagLinks a blog article to one of the tags available on its blog, so the article can be found by topic.
BlogCategoryA category available on a blog, such as news or promotion, which an article can be filed under.
BlogFileA file attached to a blog article, such as a document offered for download, created when the article is approved from the meta fields in its content f...
BlogImageAn image belonging to a blog article, created when the article is approved from the meta fields in its content file.
BlogTagA topic tag available on a blog, such as health or humour, which articles can be tagged with.
BlogTagProfileRecords that a reader is interested in a blog tag, so articles on that topic can be promoted to them.
BranchA Commit is a link between a Repository and an TreeItem The TreeItem linked to is a directory, and its members are the members of the Repository for t...
CalendarA calendar belonging to an organisation or a profile, holding the CalEvent rows shown to its users.
CalEventA single dated event on a Calendar, holding its timing, location and description as well as the registration settings that decide whether people may s...
CalEventProductLinks a calendar event to the product that is sold to attend it, such as a seat at a training course.
CartRepresents a shopping cart, the customer's in-progress or completed order for one or more products.
CartInPromotionRecords that a promotion has been applied to a shopping cart, keeping the code the shopper entered as well as the promotion it resolved to.
CategoryA grouping of products within one organisation, used to organise a reward store or product catalogue.
CertificateRepresents a certificate, which can be associated with a module A certificate is basically a piece of templated text and a background image.
CommentA comment left on a content item, such as a page, an article or a profile wall.
CommitA Commit is a link between a Repository and an TreeItem The TreeItem linked to is a directory, and its members are the members of the Repository for t...
ContactSearch optimised copy of a contact that lives in an address book, holding just enough of the person's details to find them quickly.
ContactExtendedPropertyHolds one extra named value against a contact, for details that do not have their own column on the contact record.
ContactRequestRepresents a single submission of a website contact form, storing the visitor's details and message.
ContactRequestAttachmentA file uploaded with a contact form submission, held against the contact request it came in with.
ContactRequestFieldOne extra name and value pair captured with a contact form submission, holding a field which the built-in contact request properties do not cover.
CpdAwardRecords an award of a number of CPD (continuing professional development) training points to a member for completing a module.
CustomReportAn administrator defined CSV report over one source of data, held against an organisation.
DueTransactionOne instalment of a recurring transaction that has fallen due, tracking that single payment through however many attempts it takes to succeed or fail.
ECommerceStoreA shop front within a website, holding the products offered for sale and the pricing defaults applied to them.
EmailAttachmentA single file attached to an EmailItem, referencing the file's content by hash rather than storing it directly on the entity.
EmailControlAccount level controls over outbound email, holding the sending kill switch, the rate limit rules and the sender identity mode for one account.
EmailItemRepresents a single email message: an outbound send that is queued, retrying, completed or failed, or an inbound email received into a profile's inter...
EmailJobAttachmentAn attachment specification for an email job.
EmailSendAttemptRecords one attempt at sending a single email, successful or not.
EmailTriggerAn automation rule which fires whenever a named event occurs in an organisation, and performs one or more configured actions.
EnrolementGrants a group access to a training programme, or to a single course within a programme, on one website.
EntityAddressAttaches an Address to a profile or organisation, with a type saying what the address is used for.
FanoutEntryOne child hash within a fanout, linking a FanoutHash to the next level down in the content graph.
FanoutHashRepresents either a list of other fanout hashes, or a list of blob hashes Generally a file will have a hash which is used to locate the file fanout.
FileAttachmentA file attached to some other item, such as a comment or a blog post, holding the file's metadata and the hash used to fetch its content.
FolderLinkMaps a folder in one content repository onto a folder in another, so the same content appears in both.
ForumA discussion forum on a website, holding the topics (forum posts) that members start within it.
ForumPostA topic started in a forum, ie the opening post of a discussion thread.
ForumReplyA reply to a forum post, stored as a kind of post so it shares the poster, post date, website and soft delete behaviour of every other post.
FraudEventA fraud evaluation that scored high enough to be worth keeping, one row per scored operation.
FunnelEdmLinks a funnel node's outgoing email or SMS message to the lead and funnel repository it was sent from, so that later delivery and interaction events...
FunnelRepositoryA versioned content repository that holds one funnel, the definition of a journey that leads are pushed through.
GroupA user group, is a list of users and other groups.
GroupCalendarLinks a group to a calendar, so that the calendar is shared with every member of that group.
GroupEmailJobA one-off bulk email sent to a set of groups or organisations, or a reusable template for such an email.
GroupFolder
GroupInWebsiteCreates a link between a program and a website, which makes that program available on that website.
GroupMembershipRecords that a profile is a member of a group within a particular organisation, which is how nearly all permissions and group-driven behaviour are ass...
GroupMembershipApplicationA pending request to join a closed group, created instead of a group membership until an admin decides.
GroupRecipientAttaches a group to an email job or an SMS job as an audience, so everyone in the group is a recipient of that job.
GroupRewardMakes a reward accessible to the members of a user group, which is how access to a rewards programme is granted.
GroupRoleA GroupRole is a well known identifier for a set of permissions.
GroupSmsJobA bulk SMS send addressed to one or more groups of profiles, the SMS equivalent of a group email job.
InventoryLocationA physical place that stock is held in, such as a warehouse, a store room or a branch.
InvoiceA bill issued to a customer, holding the line items being charged for and the date payment falls due.
InvoicePaymentA payment intended to be applied to invoices.
InvoicePaymentLinkLinks an Invoice to an InvoicePayment.
ItemImageA single image file that can be attached to a catalogue item, most commonly a product through ProductImage.
JobStatusTracks the progress of a long running background job so a user interface can poll it and show state.
JourneyAutomationRecords that a journey automation fired for a profile or organisation, so that a journey can be replayed and so that once-only automations can tell th...
JsonDatabaseA named collection of JSON documents (JsonDocument rows) owned by an organisation and optionally scoped to a website.
JsonDocumentA single named JSON record stored inside a JsonDatabase, the platform's schemaless store for app data.
JsScheduleA scheduled call to a server side JavaScript function in an app, run by the platform's timer scanner.
LanguageA language an organisation has made available, so content and translations can be offered in it.
LeadOne prospect or deal moving through a funnel, holding who it is for, where it has got to, and what it is worth.
LeadFileA file attached to a lead, such as a photo, quote or signed document, held by content hash rather than as bytes on the row.
LeadForkA parallel branch of a lead's progress through a journey, tracking its own current goal and its own timeout timer independently of the lead.
LeadFormEventLogRecords an event on a form that a lead was asked to complete, such as the form being submitted.
LeadJourneyTransitionOne step of a lead moving from one journey node to the next, written every time a node is attained.
LeadNoteA single entry in the activity timeline of a lead, such as a phone call, an email or a typed note.
LeadParticipantPersists a single custom-role participant assignment on a Lead - ie a participant filling a role beyond the 4 legacy system roles (customer/customer_o...
LeadProductOne line item joining a product to a lead, with an optional quantity, so a lead can record what the prospect is interested in or has been quoted.
LeadStageA LeadStage represents a lead reaching a stage in a marketing or sales pipeline.
LineItemOne charge line on a quote, invoice, purchase order or other payment item list.
LlmConversationA single chat session between a person and an AI assistant, recorded so conversations can be listed, resumed and counted per organisation.
MarketPlaceItemThe marketplace listing for an app, theme, recipe or library: the name it is installed by, the blurb and images shown on its listing page, and the ver...
MarketPlacePublishedItemOne published version of a marketplace app, theme, library or recipe, holding the listing details and the git branch that version's code lives on.
ModuleCalEventSchedules a learning module by tying a calendar event to a particular programme, course and module on a website, optionally for one cohort.
ModuleCompletionRecords that a learner has completed a single learning module, scored as a percentage where the module is assessed.
ModuleStatusTracks one learner's progress through one module, identified by website plus programme, course and module code.
ModuleStatusFieldOne extra named value captured against a learner's progress through a module, for anything the fixed ModuleStatus columns do not cover.
NamedCounterA named counter provides a means of generating monotonically increasing series, such as order or invoice numbers.
NotifyPreferenceHolds whether a person wants to receive notification emails from a given website.
NvPairA NvPair is to allow data capture for entities such as users, groups and organisations Every NvPair is associated with a NvSet.
NvSetA set of NvPair name and value pairs describing one item, used both to define which fields to collect and to hold the values that were collected.
OptInOffers one group as an optional subscription to the members of another group.
OrderAttachmentA file attached to a product order, such as a proof, an artwork file or a receipt image.
OrganisationAn organisation contains users and websites.
OrganisationRecipientAttaches an organisation to an email job or an SMS job as an audience, so people within that organisation are recipients of the job.
OrgTypeA type of organisation, which is used to limit what organisations a group is permitted to signup to.
ParameterOptionOne selectable value of a product parameter, for example Black or White for a "Colour" parameter.
PasswordPolicyDefines the password complexity rules that members of a group must satisfy, such as minimum length and required character classes.
PaymentItemListBase class for the money documents a payment item list can be: an invoice, a quote or a purchase order.
PaymentItemListAttachmentA file attachment held against a payment item list, such as an invoice, quote or purchase order.
PaymentTransactionRecords one attempt to take a payment through a payment provider, successful or not.
PipelineExecutionOne run of an integration pipeline, recording whether it succeeded and every message logged while it ran.
PipelineScheduleA recurring timer that runs one integration pipeline on a fixed interval, such as every three days or every month.
PointsRepresents a single credit of points issued to a profile or organisation under a reward, such as a prize draw or a set of gift vouchers.
PointsAllocationRecords one allocation of points made by the points engine, linking the credit or debit it created back to whatever caused it.
PointsAllocationRuleDefines one rule that transforms a points allocation, by adding to it, multiplying it, or transferring the points to another profile or organisation.
PointsAllocationSourceRule which turns records in a sales data series into points allocations, deciding which records count, how many points they are worth and who receives...
PointsBalanceThe running points total held by one profile or organisation under one reward, kept as a stored value so a balance can be read without summing the who...
PointsDebitRecords points being taken off a balance in a rewards programme, because they were spent or because they expired.
PointsDebitLinkLinks a points debit to the points credit it was taken from, so a spend can be traced back to the reward and points tag the points were originally iss...
PointsTagA label that points credits and debits can be grouped under, so an account can separate its points into named pools.
PointStatementA snapshot of one participant's points balance under a single reward, taken on a given statement date.
PostBase of everything members write into the social features: comments, forum topics and forum replies.
PostFollowerRecords that a profile is following one piece of content on a website, so they can be notified when it is commented on or updated.
PostTagRecords that a person was tagged into a post, which is how mentions in a comment, question or reply are tracked.
ProductA product in an organisation's catalogue: anything that can be ordered or redeemed, such as physical goods, vouchers or calendar bookings.
ProductImageAttaches an image to a product, so a product can show a gallery of pictures in the store.
ProductInCategoryPlaces one product in one category, forming the many to many link between products and the catalogue tree.
ProductInEComStoreLists one product in one e-commerce store, and carries the pricing and ordering that apply to it in that store only.
ProductInLocationThe stock level of one product SKU held at one inventory location.
ProductOrderRepresents a single line item within a customer's order or shopping cart, recording the product purchased, its quantity and cost breakdown.
ProductOrderOptionThe answer a customer gave to one of a product's ordering questions when placing an order, such as the name to engrave or a delivery instruction.
ProductOrderStatusRecords one step in the lifecycle history of a ProductOrder, such as being added to a cart, ordered, shipped or cancelled.
ProductParameterRepresents a variation of a product which can be requested by a purchaser For example, for a shirt product, there might be a variation of size which c...
ProductSkuRepresents a stock keeping unit: one product, or one specific combination of a product's option values, that can be ordered and stocked.
ProductSkuOptionsLinks a product SKU to one of the parameter options that define it, for example the colour black or the size large.
ProfileA user profile is defined within an organisation.
ProfileIdentifierAn alternative, unique way of identifying a member within an organisation, such as a payroll number, a dealer code or an external system's customer id...
ProposalGroups the quotes offered to a customer for one piece of business, and records which of them was accepted.
PurchasedAppRecords that an organisation has acquired a marketplace app, and pins which version of it they are on.
QuizAnswerRepresents the answer a user gave for a particular question when submitting a quiz.
QuizAttemptOne submission of a set of answers to a quiz.
QuoteA priced offer made to a customer, holding the line items being quoted and the date the offer lapses.
ReceiptAcknowledges a payment made against an invoice, naming who paid, who was paid, how much was paid and what the invoice came to.
RecognitionAwardRecords that a badge or a level was awarded to a profile or an organisation.
RecognitionBadgeA badge people can be nominated for in a recognition programme, such as a values or long service award.
RecognitionLevelA tier a profile can reach on the metric its recognition topic measures, such as Bronze, Silver and Gold.
RecognitionLevelNotificationRecords a deferred recognition level notification for one participant, either a close-to-level warning or an achieved-level announcement.
RecognitionNominationOne member's nomination of another member for a recognition badge, awaiting a decision from an approver.
RecognitionPeriodOne run of a recognition programme for a topic, such as a monthly or quarterly award round.
RecognitionPeriodResultOne participant's outcome for one recognition period, holding the value they achieved and the level they reached.
RecognitionTopicA container for a set of recognition badges and levels within an organisation, and the metric its levels are measured against.
RecordMatchA single matched group produced by a RecordMatcher, eg one bundle instance or one role-split instance.
RecordMatcherDefines a rule that scans a sales data series for sets of matching records and generates destination records representing each match.
RecordMatchLinkLinks a SalesDataRecord to a RecordMatch group, either as one of the records consumed to produce the match (SOURCE) or as one of the records generated...
RecurringTransactionRepresents a recurring payment schedule, such as a subscription or instalment plan, that bills a stored customer token on a fixed cycle.
RecurringTransactionResultRecords one run of a recurring transaction, so the payment history of a subscription can be followed.
ReferralAn invitation sent by one person to another, either to join the site as a new member or to join a specific group or organisation.
ReferralAcceptanceRecords that someone took up a referral, linking the Referral that invited them to the profile that accepted it.
ReferralProgramA refer a friend programme on a website, holding how referrals are sent, activated, rewarded and fraud checked.
ReminderA scheduled reminder email for a CalEvent, sent a set period before the event starts.
RepositoryA repository
RepositoryCategory
RestApiAppA third party application registered against an account so it can use the Kademi REST API through OAuth2.
RestApiAuthorizationA single-use OAuth2 authorisation code issued to a RestApiApp after a profile has approved its access request.
RestoreRecordTracks one restore of an organisation's data from a backup file, from the moment it is started through to the moment it finishes.
RewardRepresents an incentive program, such as a prize draw, gift voucher, or points bucket, that an organisation runs for its members.
RewardCategoryA grouping that rewards can be filed under so a rewards catalogue can be browsed by category, for example Travel or Electronics.
RewardEntryA single incentive awarded to a person, such as a gift voucher issued or an entry into a prize draw.
RewardQuizSubmissionOne profile's submission of the quiz attached to a reward, holding every attempt they made at that quiz.
SalesDataRecordRepresents a single row of sales performance data recorded against a sales data series, covering one participant and one reporting period.
SalesDataSeriesDefinition of a recurring set of sales figures collected from participants, such as monthly revenue per dealer.
SalesDataSeriesCategoryA grouping for sales data series, used to organise an account's series into sections in reporting and admin screens.
ScheduledEmailA recurring email job which sends itself again at a fixed frequency, such as a weekly digest or a monthly statement.
ScheduledEmailResultRecords one execution of a scheduled email, from the moment the run started to the moment it finished.
SiteVisitorLinks a browser tracking id to the profile it belongs to, so anonymous visits can be attributed once the visitor is known.
SmsItemOne outbound SMS message: who it is going to, what it says, and how far the SMS provider has got with sending it.
SmsReplyItemAn inbound SMS received in reply to a message Kademi sent, linked back to the SmsItem that was sent out.
SmsSendAttemptRecords one attempt to hand an SMS message to the SMS provider, together with the status the provider gave back.
SocialInteractionA single action taken on a social media post, such as a like, comment or share, imported into Kademi so it can be attributed to a profile.
SocialPosterSettingEnables one social network as a posting destination for an organisation and records how to post to it.
SoftwareProductA licensable piece of software that people can register against, defining how long a licence lasts and which profile properties are written into the g...
SoftwareRegistrationRecords that a person has been issued a licence for a software product, and holds the licence text that was generated for them.
SubordinateRepresents a Profile which is a subordinate to an organisation.
SubOrgRepresents an organisation which is subordinate to another.
SyncStatusTracks the synchronisation state of one object shared between Kademi and an external system, so an integration can tell what has already been synced a...
TaskAn item of work for a person or team to do, such as following up a lead, running a project step or completing a funnel action.
TimesheetBatchGroups the TimesheetEntry rows a member worked over a period into a single unit that is submitted and approved together.
TimesheetEntryRecords a block of time worked by a profile on a given day, optionally against a lead, a task or a free text label.
TranslationHolds the translated text for one field of one source record in one language.
TriggerTimerA pending delayed firing of an EmailTrigger, created when a trigger with the create-timer action runs and due to fire once its delay has elapsed.
VersionRecords one saved version of a content resource, linking it to the version that came before it.
VoteOne member's vote on a post, comment or forum reply, recording who voted, when, and by how much.
VoucherA single issued voucher, such as a gift card, discount code or entitlement, belonging to one voucher type.
VoucherStatusChangeOne step in a voucher's life, recording that it moved to a given status, when, by whom and from which IP address.
VoucherTypeDefines a kind of voucher an organisation issues, and acts as the template every individual Voucher of that kind is created from.
WebsiteA website served by Kademi, holding the DNS name it answers to and, as a Repository, the versioned content it publishes.

Debugging

NameDescription
CacheStoreStatsAccumulates cache miss counts and total lookup duration recorded during a single operation, for a blob store or hash store cache.
DebugSessionConfiguration and state for one tenant's debug session, a short-lived capture of matching web requests and/or async tasks.
DebugSessionInfoSummary information for a debug session, active or closed, used to list a tenant's sessions without loading their full captured operations and logs.
DebugSessionsImmutable, XML-persisted registry of all currently active debug sessions across every tenant on this server instance.
JobOperationStartedDetailsCaptured details of a single asynchronous job or other background task recorded by an active debug session.
LlmInferenceStatsCollects the LLM inference calls made during a single operation, for display in a debug session.
OperationDetailsHolds the captured details of a single operation - a web request, an asynchronous job, or another background task - recorded by an active debug sessio...
WebOperationStartedDetailsCaptured details of a single HTTP request recorded by an active debug session, including the requested URL, method, parameters and headers, and any au...

E-commerce

NameDescription
AbstractCheckoutRuleContextBase context passed to a checkout rule's JavaScript functions, carrying the rule, cart, purchaser and store that the function is operating on.
AbstractShippingProviderBase class for shipping providers, holding the common configuration and cost/weight calculations that concrete providers build on.
CheckItemsCheckoutRuleContextContext passed to a checkout rule's check-items function, giving it the cart's current line items, available and activated promotions, and a builder f...
CheckoutRulesSerialisable settings bean holding the set of custom checkout rules configured for a store.
CustomCheckoutRuleConfigured instance of a custom checkout rule, pairing a CheckoutRuleType with the parameters and title an admin has set up for it in a store's checko...
DefaultShippingProviderDefault shipping provider implementation, calculating freight from a combination of a fixed per-cart cost, a fixed per-item cost, and per-item weight...
DefaultTaxCalcProviderDefault tax calculation provider, looking up a tax rate by the sale's country with a configurable fallback rate.
ExpressionShippingProviderA shipping provider that calculates freight by evaluating an MVEL expression against the weight and quantity of each cart line, giving administrators...
PricingConfigurationHolds the store-level pricing settings for an e-commerce store: currency, shipping and tax providers, points bucket names, inventory control, promotio...
ProcessCheckoutRuleContextContext passed to a checkout rule's process-checkout function when a matching line item is committed, giving it the line item to commit or adjust.
PromotionalAvailabilityLinks a product category to a promotion, defining a window in which that promotion is available to products in that category.

IDP Rules

Actions

NameDescription
AbortRequestIDPActionTerminal IDP action that stops rule processing and rejects the current request or email outright.
AccessBlockIDPActionIDP action that places a temporary access block on the current user, or, on a failed login attempt, on the username that was attempted, preventing fur...
AddKnownIpIDPActionIDP action that adds the client's IP address to a named known-IP list, for other rules to later test membership of.
ContinueIDPActionTerminal IDP action that accepts the current request and stops evaluating any further IDP rules, effectively whitelisting it for this pass.
LogRequestIDPActionWrites the matched request to the IDP log, either as a compact single line or as full detail including headers and parameters, without granting or den...
MultiIDPActionIDP action that runs a list of child actions in order, for combining several side effects or checks into one action slot on a rule.
NotifyAdminIDPActionIDP action that queues a notification to the account's administrators, for alerting on suspicious or noteworthy requests without blocking them.
ResponseBodyIDPActionWrites a fixed response body straight to the client and sends it immediately, for use as a terminal IDP action such as a maintenance page or a custom...
ResponseCodeIDPActionSets the HTTP response status returned to the client, as either one of the standard named statuses or an arbitrary numeric code for cases the standard...
SaveToDataSeriesIDPActionRecords matching requests into a Kademi data series for reporting, using a configured field mapping to pull values from the request (eg remote IP, URL...
SetHeaderIDPActionSets a response header to a fixed configured value.
TelemetryIDPActionPushes an account telemetry event via IDPManager.pushTelemetry when a rule matches.

HTTP Expressions

NameDescription
AndIDPExpressionBoolean IDP condition that is true only when every one of its child expressions evaluates to true.
CompareIDPExpressionBoolean IDP condition that compares the values of two child expressions using a configured comparator (less than, less-or-equal, equal, greater-or-equ...
ConstIDPExpressionWraps a fixed literal value as an IDP expression, so a constant such as a threshold number or an expected string can be used as one side of a CompareI...
DateRangeIDPExpressionReturns true while the current time is inside the given range, so a rule can be scheduled and stop applying on its own once the range has passed.
DynamicPathIDPExpressionBoolean IDP condition that matches when the current request's path starts with one of the dynamic path prefixes registered for a given path type by th...
FormParamIDPExpressionMatches on form parameter values
GeoLocationIDPExpressionTests whether the client's IP address geolocates to one of a configured list of country codes, for use as a condition in IDP rules that block or flag...
GroupMembershipExpressionTests whether the current user is a member of one of a configured list of groups, for use as a condition in IDP rules that restrict or vary access by...
HeaderIDPExpressionTests a request header's value against a regular expression, for use as a condition in IDP rules that react to specific header values such as a user a...
HostIDPExpressionTests whether the requested Host header matches a configured host name, for use as a condition in IDP rules that apply only to a specific domain.
KnownIpIDPExpressionTests whether the client's IP address is a member of a named known-IP list, for use as a condition in IDP rules such as allow-listing or block-listing...
KnownIpRangesIDPExpressionTests whether the client's IP address falls within one of a configured list of CIDR ranges, for use as a condition in IDP rules that allow or block tr...
KnownIpsIDPExpressionReturns true if the request IP is in the named known-IP list, or matches one of the given singular IPs, or falls inside one of the given CIDR ranges.
LookupMetricIDPExpressionIDP condition that looks up the current value of a named metric defined on the policy's Metrics tab, for use as one side of a CompareIDPExpression or...
MethodIDPExpressionIDP condition that is true when the request's HTTP method exactly matches a configured method name, eg POST.
MetricBasedLimiterIDPExpressionIDP condition that enforces a rate limit which scales with another metric, rejecting requests once a counting metric exceeds a rate that is linearly i...
NotIDPExpressionIDP condition that negates a single child condition, evaluating to true exactly when the wrapped expression is false.
OrIDPExpressionBoolean IDP condition that is true when at least one of its child expressions evaluates to true.
PathIDPExpressionIDP condition that matches the request path against any combination of a prefix list, a suffix list and a contained-text list, optionally restricted t...
PropertyIDPExpressionIDP condition that reads a single named value from the current request, for use as one side of a CompareIDPExpression or similar comparison.
SourceIpIDPExpressionBoolean IDP rule condition that matches when the client's IP address starts with a configured prefix, eg to match a subnet such as "10.0.".
ValidCsrfTokenIDPExpressionBoolean IDP rule condition that checks whether the request carries a valid CSRF token in the K-CSRF header.
WebsiteIpWhitelistIDPExpressionReturns true when the requested host and the client IP match a website IP whitelist that is active right now.

Metrics

NameDescription
AverageResponseTimeMetricTracks the average response time in milliseconds for requests to the same URL over a rolling time window, for use as a condition in IDP rules that rea...
FraudScoreIDPMetricExposes recent fraud scores to IDP so an account can escalate beyond Kademi's own built-in response to a high fraud score.
LoginsMetricIDP metric that counts failed or successful login attempts per user within a rolling time window, for use as a condition in brute-force and account-ab...
RequestCountMetricCounts requests to the same URL over a rolling time window, for use as a condition in IDP rate-limiting and abuse-detection rules.
RequestMatchMetricWraps another metric and only invokes it for requests that match a configured path and/or HTTP method, letting a general-purpose metric such as a stat...
StatusCodeMetricCounts responses whose HTTP status is in a configured set, over a rolling time window, for use as a condition in IDP rules such as detecting a burst o...

Other

NameDescription
IDPContentAccessConfigures whether content under a path is specifically included in or excluded from the content viewing role, optionally restricted to particular gro...

Integrations

NameDescription
EndPointMappingConfiguration for one inbound or outbound integration endpoint, matching an address pattern to the pipeline that processes it.

Journeys

Events

NameDescription
AuctionBidEventFired whenever a bid is processed on an auction, covering both a brand new bid and a change in who is leading.
AuctionClosedEventFired when an auction closes, once for the outcome and again for every bidder who did not win.
ContactFormSubmittedFunnelEventFired after a contact form or landing page submission has been saved, carrying the resulting contact request.
CredentialSetFunnelEventFired when a new website credential, a password, e-signature or two-factor secret key, is created for a profile.
CredentialUpdatedEventFired when a profile's credential is created or changed, covering both passwords (raised from PasswordManager) and signatures (raised from UserManager...
EmailDeliveryFunnelEventWraps a platform EmailDeliveryEvent as a FunnelEvent so an email being delivered, failing, opened or converted can drive a marketing funnel.
EmailSendFunnelEventWraps the creation of an outgoing email item as a FunnelEvent so a marketing funnel can react to an email being sent.
FileUploadEventFired whenever a resource is uploaded to a website via a WebDAV PUT, so automation triggers configured with a "fileUploadTrigger" can react to the new...
FormSubmittedEventFired when a lead submits the form on a funnel form node, identifying which lead and which form node the submission belongs to.
ForumTopicCreatedEventFired via FunnelManager when a new forum topic (question) is created, carrying the organisation the forum belongs to and the forum post that was just...
GoFunnelEventFired manually to release a lead that is waiting at a StopGoGoal node, letting the journey continue past the stop/go gate.
KademiSubscriptionEventFired when a Kademi platform subscription changes state - started, payment due, payment failed, payment succeeded or expired.
LeadClosedEventFired when a lead is closed, either because it completed or because it was cancelled.
LeadCreatedEventFired when a new lead is created.
LeadEndedEventFired when a lead is ended, either because it completed or because it was cancelled.
LeadUpdatedEventFired when a funnel lead has been changed, after its lead scores have been recalculated, so listeners can react and search indexes can be updated.
LoginEventFired when a profile has passed authentication but before the login is finalised, giving listeners a chance to veto it.
ModuleProgressEventFired when a learner's progress on a learning module changes, for example starting, completing, saving, languishing without completion, renewing, expi...
NewCommentEventFired when a comment or forum reply is posted on a website, identified by the event id "newComment".
PageHitFunnelEventFired when a page or other resource within a website is requested, so a funnel can advance a lead based on the pages a visitor views.
ProfileUpdatedEventFired when a profile is created, updated or effectively removed from an organisation, so the search index and any listening funnel journeys can react.
QuoteAcceptedEventFired when a quote is accepted, either directly or as part of accepting a proposal.
QuoteRejectedEventFired when a quote is rejected by its customer.
QuoteSentEventFired when a quote is sent to its customer.
RecognitionCloseToLevelEventFired when a participant gets close to the next recognition level and the settle period elapses without them reaching it or dropping back.
RecognitionEventFired when a RecognitionAward is made, ie a participant reaches a recognition level or otherwise earns points.
RecognitionLevelAchievedEventFired when a participant's achieved recognition level has settled, ie the settle period elapsed and they are still at a level.
RecognitionLostEventFired when an award is lost, eg when a user goes down a level.
ReferralEventFired at each step of a referral's lifecycle: when it is sent, and again when it converts to a signup.
RepoAppFunnelEventA funnel event fired by a marketplace app's own custom code to signal that something app-specific happened to a lead.
RewardDebitedFunnelEventFans out a RewardDebitedEvent to a single profile associated with the debited entity, for funnel processing.
RewardGrantedFunnelEventFans out a RewardGrantedEvent to a single profile associated with the awarded entity, for funnel processing.
SalesDataRecodFunnelEventFired whenever a sales data record is created, updated or deleted, so funnels can react to sales activity.
SalesRecordCreatedFunnelEventFired when a new sales data record is created, so funnels can react to fresh sales activity.
ScanJobEventFired by OCRManager when a document scan submitted to the OCR service completes or fails.
ShoppingCartFulfillmentStatusEventFired when a cart's fulfilment status changes, eg to shipped or delivered.
ShoppingCartFunnelEventAdapts a platform-wide shopping cart event, such as an item added to cart, checkout completed or payment pending, into the funnels engine's event mode...
SmsDeliveryFunnelEventWraps an SMS item and its delivery status, sent to provider, delivered to handset, or failed, as a funnel event so it can be matched against SmsResult...
SocialInteractionEventFunnel event fired when a profile performs a social interaction, such as liking, commenting on or sharing a social post.
SubscriptionFunnelEventWraps a SubscriptionEvent as a FunnelEvent so a group membership change (subscribed, accepted, rejected, pending, removed, lapsed, payment overdue or...
TaskCompleteFunnelEventFired when a lead management Task is completed, so funnel goals such as TaskCompleteGoal and TaskGoal can advance a lead through a funnel based on whi...
UserVisitEventFired when a profile makes its first request to a website since at least 24 hours after their previous visit.
VotedEventFired when a profile casts a vote on a post or comment.
VoteReceivedEventFired when a profile receives a vote on their post or comment.
VoucherFunnelEventWraps a voucher lifecycle change as a FunnelEvent, so a funnel can be driven by a voucher being issued to a profile or changing state (for example bei...

Triggers

NameDescription
AuctionBidFunnelTriggerFires when an auction bid is placed or the lead's bid is outbid, matching against a specific action and an optional website.
AuctionClosedFunnelTriggerFires when an auction closes, matching against a specific close action and an optional website.
CommentFunnelTriggerA funnel trigger fired when a lead posts a comment, forum post, or reply on the site, optionally scoped to a specific website and to a range of the le...
ContactFormFunnelTriggerA funnel trigger fired when a lead submits a contact form, optionally scoped to a specific website and to a specific contact form path.
CredentialDisabledFunnelTriggerA funnel trigger fired when a profile's password or e-signature credential is disabled, optionally scoped to one credential type.
CredentialUpdatedFunnelTriggerA funnel trigger fired when a profile's password or e-signature credential is updated, optionally scoped to one credential type.
DateFilterFunnelTriggerA funnel trigger that wraps another trigger and rate-limits how often it is allowed to activate for the same lead within a rolling window of days.
FileUploadFunnelTriggerFunnel trigger that fires when a file is uploaded to a website, optionally filtered by website name and by matching the uploaded resource's path.
ModuleFunnelTriggerFunnel trigger that fires on elearning module progress events, optionally filtered by website and by program, course or module code.
OneShotFunnelTriggerFunnel trigger that wraps another trigger and restricts it to firing at most once per lead, or optionally once per item for that lead.
PageViewedFunnelTriggerFunnel automation trigger that fires when a page matching a configured path, website and resource type is viewed.
ProfileUpdatedFunnelTriggerFunnel automation trigger that fires when a profile's details are updated, optionally filtered by website and by whether the profile now has a photo a...
RecognitionCloseToLevelFunnelTriggerAutomation trigger which fires when a participant gets close to (but has not yet reached) a recognition level.
RecognitionFunnelTriggerFunnel automation trigger that fires when a recognition award (such as a badge or level) matching a configured recognition name and topic is granted,...
RecognitionLevelAchievedFunnelTriggerAutomation trigger which fires when a participant's achieved recognition level has settled.
RecognitionLostFunnelTriggerAutomation trigger that fires when a profile or organisation loses a recognition award, such as when a level or badge tier drops.
RepoAppFunnelTriggerAutomation trigger that delegates its matching behaviour to a custom trigger type registered by a marketplace app, via FunnelTriggerTypeBuilder.
RewardGrantedFunnelTriggerAutomation trigger that fires when points are granted into a specific points bucket, matched on a RewardGrantedEvent or RewardGrantedFunnelEvent.
SalesRecordCreatedFunnelTriggerAutomation trigger that fires when a sales record is created in a specific sales data series, identified by series name.
ShoppingCartFunnelTriggerFunnel trigger fired when a shopping cart event occurs on a website, matched against one of three configured actions: item added to cart, payment pend...
UserVisitFunnelTriggerFunnel trigger fired when a lead visits a website, optionally scoped to a specific website by name.
VotesFunnelTriggerFunnel trigger fired when a lead makes or receives a vote (for example on a forum post), optionally scoped to a specific website and to a range of the...

Trigger Types

NameDescription
AuctionBidFunnelTriggerTypeFunnelTriggerType descriptor that registers the "Auction bid" trigger with the automation engine.
AuctionClosedFunnelTriggerTypeFunnelTriggerType descriptor that registers the "Auction closed" trigger with the automation engine.
CommentFunnelTriggerTypeDescribes the comment funnel trigger for the funnel automation admin UI and builds new instances of it from submitted form data.
ContactFormFunnelTriggerTypeDescribes the contact form funnel trigger for the funnel automation admin UI and builds new instances of it from submitted form data.
CredentialDisabledFunnelTriggerTypeDescribes the credential disabled funnel trigger for the funnel automation admin UI and builds new instances of it from submitted form data.
CredentialUpdatedFunnelTriggerTypeDescribes the credential updated funnel trigger for the funnel automation admin UI and builds new instances of it from submitted form data.
DateFilterFunnelTriggerTypeDescribes the date filter funnel trigger for the funnel automation admin UI and builds new instances of it from submitted form data.
FileUploadFunnelTriggerTypeRegisters the "fileUploadTrigger" funnel trigger type, letting a funnel automation be configured to fire when a file is uploaded to a website.
ModuleFunnelTriggerTypeRegisters the "moduleTrigger" funnel trigger type, letting a funnel automation be configured to fire on elearning module progress events.
OneShotFunnelTriggerTypeRegisters the "oneShotTrigger" funnel trigger type, letting a funnel automation be configured to restrict another trigger to firing at most once per u...
PageViewedFunnelTriggerTypeRegisters the "page viewed" trigger type, describing it to the journey automation editor and constructing a PageViewedFunnelTrigger from submitted for...
ProfileUpdatedFunnelTriggerTypeRegisters the "profile updated" trigger type, describing it to the journey automation editor and constructing a ProfileUpdatedFunnelTrigger from submi...
RecognitionCloseToLevelFunnelTriggerTypeRegisters the "recognition close to level" trigger type, describing it to the journey automation editor and constructing a RecognitionCloseToLevelFunn...
RecognitionFunnelTriggerTypeRegisters the "recognition awarded" trigger type, describing it to the journey automation editor and constructing a RecognitionFunnelTrigger from subm...
RecognitionLevelAchievedFunnelTriggerTypeRegisters the "recognition level achieved (settled)" trigger type, describing it to the journey automation editor and constructing a RecognitionLevelA...
RecognitionLostFunnelTriggerTypeRegisters the "recognition lost" trigger type in the automation trigger catalogue, providing its id, display title and description and constructing ne...
RepoAppFunnelTriggerTypeRuntime representation of a custom automation trigger type contributed by a marketplace app, built by FunnelTriggerTypeBuilder.build() when the app's...
RewardGrantedFunnelTriggerTypeRegisters the "reward granted" trigger type in the automation trigger catalogue, providing its id, display title and description and constructing new...
SalesRecordCreatedFunnelTriggerTypeRegisters the "sales record created" trigger type in the automation trigger catalogue, providing its id, display title and description and constructin...
ShoppingCartFunnelTriggerTypeDescribes the shopping cart funnel trigger for the funnel automation admin UI and builds new instances of it from submitted form data.
UserVisitFunnelTriggerTypeDescribes the user-visit funnel trigger for the funnel automation admin UI and builds new instances of it from submitted form data.
VotesFunnelTriggerTypeDescribes the votes funnel trigger for the funnel automation admin UI and builds new instances of it from submitted form data.

Actions

NameDescription
ActivateAlertFunnelActionFunnel automation action that activates or acknowledges an Alert on the profile of the lead that triggered the automation.
BadgeAwardFunnelActionFunnel automation action that awards a recognition badge to the lead associated with the triggering event.
BadgeRevokeFunnelActionFunnel automation action that revokes a previously awarded recognition badge from the lead associated with the triggering event.
DebitPointsFunnelActionFunnel action that debits a number of points from a profile's or organisation's balance in a named points bucket.
GrantRewardsFunnelActionFunnel action that awards a fixed or dynamically calculated number of points to a profile or organisation in a named points bucket.
RepoAppFunnelActionAutomation action that delegates its behaviour to a custom action type registered by a marketplace app, via FunnelActionTypeBuilder.
SendEmailFunnelActionFunnel action that sends the email associated with a SendEmailGoalAction journey node when a funnel automation fires.

Action Types

NameDescription
ActivateAlertFunnelActionTypeFunnelActionType descriptor that registers the "Activate alert" action with the automation engine.
BadgeAwardFunnelActionTypeFunnelActionType descriptor that registers the "Badge award" action with the automation engine.
BadgeRevokeFunnelActionTypeFunnelActionType descriptor that registers the "Revoke Badge award" action with the automation engine.
DebitPointsFunnelActionTypeRegisters the "debitPoints" funnel action type, letting a funnel automation be configured to debit points from a user.
GrantRewardsFunnelActionTypeRegisters the "grantRewards" funnel action type, letting a funnel automation be configured to award points to a user.
RepoAppFunnelActionTypeRuntime representation of a custom automation action type contributed by a marketplace app, built by FunnelActionTypeBuilder.build() when the app's co...
SendEmailFunnelActionTypeDescribes the send-email funnel action for the funnel automation admin UI and builds new instances of it from submitted form data.

Nodes

NameDescription
BeginEntry node of a journey funnel, from which a lead's path through the funnel starts.

Goals

NameDescription
AcceptQuoteGoalJourney goal that is achieved when a quote linked to the lead is accepted.
ActivateAlertActionJourney action that activates or acknowledges an alert on the lead's profile.
AddToGroupGoalActionJourney action that adds the lead's profile to one or more groups.
AddToOrgTypeGoalActionJourney action that adds an organisation type to an organisation associated with the lead's profile.
AllocateVoucherGoalActionJourney action that allocates one voucher of a configured type to a profile.
AssignToGoalActionJourney action that assigns a lead's group, team and/or handling profile from literal values or evaluated expressions.
AttachLeadFileGoalActionJourney action that attaches one or more files to the lead.
AuctionBidGoalJourney goal that is achieved when a bid is placed on, or an outbid occurs against, an auction.
BranchGoalA goal which is linked to multiple other goals.
CancelGoalActionFunnel action that cancels the lead's run through the funnel when the journey enters this node.
ContactFormGoalFunnel trigger that matches when a lead submits a contact form or landing page identified by contactFormPath.
CopyLeadFileGoalActionFunnel action that copies an existing lead file to a new file, evaluating the source and target file names via MVEL or using them literally.
CreateCalendarEventGoalActionFunnel action that creates a calendar event for the lead, optionally scheduling a reminder email ahead of it.
CreateDataSeriesRecordGoalActionFunnel action that records a new data point against a named sales data series, evaluating the amount and date from configured expressions.
CreateNoteGoalActionFunnel action that creates a note on the lead from a rendered MVEL template.
CreateTaskGoalActionFunnel action that creates a task for the lead, either from a configured TaskDef or, in legacy mode, as a freestanding task with its own due date and...
CredentialSetGoalJourney goal that is achieved when a lead's website credential, a password or an e-signature, is created or disabled.
DataSeriesValueGoalJourney goal that is achieved when a sales data record pushes a named data series' running total, summed for the profile that made the sale, past a co...
DebitPointsGoalActionJourney action that debits reward points from a lead's associated recipient when the goal is entered.
EmailInteractionGoalJourney goal that branches based on how a lead interacted with the last email sent to them through this funnel.
EmailResultGoalJourney goal that branches based on the delivery result of the last email sent to a lead through this funnel.
EmailSendGoalJourney goal that is achieved when the funnel sends an email whose subject matches a configured pattern, regardless of whether that email is later del...
EndGoalActionTerminal action node ("end") that closes or cancels the lead when the journey reaches it.
ForkGoalActionAction node ("fork") that splits a lead's journey into parallel branches.
FormGoalJourney goal achieved when the lead submits the form at this node.
GrantRewardsGoalActionA journey action that awards reward points from a named points bucket when a lead reaches this node.
GroupGoalWaits for a profile's membership status in a named group to change, and branches the journey to a different next node depending on whether the change...
KademiSubscriptionGoalMatches on a Kademi platform subscription changing state - started, entering its payment-due window, a failed or successful payment, or expiry - and t...
LeadUpdatedGoalA funnel goal that is attained when a lead's stage is set to one of a configured list of stage names.
ModuleExpiryGoalA funnel goal that is attained when a learning module a lead is enrolled in expires, or enters its renewal window.
ModuleProgressGoalA funnel goal that is attained when a lead's progress on a learning module matches a configured action, such as starting, completing or renewing.
OrderStatusGoalA funnel goal that is attained when a shopping cart's fulfilment status changes to a configured value.
OtherJourneyProgressGoalA funnel goal that is attained when another lead, in a specified funnel, is created or closed for the same assigned profile.
PageViewedGoalA funnel goal that is attained when a page matching a configured path pattern is viewed on a configured website.
PointsTransactionAddedGoalA funnel goal that is attained when a points reward is credited to, or debited from, a profile.
PointsValueReachedGoalA funnel goal that is achieved when a lead's points balance in a named rewards bucket reaches a configured threshold.
ProcessMembershipGoalActionA funnel action that approves or rejects all of a lead's pending group membership applications when the node is entered.
ProfileUpdatedGoalA funnel goal that is achieved when a lead's profile is updated while it belongs to a configured group.
PromotionEntryGoalA funnel goal that is achieved when a lead is granted a promotion/reward entry matching a configured name and status.
ReferralSentGoalJourney goal that is achieved when a referral is sent.
ReferralSignupGoalJourney goal that is achieved when a referral converts to a signup.
RemoveFromGroupGoalActionA funnel action that removes a lead's profile from a named group when the node is entered.
RemoveOrgTypeGoalActionA funnel action that removes an organisation type from an organisation associated with the lead when the node is entered.
RemoveProfileGoalActionA funnel action that removes or disables a lead's profile, or removes it from a single group, when the node is entered.
RepoAppActionA funnel action that lets a marketplace app supply its own custom logic to run when the node is entered.
RepoAppEventGoalA funnel goal that lets a marketplace app supply its own custom matching logic for when the node is achieved.
SalesRecordCreatedGoalGoal that matches when a sales record is created in a configured data series, optionally requiring up to three custom field values to also match.
SendEmailGoalActionFunnel action that sends an email to a lead's profile, or another resolved recipient, using content read from a repository file or resolved from an as...
SendSmsActionFunnel action that sends an SMS message, via a configured SMS provider, to the lead's profile or another resolved recipient.
SentQuoteGoalGoal that matches when a quote has been sent to the lead, optionally attaching a PDF copy of the quote to the lead on entry.
SetFieldGoalActionFunnel action that sets one or more custom field values on a lead when it enters the node.
SetSourceLeadGoalActionJourney action that records which lead this one was spawned from, by evaluating an MVEL expression to a lead id and storing the referenced lead as thi...
ShoppingCartGoalJourney goal that advances a lead when a shopping cart or auction event occurs: an item is added to cart, checkout completes, payment goes pending, or...
SmsResultGoalJourney goal that advances a lead based on an SMS's delivery status: sent to the provider, delivered to the handset, or failed to send.
SocialInteractionGoalJourney goal that advances a lead when a social interaction event occurs, such as a like, comment or share.
StartAndWaitFunnelGoalJourney goal that starts a lead in another funnel and pauses this journey until that started lead ends.
StartFunnelGoalActionJourney action that starts a new lead in another funnel when this node is entered, without waiting for it to finish.
StopGoGoalJourney goal that halts a lead at a manual gate until an admin explicitly releases it with the "go" action.
TaskCompleteGoalFunnel goal attained when a lead completes one or more tasks, matched either by legacy task name or by the modern matchTaskName, matchTaskCategory or...
TaskGoalFunnel goal that creates a Task when a lead reaches it, then waits for a TaskCompleteFunnelEvent naming a matching outcome before advancing to that ou...
TaskReminderDefConfigures a reminder that fires a set time before a task's due date, computed as periodMultiples frequency units subtracted from the due date, with a...
TimerGoalFunnel wait node that delays a lead for a configured period before advancing to timeoutNode, using the timeout fields inherited from Goal (timeoutMult...
UserVisitGoalFunnel goal attained when a profile visits a site, optionally restricted to profiles who are a member of a configured group.
VoucherStateGoalGoal that advances a funnel lead when a voucher of a matching type is issued, or changes to a configured status.

Other

NameDescription
CustomerActionA configurable, suggested activity type for logging contact with a lead, such as a call or an email.
DecisionActionJourney action that branches a lead to a different next node based on the first matching rule expression.
FunnelConfiguration and runtime graph for a sales/marketing journey: the set of stages, journey nodes (goals and actions), scoring, automations, exports and...
FunnelTagA tag or category label attached to a Funnel, used to organise and filter funnels in listing and search screens.
LeadRoleDefDefines a role a participant can fill on a Lead, in addition to the fixed system roles implied by Lead's own profile/organisation/assignedToOrg/assign...
NumericTaskOutcomeFieldValidationValidates that a lead field's value is a number within an optional minimum and maximum.
StageRepresents one named step in a funnel's sequential lead-progression pipeline, for example cold, then warm, then hot.
StringTaskOutcomeFieldValidationValidates that a lead field's value is a string within an optional minimum and maximum length.
TaskDefConfiguration for one task a funnel creates on a lead, defining when it becomes due, who it is assigned to, and its title and description templates.
TaskOutcomeOne possible completion outcome for a TaskGoal's task: which lead fields are collected, which validation rules must pass, and which funnel node to adv...
TestSplitActionRandomly splits leads between two funnel branches for A/B testing, sending a configurable percentage down the test branch and the rest down the normal...

Managers

NameDescription
AccountManagerManages the lifecycle of a Kademi account (organisation): creation, admin domain and URL resolution, and moving an account between parent organisation...
AgentManagerOwns AI agent definitions and the Agent instances, timers and event handlers built from them.
AgentMemoryManagerWhat an agent has learned about the person it works for, exposed to scripts as services.agentMemoryManager.
AgentOrchestratorManagerThe JS-facing entry point to the Java agent orchestrator, exposed as services.agentOrchestratorManager.
AlertsManagerManages dashboard alerts - short messages shown to users in an organisation, optionally targeted by group or organisation type, with a start date and...
AnomalyManagerThe anomaly detection service, as scripts see it.
ApplicationsRead-only, JS-facing view of the applications currently active for the current tenant, exposed as the applications variable.
ApplicationServicesRegistry of named platform services, exposed to templates and scripts as the "services" variable and reachable from Java code via the root context.
AssetManagerCentral manager for content assets - images, videos, binary files, text snippets, content items and saved queries.
AsyncJobManagerManages the lifecycle of background AsyncJob tasks across the platform: submitting new JS and map/reduce jobs to the queue, finding and searching exis...
AuctionManagerCreates, updates and queries auctions and auction bids for the current organisation.
AuditManagerOwns audit trail lookups and record restoration for the current tenant.
AwsJsManagerExposes AWS-backed website features to server-side JS, registered as the awsManager service.
BarcodeManagerGenerates barcode images, currently limited to QR codes, for embedding in emails, pages and authenticator enrolment flows.
BlogManagerOwns blog and blog article content: creating blogs and articles, managing their category/tag/audience taxonomy, the publish/unpublish workflow, and co...
CalendarManagerManages calendars and calendar events, including creating, copying and moving events and building their iCalendar representation.
CaptchaManagerProvides captcha verification to GraalJS controller code, reached from JS as the registered captcha manager.
CartManagerManages shopping carts (Cart) and their checkout, covering cart creation and lookup, adding and removing line items, applying voucher and promotion co...
CatalogManagerManages the product catalogue for an account: products, SKUs, product parameters and their options, categories, ecommerce stores and inventory locatio...
ChartManagerRenders bar and line charts as PNG images using JFreeChart, and builds regression-based forecasts and anomaly detectors from time series data.
ComponentMetadataServiceProvides a structured settings schema for KEditor components, since neither the settings form nor the component's JS carries a declarative schema on i...
ContactFormServiceProcesses contact-us form submissions into persisted ContactRequest records: matches the submitting profile to an existing account or creates one, fil...
ControllerSecurityManagerProvides the security and profile-lookup operations available to app controller scripts, wrapping KademiSecurityManager for the currently running requ...
ConversationFileManagerWhole binary files that belong to an agent conversation, exposed to scripts as services.conversationFileManager.
CookieManagerApplies platform-wide security defaults to outgoing cookies before they are written to the response.
CounterManagerProvides access to named counters, a simple transactional counter mechanism scoped to the current admin organisation.
CryptoImplCryptography helper providing hashing, HMAC-style key derivation, symmetric encryption and Diffie-Hellman key exchange for templates and scripts.
DataSeriesManagerManages sales data series and the sales data records logged against them, and the points allocation sources that turn those records into reward points...
DateManagerV1Central date and time service for templates and GraalJS scripts, registered as the "dateManagerV1" application service and reachable in scripts via se...
DebugManagerManages debug sessions for the current tenant: short-lived captures of web requests, async tasks and their operation logs, used to diagnose problems i...
EmailManagerOwns creation, sending and tracking of EmailItems, and is reached from server-side JS as services.emailManager.
EntityLockManagerGrants short-lived, key-based locks so callers can serialise access to an entity or other resource, either within this server (local) or across the cl...
EventWrapperFires custom funnel goals and repository app trigger events from GraalJS, and hands out EventBuilder instances for assembling more complex trigger eve...
FileManagerUtility for reading and writing content-addressed files, and for parsing CSV, Excel, XML and PDF documents.
FileStorageManagerManages file content stored on a per-tenant basis in the local file system, keyed by directory and content name.
FormatterUtility helpers exposed to Velocity templates and server-side JavaScript as the formatter variable.
ForumManagerOwns forum, wall post and comment operations for the current organisation: creating and finding posts, forum questions and comments, voting, tagging,...
FraudLocationServiceWhere a profile has been seen before, from the web hit index.
FraudManagerFraud scoring, as scripts see it.
FtpManagerManages FTP and SFTP connections opened by app scripts, enforcing a per-tenant limit on concurrent connections.
FunnelManagerOwns the journey/funnel engine: creates and stores Funnel (journey) definitions, matches inbound platform events against a Funnel's entry points and g...
GeoManagerRequest-level and general-purpose geography helpers built on top of GeoIPService: resolving the current request's location, looking up an ISO country...
HttpPushManagerDispatches HTTP push notifications through a named HttpPushService implementation, defaulting to the service configured when this manager was created.
HttpWrapperGives app scripts access to the current HTTP request and response, and to reading and writing cookies.
ImageGenerationManagerManages AI image generation across registered image providers, giving app developers a single entry point to discover available models and request gen...
ImageManagerReads image metadata and generates thumbnails for uploaded content.
IntegrationManagerManages data integration endpoints and their pipelines for a website: email, HTTP, (S)FTP and upload-only endpoints that export or import data, plus t...
InvoiceManagerOwns invoices, quotes and payment lists for the current organisation: looks them up, counts them and starts new ones via builders.
JWTManagerCreates and parses JSON Web Tokens (JWTs) and JSON Web Keys (JWKs) for an account, and generates RSA key pairs for signing them.
KCriteriaBuildersRegistry of KCriteriaBuilder instances, one per persistent entity type, exposed to server-side JS and Velocity as services.criteriaBuilders for buildi...
KSearchResponseThe result of running a search, giving access to the matching hits, the total match count and any aggregations that were requested.
LeadManagerOwns the lifecycle of leads (Kademi's CRM/sales-pipeline records) and their related tasks, files, notes, products and participant role assignments.
LearningManagerOwns the learning domain for a website: enrolments, module status progress and completion, expiry, renewal, and completion actions such as certificate...
LlmManagerOwns access to language model inference for the current tenant, registered for GraalJS scripts as llmManager.
LogsManagerSearches and tails the current tenant's rolling server log files, backing the admin View Logs screen.
MarketPlaceManagerProvides marketplace browsing, install and enable operations for apps, libs, themes and recipes.
OCRManagerSubmits documents to the OCR service for scanning and dispatches ScanJobEvent when a scan completes or fails.
OrganisationManagerOwns the organisation (org) domain: creating, updating, deleting, searching and merging orgs, and managing the custom organisation types attached to t...
PathMatchOne file within a repository branch whose content contains the searched-for text, together with the line numbers it was found on.
PaymentManagerManages the lifecycle of quotes, invoices, purchase orders and other PaymentItemList records, including creation, cloning, status transitions and PDF...
PointsManagerManages loyalty points: creating points buckets, crediting and debiting balances, and calculating expiry and balance history.
PriceManagerCalculates prices for products, shipping and checkout in the e-commerce store, applying pricing rules, promotions and store-level configuration.
PricingRulesServiceManages ecommerce pricing rules: tiered pricing, promotional discounts, checkout rules and per-store shipping and tax configuration for a store's prod...
ProjectManagerManages projects, which are running instances of task recipes such as setup wizards or onboarding checklists, together with the tasks that make up the...
PromotionsManagerManages promotions and points buckets, both modelled by the Reward entity, plus reward categories and reward entries awarded to participants.
QueryManagerFacade for the reporting and metrics subsystem, covering saved queries, tables, metrics and the organisation and supplier filters used to scope a repo...
RecipeManagerOwns the lifecycle of app recipes: starting a recipe for a new account and progressing it as project tasks are completed.
RecognitionManagerOwns the recognition domain: topics, levels, badges, periods, awards, points allocations and nominations that make up Kademi's gamification and leader...
RecordMatchingManagerScans a SalesDataSeries for sets of records matching a RecordMatcher's configured type, and generates corresponding destination SalesDataRecords.
ReferralManagerOwns the referral and invitation domain: referral programs, invitations sent to prospective members, and the acceptance of those invitations into a gr...
RepoSearchManagerSearches for a literal string in the file content of repository branches, returning the paths and line numbers it was found on.
RepositoryManagerManages the hashsplit4j-backed content repositories used to store website, app and other branch-versioned file content across the platform.
ResultSetManagerLine-oriented storage for large tool result sets, exposed to scripts as services.resultSetManager.
SearchManagerOwns full-text search and search-index management for a tenant, backed by Elasticsearch.
SelectorManagerManages selector lists that scope things like reward eligibility and recognition nominations to a set of users, groups, organisations or org types.
SmsManagerSends SMS messages to profiles and tracks their delivery status, delegating the actual sending to whichever SMS provider app is installed and enabled...
SseManagerHigh-level API for sending Server-Sent Events (SSE) to clients connected to a repository app, without the caller needing to manage connections or mess...
TableUploadManagerOwns the table upload and spreadsheet import feature: saved spreadsheets, their analytics configuration, saved field mappings, and the registered befo...
TeamManagerResolves and manages sales and dealer teams: which organisation is the "team" for a given profile, which teams exist for the configured team organisat...
TemplatingManagerRegistered as the "templatingManager" service, reachable from Velocity templates and GraalJS as services.templatingManager.
TextFromHtmlServiceConverts HTML content into plain text, used to build search index text, plain-text email bodies and notification snippets from HTML pages, comments an...
TimesheetManagerManages timesheet entries and batches for the current organisation, allowing a worker to log hours against a lead or task and to submit a period's ent...
TokeniserManagerEncodes text into tokens, decodes tokens back into text, and counts tokens, delegating to the first registered TokeniserService.
TranslationServiceManages translations of user-facing content - products, page HTML, emails and UI labels - for the current organisation.
UserManagerManages profiles, groups and memberships for the current account, and is the main entry point for user administration from apps.
UserPrefsManagerPer user preferences: small, non-sensitive settings a user has chosen for themselves, such as which admin menu they want.
VectorSearchManagerOwns vector search indexing and querying for websites, delegating the actual work to a VectorSearchService.
VideoManagerTracks per-profile video playback position and completion status across the platform.
VoucherManagerOwns the voucher domain: creating voucher types and vouchers, allocating vouchers to profiles, redeeming them and tracking their status history.
WebFetchManagerRetrieves remote web pages and converts HTML to Markdown for AI/machine consumption, so callers get readable content and metadata instead of raw marku...
WebsiteManagerManages websites in the current account: creation, publishing, and branch and app lifecycle.

Pipelines

NameDescription
ColumnMaps a single input value onto a named field of a pipeline row, for use by database and file output steps.
NextSheetStepRoutes one sheet from the enclosing ExcelInputStep's workbook, identified by name or index, to a next step, either as a whole Sheet object or as indiv...
RowWriterLets a row-processing script forward a row of values to this step's next step.

Queries

NameDescription
ComparisonLookupTableFieldA match field that tests a numeric row value against a set of candidate values using a comparison operator (gt, gte, lt or lte), where the candidate v...
DataSeriesContentConfiguration for how the record-editing UI presents a single named sales data series, such as a promotion's sales records or a recognition topic's da...
DataSeriesFieldConfigConfiguration for a single custom field on a sales data series record-editing form, one entry within a DataSeriesContent's field list.
JsMetricTypeA MetricType whose calculation is delegated to a JS function, registered by an app through controllerMappings.newMetricTypeBuilder().
LookupTableBeanA CSV-backed lookup table used to resolve output values (for example, a recognition level) from a set of matching input criteria evaluated against a p...
MetricDefines a single measure shown in a dashboard, report or reward, combining a reference to a MetricType (which knows how to calculate the value) with t...
MetricCacheConfigCaching settings attached to a Metric, controlling how calculated values are bucketed by time period and whether the requested date range is honoured...
MetricPrecalcConfigConfiguration for pre-calculating a Metric's value ahead of time on a schedule, rather than computing it on demand.
OutputTableFieldA field which represents an output from the lookup process, that is, what is being looked up.
PersistedLookupTableFieldBase class for a lookup table field that is persisted as part of a lookup table definition, holding the field's name, type and the zero-based CSV colu...
ProductCategoryContentConfiguration for how the record-editing UI presents products within a named product category.
ProductCategoryFieldConfigConfiguration for a single custom field on a product category's record-editing form, one entry within a ProductCategoryContent's field list.
QueryServicePersists and runs a tenant's saved elastic search queries, reports, lookup tables and calculated metrics.
TermLookupTableFieldA match field that tests an exact value against the row, where the acceptable input values are supplied by evaluating a kcode expression.

Recipes

NameDescription
MultiNextRecipeStepA recipe step that fans out to several next steps at once, rather than a single successor.
ProjectRepresents one instance of a task recipe running for an organisation, such as a store setup wizard or an onboarding checklist, together with the param...
RecipeAn ordered set of stages and steps that an app declares to guide an account through configuring itself after setup.
RecipeStageA named, ordered group of steps within a Recipe, representing one phase of an account's setup checklist.
TaskRecipeStepA recipe step that creates a Task for the account admin to complete, optionally offering a choice of outcomes that each lead to a different next step.
TaskRecipeStepOutcomeOne possible outcome an admin can select when completing a TaskRecipeStep's task, carrying the next step to enter and the JS functions that drive its...

Recognition

NameDescription
JsRecognitionPointsRuleTypeA RecognitionPointsRuleType whose points calculation is implemented as a JS function, allowing apps to define custom points rules without adding Java...

Reports

NameDescription
AppReportDefines a single custom report registered by an app, produced either from a query table or from a JS function that writes the export content.

Resources

Resources

NameDescription
TemplatedHtmlPageA resource whose content is generated entirely by rendering a Velocity template, for pages that need nothing beyond a name, a parent and a template pa...

Other

NameDescription
AbstractManageAssetResourceServes the "manage" resource for a single asset in the asset manager, rendering its edit page and handling the update, delete and tagging form posts m...
AbstractResourceBase class for almost every resource type in the platform's WebDAV resource tree, providing shared behaviour for authentication, authorisation, lockin...
AssetsFolderServes the account-wide "assets" folder that holds every uploaded asset, providing upload, search and asset-delivery child lookup.
BlogArticleFolderRepresents a single article in a blog, exposed as both a webpage and a folder for the article's uploaded images and files.
BlogFolderRepresents a single blog as a content resource, appearing in the site tree as a folder whose children are the blog's articles.
CalendarFolderRepresents a single calendar as a CalDAV collection resource, listing its events as children and serving the calendar and event management pages for b...
CalEventResourceRepresents a single calendar event as a WebDAV resource under a CalendarFolder, ie an event invitation.
ControllerResourceServes the response for a single request matched against a ControllerMapping, running the mapping's JS handler function for the request method and ren...
CourseFolderRepresents a single course within a program: a directory resource whose children are the course's module folders.
DashboardAlertPageRepresents a single dashboard alert as a web resource, at "alert-{id}" under an organisation or website folder, and serves both the manage-alert admin...
DirectoryResourceA folder in the WebDAV / URL tree of a repository, backed by a directory node in the content-versioned repository snapshot.
FileResourceRepresents a file, such as an image, video, or HTML page, within a website or admin content branch.
JsonDatabaseFolderA single KongoDB database, exposed as a Milton folder resource whose children are the JSON documents it contains.
JsonDocumentResourceA single JSON document stored in a KongoDB database, exposed as both a Milton resource and a java.util.Map over its parsed JSON content so admin templ...
ManageJsonDatabaseFolderAdministration view of a single KongoDB database, extending the read-only JsonDatabaseFolder with the management actions available on the admin databa...
ModuleFolderRepresents a single learning module within a course, exposed as a WebDAV/HTTP resource nested under a CourseFolder.
OrganisationRootFolderRoot WebDAV and HTTP resource for one organisation's admin site, the entry point through which that organisation's users, websites and other admin-dom...
ProgramFolderRepresents a single learning program: a directory resource holding a set of course folders, plus enrolment and completion information for the current...
RootFolderCommon contract for the top-level resource that anchors an organisation or website branch to a domain, implemented by OrganisationRootFolder and Websi...
ShoppingCartFolderRenders the order-detail page for a single cart or order, appearing as a child of ShoppingCartsFolder at a URL such as /shopping-carts/{cartId}.
ShoppingCartItemResourceContract implemented by resources that can be purchased through the shopping cart, such as products.
UserResourceRepresents a single user account as a node in the WebDAV resource tree, served under a users folder such as /users/{userId}/.
VoucherPageMilton resource for a single voucher, reached as a child of its VoucherTypeFolder using the voucher's id.
WebResourceRepresents a single web resource declaration parsed out of the head of a theme or content template - typically a script, link or meta tag, or a raw HT...
WebsiteRootFolderRepresents the root of a website.

Rewards

NameDescription
JsPointsExpiryRuleTypeA PointsExpiryRuleType implemented in JS, configured per-account via the Queries repo's points-expiry-rules.xml.
JsPointsRuleTypeA PointsRuleType implemented in JS, configured per-account via the Queries repo's points-rules.xml.
JsRecordMatcherTypeA RecordMatcherType implemented in JS, configured per-account as a "record-matcher" element in the Queries repo's record-matchers.xml - lets an accoun...
JsVoucherExpiryRuleTypeA VoucherExpiryRuleType implemented in JS, configured per-account via the Queries repo's voucher-expiry-rules.xml.
PointStatementDefRoot of the XML document that configures the extra custom fields computed onto a reward's point statements.
PointStatementFieldDefDefines one custom field computed onto a reward's point statements, evaluated when a statement is generated.

Search

NameDescription
RecentQueryA single Elasticsearch query that was recently run against a tenant, kept in a rolling in-memory list so the admin debug UI can show what search traff...

Server Monitoring

NameDescription
ChildStopWatchPairs a nested stopwatch with the time it was registered as a child, relative to its parent.
CurrentOpTracks a single operation - an HTTP request or an async job - while it is running on this server, so it can be inspected and killed from the server mo...
KStopWatchHierarchical timer for measuring how long an operation takes, with nested child timers and named lap checkpoints.
LapA single named checkpoint recorded against a running stopwatch, together with the time it was recorded.
OpActionRecords what a running operation is currently doing, eg executing a SQL statement or an Elasticsearch call, so it can be inspected from the server mon...
OperationInfoIdentifying details of a running or completed operation - its type, source and item ID - used both while an operation is running (see CurrentOp) and a...
SimpleLogEventA simplified, read-only view of a log4j LogEvent, exposing just its formatted message and level.
StopWatchItemOne row of an aggregated stopwatch report: a name together with the number of times it occurred and the total duration accumulated across all occurren...

Subscriptions

NameDescription
UsageFactorDefines a single billable metric, such as profiles or emails sent, that subscription usage is measured and priced against.

Table Uploads

NameDescription
ActionHandlerConfigBeanConfiguration for a single table action handler attached to a field mapping, identifying the handler by id and carrying the free-form parameter values...
FieldMappingA saved, reusable column-to-field mapping for a TableUploader, letting a user re-run the same spreadsheet import without re-selecting which source col...

Views

NameDescription
BinaryViewWrites raw bytes to the response under a caller-chosen content type, from either a byte array or an input stream.
ContentEditorViewRenders the built-in Kademi content editor page, the rich editor used to edit a page's content in place.
ContentFileViewStreams a stored content item to the response, looked up by content name and an optional storage directory.
CsvViewRenders a list of rows as text/csv, converting each row's values to text with the current Formatter.
FileHashViewStreams a file that is stored as a content-addressed hash split across the blob store, reassembling it from its fanout of chunk hashes.
JsonViewRenders an object as JSON.
RedirectViewSends the browser to another URL instead of writing a response body.
RowsResultCsvViewRenders a table query result (RowsResult) as text/csv, delegating to QueryTableFolder's CSV writer.
SearchResponseViewWrites an Elasticsearch search response directly to the output stream as pretty-printed JSON.
TemplateViewRenders an HTML page from a Velocity template, using the current resource as the model.
TextTemplateViewRenders a Velocity template as plain text under a caller-chosen content type, for output such as CSV, XML, JSON or an email body.
TextViewRenders a fixed string of text as the response body, with an optional content type.
ViewsBuilderFactory for the View objects a controller returns to render a response, plus helpers for building JsonResult objects and throwing common HTTP error re...
ZipViewStreams a zip archive to the response, built on the fly by a content provider callback.
ZipViewHelperPassed to a ZipView's content provider callback to add entries to the archive currently being streamed.

Website Settings

NameDescription
AppSettingsBeanImmutable record of a single app's enabled state and settings within a website's WebsiteSettings, serialised as an "app" element in settings.xml.
WebsiteSettingsHolds a website's per-app settings and theme, loaded from the settings.xml file under WEB-INF in the website's repository and cached by WebsiteSetting...

Events

NameDescription
BeforeSignupEventFired while a registration is being processed, before the profile is created, so that an app can refuse it.
BeforeVoucherRedemptionEventFired while a voucher is being redeemed, before the status changes, so that an app can refuse it.
CalendarEventAcceptedFired when a profile accepts an invitation to a calendar event, raised from CalendarManager.accept once the attendee's participation status has been u...
CalendarEventDeclinedFired when a profile declines an invitation to a calendar event, raised from CalendarManager.decline once the attendee's participation status has been...
ContactEventFired when a user submits a contact-us form.
DefaultShareableItemEventDefault implementation of ShareableItemEvent, used by apps to report a user achievement worth posting to the social wall.
EmailDeliveryEventFired for a change in the delivery status of a single email: delivered, failed, opened, or a click converted to a goal.
EmailReceivedEventFired when a user receives an email, whether sent from within Kademi or via an inbound mail integration.
ExecuteAgentEventFired to hand one agent's pending work over to the JS layer for execution: a buffered set of matched events, a due timer, or a user-assigned task with...
FraudScoreEventFired every time an operation is scored for fraud at or above the watch threshold.
GroupRegistrationEventFired when a visitor successfully submits a group registration form, immediately after the group membership record has been created.
PaymentEventFired when a payment attempt finishes, whether for a one-off eWay purchase, an eWay recurring sign-up, or a scheduled recurring instalment retry.
PipelineProcessEventFired when an integration pipeline starts running, completes or fails, so apps can react to the outcome of a data import or export.
PointsExpiredEventFired when a batch of a profile's reward points expires because it has passed its expiry date.
PostTagReceivedEventFired when a profile is tagged in a forum post or comment.
ProfileActiveEventFired when a profile becomes associated with the current request without logging in, eg after submitting a contact form or checking out as a guest.
QueryTableExportEventFired when a report query table export job finishes writing its CSV output to content storage.
QuizAttemptEventFired when a learner submits an attempt at a quiz within a learning module, whether the attempt passed or failed.
RepositoryAppTriggerEventCarries the data for one firing of a repository app automation trigger, ready to be matched against configured triggers and used to build notification...
RewardDebitedEventFired when points are debited from a profile or organisation against a reward, for example when redeeming points or reversing a previously granted rew...
RewardGrantedEventFired when points are granted to a profile or organisation against a reward, for example completing a module, a manual award, or a promotion entry.
ShoppingCartEventFired at points in the shopping cart and checkout lifecycle: item added, payment pending, checkout completed, or checkout about to happen.
SubscriptionEventFired at points in a profile's membership lifecycle for a group: subscribed, pending approval, rejected, accepted, removed, lapsed, payment overdue or...
TestTriggerEventTriggerEvent implementation used to test or preview an EmailTrigger, wrapping its configured trigger condition fields and website as if they had been...
TriggerEventMarks an event that can be matched against a configured email trigger and used to drive the platform's trigger-based automation, such as sending an em...
TriggerFiredEventFired when an EmailTrigger completes, wrapping the profile, the trigger that fired, and the original event that caused it.
TriggerTimerEventTriggerEvent implementation used to re-fire the trigger matching logic when a delayed TriggerTimer elapses.
WebsiteSettingsLoadedEventFired after WebsiteSettings has finished reading the ".settings.xml" files under a website's WEB-INF folder.

Roles

NameDescription
AccountingRoleGrants access to view and manage payment resources - invoices, quotes and purchase orders - to a profile within an organisation.
AuctionViewerRoleGrants read access to view and bid on auctions.
BloggerRoleGrants authoring access to blogs and blog articles, without approval or publishing rights.
BlogReaderRoleGrants read-only access to blog content within an organisation.
ContentAuthorRoleGrants full edit access to content within a website repository, covering content items, binary, text, image and video assets, and the query tables bui...
ContentViewerRoleGrants read-only access to content resources, including anything tagged as content, resources whose controller grants this role a privilege, and resou...
DownloadCustomerDataRoleGrants access to download the customer data CSV export produced by the repeating payments report.
FraudManagerRoleFull control of fraud prevention: retuning, disabling and resetting rules, and setting the account's score thresholds.
FraudViewerRoleGrants read-only access to fraud prevention: which rules are in force, and what has been scored.
FulfillmentRoleGrants a profile permission to view and manage order fulfilment for resources implementing CommonFulfillmentResource within the granted organisation.
IntegrationExecutorRoleGrants read and write access to integration endpoints, letting a profile run integration jobs against them.
IntegrationManagerRoleGrants read and write access to integration endpoints, together with the ability to manage integration configuration, not just run existing jobs.
LearnerRoleGrants read-only access to learning content to any member of a group carrying this role.
PointsAdministratorRoleGrants full read and write access to points information within an organisation, and to the points reward table uploader.
PointsAdminViewerRoleGrants read-only access to points information within an organisation, and to the points reward table uploader.
ProductManagerRoleGrants read, write, read-content and write-content access to product resources and to the product manager pages.
ProductViewerRoleGrants read-only access to product resources within the granted organisation, for admin users who need to view products in the admin console without b...
RedeemerRoleGrants a profile the ability to redeem reward store products and gifts within an organisation.
ReportingAccessRoleMarker role, registered under "ReportingAccess", that permits access to reporting data for the organisation it is granted on.
ReportRunnerRoleGrants read-only access to reports registered under the "ReportsViewer" role name.
ReportsManagerRoleGrants full management of reporting artifacts - index queries, dashboards and kcodes - regardless of who created them.
RepositoryAppRoleSecurity role declared by an app in controllers.xml, granting a set of privileges over the app's controller resources.
RepositoryAppV2RoleA role defined declaratively by a repository app v2 manifest, granting configured privileges to controller resources whose matching role or resource t...
SalesDataEditorGrants a profile read and write access to sales data records and series within an organisation.
SalesDataViewerGrants a profile read-only access to sales data records and series within an organisation.
SalesManagerRoleGrants a sales manager read-write access to lead management resources across their team, without requiring the lead or task to be assigned to them per...
SalesRoleGrants a sales person read-write access to leads and tasks assigned to themself, and read access to profiles and organisations within their team hiera...
SalesTeamViewerRoleGrants read-only visibility of leads and other lead manager resources across a user's team, without the write access that SalesManagerRole carries.
StoreViewerRoleGrants a profile permission to view and purchase products in an eCommerce store within the granted organisation.
SubscriptionAdminRoleGrants a profile permission to view and manage Kademi subscription records within an organisation.
SupplierFilterRoleFilters sales and product data by supplier, rather than granting access to screens.
TakeLeadRoleGrants read-write access to leads, and tasks related to leads, that have not yet been assigned to anyone, so a user holding this role can see and clai...
VoucherRedeemerRoleGrants read and write-content access to voucher resources, for the cashier who accepts vouchers for purchase and marks them off as redeemed.
VoucherSupervisorRoleGrants access to view the status of voucher programs, for people supervising voucher issuing and redemption.

Applications

NameDescription
AlertsAppAdds the dashboard alerts feature: banner messages shown at the top or bottom of the admin dashboard or a website, targeted by organisation, group and...
AuctionAppRegisters the Auctions application, which lets an organisation run points-based auctions where profiles bid reward points to win a prize.
ContentAppProvides the core content viewing and authoring features for a website: file and folder resources, asset management, page rendering, menus, templates,...
EwayAppIntegrates the eWay payment gateway as a purchasable payment option, supporting one-off card purchases and recurring subscription billing.
IntegrationAppAdds data import and export services to a website, moving data between a Kademi account and external systems over HTTP, FTP, SFTP or email.
LearningAppRegisters the e-learning ("Learning") application, which adds structured programs, courses, modules and quizzes to a website.
ManualPaymentAppPayment provider that completes a purchase without collecting any online payment details, generating an invoice instead of charging a card.
PaymentAppAdds financial payment functionality to a website or organisation: invoicing, quoting, purchase orders and proposal preparation.
ReportingAppAdds web traffic reporting and analytics to an organisation, logging every HTTP request and exposing the resulting data through saved queries, dashboa...
RepositoryAppRepresents one installed instance of a repository-backed marketplace app, dispatching platform callbacks to its JavaScript logic in controllers.xml.
SalesDataAppRegisters the sales data application, which lets an organisation record recurring or one-off amounts, such as sales figures, against profiles or other...
ShoppingCartAppApplication providing the shopping cart and checkout used to purchase products, including those opted into reward programs and paid for with accumulat...
VouchersAppKademi application that adds gift voucher issuing and redemption to the account.

Pipeline Steps

NameDescription
CsvInputParses an incoming CSV file into rows and feeds them to the next pipeline step, one row at a time or all together as a list.
CsvOutputWrites incoming rows to the pipeline's output stream as CSV, for use as the final step in a pipeline whose output is downloaded or emailed to a user.
DatabaseSourceStepRuns a query against a registered database table provider and feeds each resulting row to the next pipeline step.
DatabaseUpdateStepReceives rows and inserts, updates, deletes or upserts them into a registered database table provider, according to its configured mode.
DecisionStepBranches a pipeline by selecting which of several configured next steps to run, based on a value from the current row.
ExcelInputStepParses an incoming Excel workbook and passes its rows, sheets, or the whole workbook to the next step.
ExcelOutputStepBuilds an Excel workbook from incoming pipeline rows and writes it to the pipeline's output.
FixedWidthInputParses an incoming fixed-width text file into rows of column values for a next step to process.
JsRowStepExecutes a configured JavaScript function for each incoming pipeline row, and optionally around prepare and finish.
MapReduceStepSplits incoming data into batches and processes them in parallel as an asynchronous map/reduce job.
MapStepBuilds a lookup map of values keyed by an expression, storing it as a pipeline attribute for later steps.
MultiStepRuns a fixed set of next steps, each given the same input.
PersistAsTableStepPipeline step that saves the incoming rows to the table upload service and passes the resulting table's hash and the table itself on to the next step.
QueryExportStepPipeline step that runs a saved query or an index query and streams its results to the next step, one column header row followed by the data rows.
RecordExecutionStepWraps processing in a transaction and commits it in the finished phase This allows executions to be tagged with an execution ID, which is intended to...
ReIndexPipelineStepPipeline step that re-indexes one or more configured search indexers for the pipeline's organisation.
ResultEmailPipelineStepPipeline step that emails a summary of the pipeline's failures, warnings and informational messages to a list of recipients once the run finishes.
RunPointsAllocationSourcesPipelineStepPipeline step that runs the configured points allocation sources for a sales data series once the pipeline finishes.
SalesDataInserterPipeline step that inserts, updates or upserts an incoming row as a sales data record in a configured series.
SetAttributesStepPipeline step that copies values out of the incoming row into pipeline attributes, then passes the row through to the next step unchanged.
TableUploaderStepImports incoming tabular data through a saved table uploader and field mapping, passing the resulting async job to the next step.
TemplateOutputRenders a Velocity template into the pipeline output, making the pipeline's attributes and the incoming arguments available to it as data model variab...
TransactionStepWraps the next step in a database transaction, committing it when the pipeline finishes or rolling it back on failure.
VelocityOutputStepRenders a Velocity template to HTML and writes the result to the pipeline output as the terminal response content.
WebServiceStepPlaceholder pipeline step reserved for a future web service call; currently its prepare, exec and finished methods do nothing and it simply passes the...

Asset Views

NameDescription
AltFormatContentViewRenders a pre-generated alternate format of a binary asset, such as a transcoded video rendition or a resized image, identified by the given format sp...
EditContentItemViewRenders the platform's default HTML edit form for a content item, used when a content type has not configured its own edit view.
EditFormContentItemAssetViewRenders the shared standard asset edit form for a content item.
PageTemplateContentItemAssetViewRenders an HTML page for a content item from a configurable page template path.
StandardBinaryContentViewRenders the original, unmodified bytes of a binary asset, such as an uploaded image or document.

Engagement Scoring Factor Types

NameDescription
CommentEngagementScoringFactorTypeEngagement scoring factor which scores a lead's profile by the dates it posted comments, forum posts or replies.
ContactFormEngagementScoringFactorTypeScores lead engagement based on submission of a contact us form, one of the pluggable factor types a funnel's engagement scoring can use.
CredentialEngagementScoringFactorTypeScores lead engagement based on the profile creating a new credential (eg completing a course or earning a badge), one of the pluggable factor types a...
EmailResponseEngagementScoringFactorTypeScores lead engagement based on email response, ie whether a lead has opened an email (the open-tracking pixel was hit) or converted from it (clicked...
ProductOrdersEngagementScoringFactorTypeScores a lead's engagement based on the products they have ordered, treating the date of each order as an engagement event.
RepoAppEngagementScoringFactorTypeEngagement scoring factor contributed by an app, which supplies the dates on which a lead engaged so a score can be calculated.
WebEngagementScoringFactorTypeScores lead engagement from tracked website visits, based on the SiteVisitor records held against the lead's profile.

Tables

NameDescription
EntityAddressesTableReporting Table which lists the postal addresses stored against users and organisations in the current account.
ExpiringPointsTableTable listing participants who have points expiring within the next 90 days, one row per participant with a set of expiry columns repeated for each re...
ExpiringPointsTableV2Table listing points expiring within the next 90 days, one row per participant and reward combination rather than one row per participant.
FunnelExportTableWraps one export configuration of a funnel as a Table, so it can be read through the reporting and query engine.
JoinTableJoins two registered tables on a key column and outputs a chosen subset of fields from each side, computed in memory.
KCriteriaTableTable implementation backed by a registered KCriteria builder, rendering the result of running that criteria query as rows with one column per configu...
PointsDebitsLinkTableTable listing points debits reconciled against their originating credits, one row per participant, reward and points tag combination with the net poin...
QueryTableA query table registered via Queries.addTableDef.
QueryWrapperTableTable implementation that wraps a saved QueryBean, exposing either its raw search results or one of its configured aggregations as rows.
RepoQueryTableA query table exposed by this app, populated by calling the row-producing JavaScript function declared for it in the app's controllers.xml.
RewardEntriesSummaryTableTable summarising promotion entries by reward, one row per reward showing its total entry count and the number of distinct profiles who entered.
RewardEntriesTableTable listing every promotion entry recorded for the current organisation, one row per entry showing the entrant's identifying details.

Database Table Providers

NameDescription
CategoryTableProviderImport-pipeline table provider for product categories, inserting, updating, deleting or upserting Category rows as an import pipeline runs.
DataSeriesProviderImport-pipeline table provider that reads SalesDataRecord rows for a named SalesDataSeries, for use as a DatabaseSourceStep query source.
FastPointsDebitRowProviderImport-pipeline table provider that inserts PointsDebit rows, debiting points from a profile or organisation as an import pipeline runs.
FastPointsRowProviderImport-pipeline table provider that inserts Points rows, awarding points to a profile or organisation as an import pipeline runs.
GroupMembershipTableProviderImport-pipeline table provider that creates or updates GroupMembership records, and their owning Profile, as an import pipeline runs.
OrganisationTableProviderImport-pipeline table provider that creates or updates child organisations of the current account as an import pipeline runs.
PointsRowProviderImport-pipeline table provider that awards Points against a Reward (points bucket) as an import pipeline runs.
ProductInCategoryTableProviderImport-pipeline table provider that links products to categories, inserting, updating or deleting ProductInCategory rows as an import pipeline runs.
ProductOptionsTableImport-pipeline table provider that inserts and updates product parameter options, commonly called product variants.
ProductsTableImport-pipeline table provider for products, inserting, updating, upserting and soft-deleting Product rows as an import pipeline runs.
ProfileTableProviderImport-pipeline table provider that creates or updates Profile records and their group memberships as an import pipeline runs.
SurveyRowProviderImport-pipeline source provider that reads RewardQuizSubmission survey submissions for reporting or export.

Other

NameDescription
AccessLogBeanRepresents a single logged HTTP request against a Kademi website - one row of the access log.
AccountUsageReports resource usage for a single account, produced by accountUsage() for the current tenant.
AchievementsSummaryA participant's achievements across every recognition topic in the account: every badge and level they have been awarded, plus the highest level reach...
ActivePointsTracks a single Points credit record as it is progressively consumed by later debit transactions during a calc() run, recording how much has been debi...
ActivityParticipantPairs a learner's progress through a module (ModuleStatus) with their invitation and response to a specific scheduled activity (AttendeeRequest).
AggBucketOne bucket of an aggregation (facet) result - a distinct value found in the search results, together with how many documents matched it.
AlertBeanWraps a persisted Alert as a read-only, display-ready view for rendering on the admin dashboard or a website page.
AltFormatBeanRead-only snapshot of an AltFormat entity, describing one derived rendition (such as a thumbnail) of a binary asset's source file.
AnomalyAlarmServiceThe alarm lifecycle: turns a stream of per-bucket verdicts into incidents, and says which events to fire.
AnomalyAlarmStateA detector's persisted position: what state it is in, how it got there, and what it has seen.
AnomalyAlarmTransitionWhat the state machine decided, and therefore which events the caller should fire.
AnomalyDataPointOne bucket of a metric time series: the instant the bucket starts, and the aggregated value in it.
AnomalyDetectionModelDetects anomalies in a time series of dated observations, using Yahoo EGADS' adaptive kernel density change point detector.
AnomalyDetectorDecides whether a bucket of a metric time series is abnormal, and can explain why in one sentence.
AnomalyHistoryEntryOne evaluated bucket, kept so that a detector's behaviour can be reviewed after the fact.
AnomalyIntervalRepresents a single anomaly detected by AnomalyDetectionModel: the time interval where the actual values diverged from the predicted ones.
AnomalyResultWhat the detector concluded about one bucket, and why.
AnomalyScanResultEverything one scan of one detector produced: what the bucket looked like, what the lifecycle decided, and where the detector now stands.
AnomalyStoreWhere a tenant's detector customisations and alarm state live.
AnomalyThresholdWhen a deviation from normal is worth telling somebody about.
AnomalyTripConfigHow many abnormal buckets make an incident, how many good ones end it, and how often to say so while it is open.
AppControlAppSettingsCombines an app's organisation-level settings with an optional website-level override, backed directly by AppControl and AppSetting persistence rows.
AppControlBeanA single row in the manage-apps admin page, pairing an Application with whether it is currently enabled for a given organisation or website branch.
AppIndexerFieldOne custom field registered against a repo app's search index via Queries.addAppIndexedField.
ApplyConfigContextCarries the mutable state passed through a single account configuration deployment, from AccountManager.applyAccountConfigConfiguration down into each...
AppsPageHelperBacks the manage-apps and available-updates admin pages: enabling and disabling apps, applying per-app settings, and reporting which installed apps, t...
AppTransactionManagerLets a custom app manage its own Hibernate transaction and per-entity locking from JS, exposed as the transactionManager variable.
AssetContentTypeWraps an asset together with one specific content type it has been assigned, so that the content-type-field evaluators can render field values belongi...
AssetContentTypesWraps a single asset for use as the base value of the "assetType-*" content type fields, letting a field expression navigate from the asset to one of...
AttachmentBeanRepresents a single file attached to a contact request, either uploaded with the submission or attached by a directive on the form.
AttendeeGuestCarries the name, email and organisation of a guest that an attendee brings to a calendar event.
AuctionBidBeanRead-only view of a single AuctionBid, used to display bid history and the leading or winning bid on an auction's admin and website pages.
AuctionBidSimpleBeanFlattened, JSON-friendly snapshot of a bid event, broadcast over the auctionBid websocket so connected clients can update an auction's leading bid liv...
BaseBucketA single named count bucket, such as one lead stage's total within a team, serialised to JSON via toXContent for dashboard views.
BlogsResourceListA ResourceList specialised for blog articles, adding sorting and filtering helpers on top of the standard list.
BonusPointsRuleTypeBuilt-in PointsRuleType that awards bonus points calculated from another points allocation source's own result for the same sales record, rather than...
CalcCalculator bound to a fixed list of resources, providing MVEL-expression-based filtering and summing for templates.
CalcContextCarries per-calculation state through a single call to QueryService.calcMetric, including cache and recursion controls and a scratch attribute bag tha...
CartShippingAddressRead-only view of the delivery address held on a cart, exposed as the shipping address for the order.
CashCurrencyCurrency implementation representing payment by real money through a configured payment gateway, rather than a stored account balance.
CategoryBeanLightweight, template-friendly view of a Category, used to render category names, titles and images on category and product listing pages.
CategoryDataPointRepresents one bar chart data point: a value plotted against a category label, optionally grouped into a named series for the legend.
CertAndKeyBundles an X.509 certificate, its issuing chain and the matching private key extracted from a PKCS12 keystore.
ChangedPropertyHolds the source and destination value of one changed config property, plus static helpers used to apply it to a domain object.
CheckoutItemsRepresents the priced line items of a shopping cart, combining physical items the user added with virtual items that checkout rules added automaticall...
CheckoutLineItemRepresents one priced line in a cart's checkout, such as a purchased product, a redeemed voucher or a free gift.
CheckoutRuleTypeDefines a pluggable custom checkout rule, evaluated during checkout to add or adjust cart line items and, when a resulting line item is committed, to...
ChildrenOfTypeMapRead-only map view over a ResourceList that filters the list by resource type on each lookup.
ColumnInfoDescribes one mapped source column of a table import: its zero-based column index, the destination field name it is mapped to, and that field's displa...
ColumnMetaDescribes one column of a TableViewMeta table: its heading, whether it can be sorted, and the CSS classes and attributes to render on it.
ColumnsHelperProvides typed, null-safe access to a pipeline row's column values, and is the object exposed as "columns" to MVEL column expressions.
CommentBeanRepresents a single comment or reply posted against a piece of content, such as a blog article, forum post, question or website page.
CommonListA general-purpose list of resources with extra convenience operations for templates and JS controllers.
CompletionsUsageToken usage OpenAI reports for a chat completion request, covering the prompt and completion token counts and their combined total.
CompletionTokenDetailsBreakdown of the completion token usage OpenAI returns for a chat completion, distinguishing tokens spent on reasoning, audio and predicted-output han...
ComponentHtmlTemplaterRenders HTML pages by combining a theme's chrome with a page's own template, then expanding any dynamic components in the merged markup.
ConfigDeltaBeanJSON-serialisable snapshot of a ConfigDelta, used to pass a config item's changes to an app's applyConfig implementation and to render it in the confi...
ConfigMessageWarning or error about an app's configuration, for display on an admin page.
ConfigSnapshotInfoSummarises one account configuration snapshot file previously saved for a tenant account, for listing in the config deployment admin UI without having...
ConnectedDebitRecords how much of a credit line item was consumed by one particular debit, and links back to that debit's own line item.
ConnectedTxRecords that a number of points were transferred between two line items during matching: how much of a credit was applied to consume a debit, or vice...
ConstExpressionAn Expression that always evaluates to a single, pre-configured value.
ContactRequestBeanWraps a ContactRequest entity as a plain data bean for use in templates and JSON output, carrying the submitter's details, the submitted message, and...
ContentAssetDataA lazily-evaluated, read-only map view over a content item asset, resolving field values, relations and core metadata by property name for use in temp...
CountryCodeA single ISO 3166-1 country record: its English and French short names, alpha-2 code, alpha-3 code and numeric code.
CountryCodesProvides lookup of ISO 3166-1 country data by alpha-2 code, alpha-3 code or locale.
CpdAwardBeanRead-only view of a single CPD (continuing professional development) award, wrapping the persisted CpdAward entity for use in templates.
CreateEmbeddingsResponseDeserialised response from OpenAI's Embeddings endpoint (POST /v1/embeddings), returned by OpenAiClient.createEmbeddings.
CredentialsBeanImmutable eWay API credentials for a single organisation or website: the API key, its password, and whether to use eWay's sandbox environment.
CurrencyRepresents a type of currency that can be used to make payments in the shopping cart.
CustomCheckoutRuleLineItemA checkout line item contributed by a CustomCheckoutRule, such as a points reward or reseller-specific charge, built with fixed price, tax and descrip...
CustomFieldDuplicateProfileMatchMethodFinds duplicate profiles which share the same value for a given custom field.
DashboardAlertSafeHelperSafe helper used internally by AlertsManager to resolve alerts across organisation boundaries when building the current user's alert lists.
DataCaptureFieldA single custom data capture field configured on a sales data series, wrapping its display order, name and raw configuration string for rendering in t...
DataPointMarker interface for a single value plotted on a chart built via ChartManager.ChartBuilder.
DataSeriesExtraFieldBuilderV2Builder for adding multiple extra fields to a sales data series in a single fieldset update.
DataSeriesLeaderBoardRanks the records of a sales data series, optionally restricted to a date range, to find the highest or lowest results.
DateDataPointRepresents a single dated observation: a value at a point in time, with an index used as the independent variable for forecasting.
DateOnlyTemporalParserTemporalParser for a date-only numeric pattern, such as DD/MM/YYYY or MM-DD-YY, restricted to a matching or excluded country as configured on the encl...
DatePointOne point in a daily hit-count time series, pairing a calendar day with the number of hits recorded on it.
DateTimeTemporalParserTemporalParser for a date-and-time numeric pattern, such as DD/MM/YYYY HH:mm or MM-DD-YY HH:mm, restricted to a matching or excluded country as config...
DealsInfoA count and total value of leads closed in a given period, returned by Lead.countClosed.
DefaultCheckoutLineItemStandard checkout line item backing a purchased product or service, sourced from a cart's ProductOrder and, where available, an ItemisedPrice computed...
DefaultKSearchResponseResult of one Elasticsearch search, wrapping the native SearchResponse behind the KSearchResponse API.
DefaultMappingMetaDataField mapping metadata for one document type, as returned by getMappings.
DependantFieldDeclares how selecting a Param affects another field on the same contact (e.g.
DerivedFunnelFieldA funnel field whose value is calculated dynamically rather than stored, by running a JavaScript function against a lead.
DiffieHellmanModulePerforms a Diffie-Hellman key exchange: generates a local key pair, combines it with a peer's public key to agree a shared secret, and exposes the pub...
DiscountPromotionItemRepresents a discount applied to an existing shopping cart line item by a promotion or reward.
DocItemA single matching document returned by a vector search, with its relevance score and highlighted paragraphs.
DuplicateListOne group of organisations within the current account that share the same title, produced by findDuplicates(MergeDestMode) for review before merging.
DuplicateProfilesListHolds one set of profiles which share a duplicated value, as found by UserManager.findDuplicates.
EmailContentHolds the HTML and plain text body of an email, as returned by an EmailContentService lookup.
EmailContentServiceStores and retrieves the HTML and plain text body of an EmailItem, decoupled from where that content is actually kept.
EmailDuplicateProfileMatchMethodFinds duplicate profiles which share the same email address.
EmailItemBeanLightweight, read-only view of an email item built from a search index hit, used to render rows in the "manage email items" history listing without lo...
EmailNotificationTableActionHandlerStandard table-upload action that emails a summary notification once an import job finishes.
EmailSenderDetailsHolds the name of the JS function an app uses to send its outgoing email.
EmailStatsSummarises email delivery and engagement outcomes for a date range, as counts and derived percentage rates.
EmailStatusCountsHolds aggregated counts of email items for a job, as returned by emailStatsDb or emailStats: the total number of items, how many were read, how many c...
EmailValidationRequestRecords a request to verify a profile's email address before a sign-up or group membership application can proceed.
EmbeddingA single embedding vector OpenAI generated for one input text, as returned in the data list of CreateEmbeddingsResponse.
EmbeddingUsageToken usage OpenAI reports for an embeddings request.
EngagementScoringFactorOne rule in a funnel's engagement scoring configuration, pairing an EngagementScoringFactorType with the boost, decay and stage-activation settings us...
EngagementScoringFactorTypeA kind of lead engagement that funnel scoring rules can reference, such as email responses, comments or form submissions.
EngagementScoringPropertyOne extra configuration field a scoring factor type exposes, so its admin editor can prompt for values that are stored in an EngagementScoringFactor's...
EnrolementModelPairs an enrolment with the program folder it belongs to, and exposes convenience accessors used when listing a group's training enrolments.
EntityAndPointsPairs a profile or organisation with a total number of points, used to summarise points earned per participant, for example in a leaderboard for a rew...
EntityBeanCommon contract for lightweight beans that wrap a persisted domain entity for use in templates and JS controllers.
ESFieldMetaMetadata describing one field of an Elasticsearch mapping - its name, display title, description, type and any sub-field - captured when an ESFieldBui...
EsStatisticsCompares the number of items in a primary data store against the number indexed into Elasticsearch for a single index, so a discrepancy between the tw...
ExpiringPointsListA list of points balances that are due to expire, with helper methods to summarise the remaining amounts by month or day so they can be charted or lis...
ExtendedStatFieldDescribes one extra statistic a TableUploader reports alongside a table import, such as a running total, average or earliest/latest date, beyond the s...
ExtProfileBeanAdmin-facing view of a profile: extends ProfileBean with fields visible only to staff, such as email, phone, birth date, notes and visit history.
ExtUrlHolds a fully qualified, externally reachable URL together with the exact domain name it was built for.
FacetRepresents one facet (a filterable, aggregated dimension) of a report or a faceted admin listing, such as reward, tag, organisation or group, together...
FacetsReportMarks a report as able to produce faceted breakdowns of its data, such as by reward, tag or other dimension, for a given organisation, website and dat...
FailBatchSanityCheckTableActionHandlerRow sanity check action that aborts the entire import batch when its configured rule matches a row.
FederatedLoginProviderBeanBase bean for a configured federated login provider that a website or organisation can use for social login.
FieldA single mergeable data field that can be looked up by id, such as firstName or ageYears, and evaluated against a profile to produce a value for kcode...
FieldBeanJSON-serializable snapshot of a Field, produced by FieldsService for sending field metadata to the admin UI.
FieldsServiceAggregates the fields contributed by every active FieldProviderApplication and resolves kcode template placeholders and funnel rule queries against th...
FifoListA list with a fixed maximum size that discards its oldest element whenever a new one is added past that limit.
FileSpecDescribes one entry returned by FtpSession.listFiles - a single file or subdirectory found in the directory that was listed.
FileUtilsZip, unzip and image-manipulation helper built on Kademi's content-addressed blob and hash store.
FilterDescribes which connected SSE clients should receive a message, built with a fluent API from SseManager.newFilter().
FirstLastNameDuplicateProfileMatchMethodFinds duplicate profiles which share the same first name and last name.
ForeachContextPer-iteration state passed to the callback function on each pass of a foreach loop in templates and GraalJS scripts, exposing the current zero-based i...
ForecastModelForecasts future values for a time series of dated observations, using openforecast's double exponential smoothing model.
FormContextWraps the parameters and uploaded files of a single form submission, giving controllers and JS controller functions typed, cleaned access to request d...
FormDataBuilds a multipart form body for use with XMLHttpRequest.send(), mirroring the browser FormData API for app scripts that need to post multipart/form-d...
FraudContextThe operation being scored, and everything a rule might need to score it.
FraudDecisionThe outcome of scoring one operation: what the score was, what it means, and why.
FraudPolicyStoreStores an account's fraud rule customisations, one JSON document per rule, in a fraud directory in the account's queries repository.
FraudScoreStoreHolds recent fraud scores in memory so that intrusion detection can act on them.
FraudSignalRepresents one rule's contribution to a fraud score, built via its Builder.
FraudThresholdsHolds an account's fraud score band boundaries, and whether blocking is switched on at all.
FreeGiftCheckoutLineItemCheckout line item representing a free gift added to the cart by a promotion, via FreeGiftCheckoutRule.
FtpSessionAn open connection to a remote FTP or SFTP server, returned by FtpManager.openFtp or FtpManager.openSFtp for an app script to transfer files with.
FunnelActionTypesListList of automation action types registered by a repository app, passed into the app's dynamic action types JS function so it can add its own entries.
FunnelAutomationA trigger/action rule attached to a funnel, run whenever a matching event occurs on one of its leads.
FunnelExportA named, reusable set of lead fields that leads for a funnel can be exported with, for example as CSV.
FunnelTesterOverrides a goal's timeout delay for leads whose profile email matches a given domain, so that test accounts (eg mailinator.com addresses) do not have...
FunnelTriggerTypesListList of automation trigger types registered by a repository app, passed into the app's dynamic trigger types JS function so it can add its own entries...
GeoIPServiceResolves an IP address to geographic and network information using local MaxMind GeoIP2 databases (city-level location and ASN/network owner), without...
GeoIpWrapperA Wrapper for the MaxMind Geo IP2 lookup
GeoLocAn immutable latitude/longitude pair, serialised to JSON via toXContent for map dashboards.
GiftPromotionItemRepresents a free gift product sku awarded by a promotion or reward.
GroupInWebsiteItemPairs a group's membership of a website with its resources directory, one row in the group resources listing.
GroupSignupStatHolds a single group's sign-up count for a reporting period.
GuestBeanWraps the display details of a guest attending a calendar event on behalf of an invited attendee.
HlsPrimaryBeanRead-only snapshot of a HLS (HTTP Live Streaming) primary playlist, wrapping the persisted HlsPrimary entity and its programs and segments for use by...
HlsProgramBeanRead-only snapshot of a single HLS program, wrapping a persisted HlsProgram entity.
HlsSegmentBeanRead-only snapshot of a single HLS segment, wrapping a persisted HlsSegment entity.
HomeOrgInfoLightweight view of a profile's home account - its id, admin domain, path and title - which is otherwise unreadable when that account is a different t...
IgnoreRowSanityCheckTableActionHandlerRow sanity check action that drops a row from the import when its configured rule matches.
ImageAn image that has been assigned to an auction, with an optional orientation such as square or vertical.
ImageGenerationOptionsImmutable set of parameters for a single image generation request, built via ImageGenerationOptionsBuilder and passed to ImageGenerationManager.genera...
ImageLocationA single generated image returned by OpenAI's Image Generation endpoint, delivered as either a URL or inline base64-encoded data depending on how the...
ImageModelDescribes a single AI image generation model offered by a provider, including its name, owning provider and the image sizes it supports.
ImageResponseDeserialised response from OpenAI's Image Generation endpoint (POST /v1/images/generations), returned by OpenAiClient.getImageGeneration.
ImportContextV2Carries the shared state for one table import run, from the first row to the last, including the field mappings, request parameters, accumulated exten...
IndexItemA single document to be added to a website's vector search index.
IndexItemBeanImmutable, plain implementation of IndexItem holding a document's fields ready to be indexed for vector search.
InstalledUserRepresents one organisation that has installed a repository app, as shown on the app's installed-users listing page.
InvoiceBeanRepresents an invoice raised for a customer, extending the generic payment list with an invoice status and a due date.
InvoicingServiceCreates invoices and purchase orders on behalf of whichever InvoicingApplication is currently active for the organisation, and builds a PaymentAddress...
IpHitNumber of access log hits recorded from a single source IP address for a given profile, broken down by user and host, for security and activity report...
ItemCountPairs a name with a count of how many times it occurs, used to report tag and category frequencies for a blog.
ItemisedPriceBreakdown of the factors that make up a product line's final price: list price, tax, quantity, and any promotional adjustment.
JobContextProvides safe, limited access to a running job's state for use from JavaScript job functions.
JobSearchHitRepresents one text match found while searching a job's input, output or log lines for a search expression.
JourneyFunnelFieldsListList of the configuration fields an administrator fills in for a funnel trigger or action type, passed into the app's fields JS function so it can dec...
JsAuthHandlerMappingImmutable set of JS function names implementing Milton's AuthenticationHandler contract for one app, built by AuthHandlerBuilder and held on the app's...
JsonMarketPlaceItemAdapts a raw JSON map, as returned by the remote marketplace catalog API, to the IMarketPlaceItem interface.
JsonResultGeneric value object representing the outcome of an operation - a status flag, human-readable messages, optional field-level validation messages and a...
JsProcessableRepresents a single asynchronous JavaScript task queued through JsScheduler.executeAsyncTask and its FIFO and callback variants, tracking its progress...
JsScheduleBeanRead-only snapshot of a JsSchedule, returned to app JavaScript by JsScheduler's schedule, getSchedule, find and getSchedules methods.
JsSchedulerSchedules recurring and one-off JavaScript function calls for a repo app, and submits asynchronous background tasks for the app to process off the req...
JsStatusInfoTracks progress for a single JsProcessable task and, once marked complete, invokes the app's callback function if one was registered on the task.
JsTableActionHandlerTable-upload action handler whose lifecycle hooks are implemented in JavaScript rather than Java.
KademiArrayListAn ArrayList with convenience methods for use in templates and scripts, such as getting a random element, a reversed copy, or a truncated sub-list.
KademiRequestWraps Grizzly's HTTP request for Milton.io, sanitising header values and uploaded file field names before they reach application code.
KademiResponseWraps Grizzly's HTTP response for Milton.io, applying Kademi's cookie security defaults whenever a cookie is written.
KademiSseConnectionRepresents one live Server-Sent Events connection from a browser client, scoped to a single SSE type and host.
KademiWebsocketWrapperEntry point for app JavaScript to send and broadcast websocket messages and query connected sockets, bound into the JS engine context as the global we...
KCriteriaFluent Hibernate criteria query builder for a single entity type, returned by KCriteriaBuilder.build().
KnownLocationsA profile's location history, as far as the index knows it.
KQueryFieldA single field-scoped search term parsed from a query string, pairing a field name with the value it must (or must not) equal.
KSearchHitKademi's abstraction over Elasticsearch SearchHit to enable pluggable implementations.
KSearchHitFieldKademi's abstraction over Elasticsearch SearchHitField to enable pluggable implementations.
KSearchHitsKademi's abstraction over Elasticsearch SearchHits to enable pluggable implementations.
KSearchQueryParses a simple search-box query string into structured must/must-not terms, splitting free text from field:value clauses (for example title:foo -tag:...
KSelectorItemRepresents a single entry in a generalised org, user, group or org type selector, used together with the jquery.kselector widget to build inclusion or...
LeadBeanA flattened, JSON-friendly snapshot of a Lead, produced by the toBean factory method for AJAX list and detail responses.
LeaderboardRankingA single ranked entry in a leaderboard, attributing an amount to a participant.
LeadFieldsMarker value bound as the template root when a page reads a lead's custom fields.
LeadManSearchHelperV1Builds and runs the Elasticsearch queries for lead-related profile, organisation and combined (omni) search.
LeadManSearchHelperV2Builds and runs the Elasticsearch queries behind lead management search and filtering.
LeadmanServiceOwns lead-management business logic that sits above the raw Lead and Task entities: team and task statistics for dashboards, lead and note creation, l...
LeadSearchCriteriaFilter criteria for searching leads within a funnel, used to build a scoped search against the lead search index.
LeadsListLazily loaded, filterable list of Leads, used as a merge field value so templates and reports can list and filter a customer's or assignee's leads.
LearningTemplateHelperTemplate helper exposing a profile's e-learning progress, CPD points and CPD awards to Velocity templates.
LevelStatusSnapshot of a participant's progress through a RecognitionTopic's levels, as calculated by RecognitionService.
LevelSummaryThe full level ladder for a participant in a topic, optionally scoped to a period: every level the topic defines, each paired with the next level up,...
LevelSummaryItemOne level in a participant's level ladder: a level paired with the next level up, the participant's current value, and the points calculated for reach...
ListAndCountA page of results from a search or query, paired with the total number of matching rows across all pages.
ListOptionTypeAn OptionType backed by a fixed list of choices, rendered as an HTML select element.
LlmModelDescribes a single language model available for inference, whether registered globally or scoped to a tenant.
LlmModelTierWhat a model is being asked to do, rather than which model to use.
LoginNonceBeanImmutable, request-safe snapshot of a LoginNonce.
LongRangeFacetBucketA facet bucket for a numeric range, carrying the inclusive or exclusive start and finish of the range covered and the count of documents falling withi...
LookupESFieldField metadata for a value resolved to a display label by calling a lookup function directly, rather than through a relation to another AppIndexer's i...
MailboxMappingConfiguration for one mailbox mapping built via MailboxMappingBuilder, pairing a custom app's verify and store email callbacks.
ManageUsersResultDbDTOWraps a Profile entity loaded directly from the database as a manage-users search result, adapting it to the common IManageUsersResultDTO shape used b...
ManageUsersResultElasticDTOWraps a search hit from the Elastic search index as a manage-users search result, adapting it to the common IManageUsersResultDTO shape used by the ma...
MapReduceSubTaskDescribes one sub-task produced by a MapReduceProcessable's map or onMappedTasksComplete method.
MembershipApplicationRequestCarries the details of a pending group membership application, either to join an existing organisation or to register a new one.
MembershipBeanRead-oriented view of a profile's membership to a group, wrapping a GroupMembership entity for use in templates and scripting.
MembershipListA list of MembershipBean objects, with a variety of filtering, grouping and CSV summary methods for working with a profile's or a report's set of memb...
MenuConfigItemRepresents one entry in an account's saved menu customisation (menu.json), matched by id to a menu item an app contributed.
MenuItemOne node in the platform's navigation menu tree, built fresh per user and root folder and cached briefly by MenuManager.
MenuItemListAn ordered list of MenuItem nodes, used both as the children of a menu item and as a scratch list when building a filtered view such as the active ite...
MenuManagerBuilds each user's menu tree, merging what every installed app contributes with the account's saved menu customisations.
MenuMappingA single dynamically registered menu entry, built by MenuMappingBuilder and evaluated by RepositoryApp when it lays out the admin or website menu for...
MetricUsageDataMeasured usage for a single usage factor over the license period.
MetricUsageDataListPer-subscription list of measured usage against each of the account's configured usage factors, over a license period.
ModuleCompleteActionConfigures one action to run when a profile completes a learning module: either issuing a certificate with a number of CPD points, or granting a rewar...
ModulesListA list of ModuleStatus records for a profile, with filtering helpers for narrowing down to a program, course, module or completion state.
MultiplierRecognitionPointsRuleTypeBuilt-in RecognitionPointsRuleType which awards points as a simple multiple of the participant's achieved value, plus an optional flat amount.
MvelExpressionAn Expression that evaluates an MVEL script against the current lead, journey node, funnel and any provided variables.
MyAttachmentA single email attachment captured from an incoming message, with its content stored in the VFS blob store and indexed by hash.
MyPointsDebitInfoRead-only view of a single points debit (points spent or otherwise deducted) for display in a participant's own rewards summary.
MyPointsInfoRead-only view of a single points award (points credited to a participant) for display in a participant's own rewards summary.
MyRewardEntryRead-only view of a single RewardEntry (a non-points incentive such as a gift voucher or a prize draw entry) for display in a participant's own reward...
MyRewardInfoDeprecated aggregate view of a single participant's own progress in a reward: their points history and reward entries, and how those compare to their...
NarrativeAn ordered collection of narrative items (short translated messages) built up while processing a request, such as validation failures or status notes,...
NarrativeItemA single message within a Narrative, holding message text, optional substitution arguments and an optional translation code.
NextStepWraps a reference to the running pipeline and the next step in it, so a pipeline script can trigger the next step itself instead of relying on the pip...
NodeTypeBeanA simple, immutable NodeType registration pairing a journey node type name with the Velocity template that renders its JS builder component.
NotifyAdminRowSanityCheckTableActionHandlerRow sanity check action that emails admins a consolidated report of every row that matched a configured rule.
NotifyAdminUploadSanityCheckTableActionHandlerUpload sanity check action that emails admins when a configured rule matches the aggregate results of a completed import.
OAuth2DetailsSnapshot of the remote profile details captured when a user connected a social login provider to their account.
OAuth2ProviderTemplatesRegistry of the built-in social login provider templates that seed the "add social login provider" admin UI.
OmniResultThe result of a cross-application omni search: the raw Elasticsearch response plus the list of active OmniSearchApplications that contributed to the q...
OmniSearchRequestA configurable request for the cross-application "omni search" used by the admin search box.
OnReindexProgressEventReports progress while a JSON database is being reindexed into Elasticsearch, delivered to the callback passed to reindex or updateAnalyzers after eac...
OnSearchReindexProgressEventProgress notification passed to the callback supplied to SearchManager's reindex methods, reported once for each document written to the new index.
OrderBeanLightweight, template-friendly view of a ProductOrder, used to render a profile's past orders for a product, including the answers they gave to any or...
OrgCustomFieldsListMarker value bound as the template root when a page reads an organisation's custom fields.
OrgDashboardStatsAggregate usage counts for the current account, produced by orgDashboardStats() and shown on the admin dashboard.
OrgDataRepresents an organisation, and allows access to information about members of that organisation You can get the OrgData for the organisation which own...
OrgDataListA list of OrgData objects, with methods for filtering, grouping and converting that list.
OrgExtraFieldMarks an extra field as an organisation picker, rendering as a text input with autocomplete against the organisation search endpoint rather than a pla...
OrgMatchRequestBuilds a set of match criteria for finding organisations, used by OrganisationManager.findMatching and OrganisationManager.findMatchingES.
OrgModulesStatsModule completion statistics for the current user's primary organisation, the organisation that the user's primary membership belongs to, optionally s...
OrgSearchResultESA single row in the organisations search/listing results table on the Manage Organisations admin page.
OrgTypeBeanLightweight, read-only snapshot of an organisation type (OrgType), exposed to GraalJS and used wherever an organisation's assigned types are listed or...
OverageDataMeasured usage for a single usage factor together with the quota included in the license, used to report how far the subscription has gone over its pl...
PaginatorA request driven paging helper for a listing already loaded into memory, exposed to templates and scripts as "paginator" via Formatter.
Paginator2A request driven paging helper like Paginator, but for a listing that is expensive to load: instead of taking a pre-loaded records list, it is constru...
ParagraphItemA single highlighted fragment of a document's content, showing where a search query matched.
ParamA single selectable value for a dropdown extra param.
PaymentAddressA postal address captured for an invoice, quote or purchase order, such as a billing or delivery address.
PaymentLineItemBeanA single priced line item on an invoice, quote or purchase order, such as a product, fee or service charge.
PaymentListBeanA list of priced line items with billing and delivery addresses, forming the shared base for invoices, quotes and purchase orders.
PaymentListLineItemAttachmentA file attached to a line item on a payment list, such as a supporting document, identified by its stored content hash.
PaymentResultOutcome of a call to a payment provider's process method.
PaymentTransactionBeanRead-only snapshot of a payment attempt made through an external payment provider such as eWay, including its outcome and provider response codes.
PdfContentBean pairing extracted PDF text content with a map of document metadata.
PdfDocumentThin wrapper around a PDFBox PDDocument for a single loaded PDF, exposing page access, AcroForm field reading and writing, and document metadata.
PdfManagerGenerates, reads and rasterises PDF documents for the platform's stored files, wrapping PDFBox behind the platform's blob store and hash store.
PeriodA billing or usage period defined by a start and end date, used when calculating subscription usage and generating invoice line items.
PeriodProjectedResultProjects a participant's likely final value and level for a recognition period from their actual value so far and the proportion of the period that ha...
PipelineRuns one execution of a configured integration pipeline: a chain of PipelineStep instances built from an account's pipeline XML by PipelineManager and...
PipelineBeanContains summary information about the execution of a pipeline.
PointsAccountRepresents a participant's points balance within a single points bucket (Reward).
PointsCountHolds the total points issued or debited for one grouping tag, over a date range.
PointsRequestMutable request bean for awarding or debiting reward points to a participant.
PointsStatsSummary of points credit and debit counts for an entity, reward and date range, as produced by PointsManager.pointsStats.
PointsTransactionRepresents a single row in a participant's points history: either a points credit (award) or a points debit (spend).
PortletMappingRegisters a JS function and template to render into a named section of an admin or website page, created by PortletMappingBuilder.build.
PostBeanJSON-serialisable summary of a single post, used to answer forum and comment search requests.
PostMatchRequestBuilds a criteria query for finding forum posts, comments and replies, combining criteria such as post ids, poster, website, forum, date range and fre...
PreRenderEventFired immediately before a page is rendered, so an app can act on the page or opt it out of compiled dependencies.
PricingManagerRuleTypePoints allocation rule that computes points from a sales record's amount, optionally multiplied by a fixed factor and by a named ecommerce store's pri...
PricingRuleA single pricing or promotion rule: a set of match criteria (user, group, organisation, org type, vendor org type, product, category, brand, quantity...
PricingRulesSetCombines a store's pricing rules with its resolved shipping providers, tax calc providers, promotional availabilities and checkout rules into one immu...
ProcessedHitA single processed search result row, with its field values enriched by resolving any joined fields.
ProcessedHitFieldA single field value within a ProcessedHit, equivalent to a KSearchHitField.
ProductBeanLightweight, template-friendly view of a Product, used to render product listings, product detail pages and shopping cart lines without exposing the f...
ProductInCategoryBeanWraps a product's membership in a category, pairing the product's summary with the category it belongs to.
ProductOptionBeanWraps a single purchase option value of a product parameter, such as one colour or size choice, for use in product templates.
ProductOrderBeanRead-only view of a single ProductOrder line item within a cart, built from the persisted entity for use in templates and JSON responses.
ProductOrderOptionBeanRead-only view of a single answered parameter option on a product order, built from the persisted ProductOrderOption entity, for example a selected si...
ProductParameterBeanWraps a single purchase parameter of a product, such as "Colour" or "Size", together with its available option values, for use in product templates.
ProductSkuBeanRead-only summary of a ProductSku, exposing just its id, name, title and owning product id for display in sales data records and reports.
ProfileActionBeanA profile-specific timeline event, extending StreamEventBean with a flag for whether the action was inbound (from the user to the platform) or outboun...
ProfileAndFieldHolds one profile's identity together with the value of a single custom field, for a particular group membership.
ProfileBeanLightweight, JS-facing view of a user profile: id, username, display name, href and photo hash.
ProfileMatchRequestFluent query builder for finding profiles by name, contact details, group and organisation membership, and other criteria.
ProfileTabAn additional tab shown on the manage user profile page, backed by a named portlet that renders the tab's content.
ProfileTabMappingRegisters an extra tab, and optionally a matching summary panel, added to an admin profile or organisation page, created by ProfileTabsBuilder.build.
ProfileTimelineMappingHolds the JavaScript function a repository app registers to contribute stream items to a profile's or an organisation's timeline.
ProgramsModelWraps the program folders on a website's branch and provides lookups for programs, courses and modules by their codes.
PromoCodeResultOutcome of applying a single promo code to a cart, reported back by CartManager.applyPromoCodes.
PromotionBeanRead-only view over a promotion's stored configuration properties - entry codes, discount and gift settings, quiz and upload options, and qualifying p...
PromotionServiceDetermines which promotions (Reward objects used for checkout/cart offers) a purchaser or cart currently qualifies for, and resolves a promotion's sto...
PromotionsListA collection of Reward (promotion) objects with convenience methods for narrowing the list down by website or by whether the promotion is featured.
PromptTokenDetailsBreakdown of the prompt token usage OpenAI can return for a request, distinguishing tokens served from the prompt cache, tokens written to it, and tok...
PurchaseAmountRepresents an amount of a specific currency required to purchase something, pairing a monetary amount with the Currency it is denominated in.
PurchaseItemRepresents one line item being purchased through a payment provider, carrying its quantity, unit cost, tax and final price.
QueriesCached, parsed representation of a tenant's query configuration repository: elastic search query definitions, reports, lookup tables, metrics, custom...
QueryBeanOne saved elastic search query definition, typically loaded from a ".query.json" file in an account's or app's query repository.
QueryBuilderBeanConfiguration for a query as edited through the visual query builder UI, and the elastic search request it produces.
QueryFieldOne field that a user can filter on in the visual query builder UI.
QueryParameterDescribes one parameter that can be substituted into a saved query, such as startDate or the currently selected organisations.
QuizInfoHolds the parsed content and settings of one quiz page: its title, marking rules and correct answers, plus the raw quiz HTML for looking up question a...
QuizResultReports the outcome of a quiz attempt or attempt-limit check back to the caller as JSON data.
RankAndPointsA participant's position and points in one of MyRewardInfo's leaderboards, as returned by rank, rankInTeam and getMyRank.
RecipeStepA single step within a recipe stage, the unit of work an account works through while completing a recipe.
RecognitionLevelsRuleTypePoints allocation rule that awards points based on a participant's current level within a recognition topic.
RecognitionPeriodLeaderboardA leaderboard helper for a single recognition period: pages through ranked results and looks up the current user's own ranking, caching each lookup so...
RecognitionPointsRuleTypeDefines a pluggable strategy for calculating how many recognition points a participant earns towards a RecognitionAward.
RecognitionServiceOwns the persistence and calculation logic for Kademi's recognition domain: topics, levels, badges, periods, awards and points.
RecordBeanRead-only summary of a single SalesDataRecord for display and reporting - the sale amount, its period, who entered it, who and which team the sale is...
ReferralProfileIdentifies an existing profile that matches a referral's recipient email, found by ReferralManager.findMatchingProfiles.
RelationalESFieldField metadata for a value that is a foreign key into another AppIndexer's index - typically an entity ID - so its raw indexed value can be resolved t...
RenderValueHolds a raw indexed value together with its formatted, display-ready representation, as produced by ESFieldMeta.formattedValues.
RepoAppActionNodeTypeJourney node type that runs a named JavaScript function on a repository app when a lead reaches it, registered through ControllerMappingList.addAction...
RepoAppCustomCheckoutRuleTypeCustom checkout rule contributed by a repository app, registered through controllerMappings and run by the e-commerce checkout process to add or adjus...
RepoAppEventDefA definition of an event type for a repository app, declared with newEventDefinitionBuilder and raised with triggerEvent.
RepoAppEventListenerA registered listener for a repository app event, created by ControllerMappingList.addEventListener or addEventListenerForType.
RepoAppGoalNodeTypeJourney node type that lets a lead pass only once a JavaScript condition is met, registered through ControllerMappingList.addGoalNodeType.
RepoAppMcpMappingA Model Context Protocol server contributed by a repository app, built by McpMappingBuilder and reached through controllerMappings.websiteMcpControlle...
RepoAppMcpToolMappingA tool statically registered on a repository app's MCP server through McpMappingBuilder, pairing the tool's wire-format spec with the JavaScript funct...
RepoAppPaymentResultOutcome of a payment processed by a repository app's custom payment provider, populated by the app's JavaScript payment function and returned to the e...
RepoAppSettingsA settings page a repository app registers for its admin configuration screen, pairing a template path with either a named or an actual JavaScript fun...
RepoAppsEventManagerListens for platform events and passes each one on to the repository apps active for the relevant website or organisation.
RepoAppWebsocketWraps a live websocket connection for use from app JavaScript, exposing the item id, connection attributes and profile of the connected user, and meth...
RepoAppWebsocketMappingHolds the configuration for one app-defined websocket data type: its connect, disconnect and message JavaScript handler functions, and whether it is r...
RepoMailboxStandardMessageA parsed representation of an incoming email captured by a mailbox mapping, holding the sender, recipients, subject, body and attachments extracted fr...
RepoQueryTableDefDefinition of one app-registered query table: the JavaScript function that loads its rows, its column headings and whether it supports pagination.
ReportBeanRepresents a custom repository report loaded from a report descriptor file (named with a .report.json suffix) and parsed by QueryService.
ReportParamsParses and holds the common request parameters shared by report pages: date range, selected organisations, selected filter terms and whether to includ...
RepositoryAppThemeAdapts a repository app to the Theme interface, letting a repository app be selected and rendered as a website theme.
RepoSmsSettingsBeanHolds the SMS provider settings an app supplies for an organisation: the provider username and the sender phone number.
RequestLogBeanData container capturing the details of one outbound HTTP request that has passed through the request interceptor chain: the host, URL, HTTP method, t...
ResourceBeanA lightweight, serialisable summary of a WebDAV resource (a file or a folder), used to pass basic identifying information about a resource to template...
ResourceBeanListAccumulates ResourceBean entries describing the files and folders found while browsing a location.
ResourceListHolds an ordered collection of resources with convenience operations for filtering, excluding, grouping and sorting, used throughout Velocity template...
ResponsesUsageToken usage counters for a single OpenAI Responses API call, nested inside Responses.
ResultRowsGeneral purpose accumulator for building a list of table rows one cell at a time.
RewardBeanRead-only snapshot of a Reward (a promotion or points bucket), copying its display and scheduling fields into a plain bean for use in templates and ot...
RewardCurrencyA shopping cart Currency backed by a reward's points balance, letting a profile pay for cart items with points instead of, or as well as, real money.
RewardTransactionItemRepresents a single transaction line item against a reward's points balance, either a points credit (Points) or a points debit (PointsDebit).
RoleA user is assigned roles by being put into a group.
RowA single row of a table result: an ordered list of cell values, with an optional reference back to the source object the row was built from.
RowContextCarries the state needed to process a single row of a table import, including the raw row data, the field mappings and destination fields shared acros...
RowSanityCheckTableActionHandlerBase class for table-upload actions that evaluate a configurable rule against each imported row.
RowsResultHolds the outcome of reading rows from a Table: the rows themselves (each a list of cell values), the total number of matching rows, the column header...
SearchParametersImmutable set of parameters controlling a vector search, such as the search terms, paging and highlighting.
SearchResultRepresents a single hit in a search result page, with the matching item's location, title, matched text snippets and metadata.
SearchResultsRepresents one page of search results, combining the total hit count, the requested page window and the matching SearchResult items.
SeoContentBeanCarries per-page search engine optimisation metadata for a renderable resource, such as a meta description, keywords, canonical URL and structured dat...
SeriesBeanWraps a sales data series and the current user's records within it for rendering in the sales data entry form and its JSON view.
SharingApplicationProvides items to the social wall, ie information that a user might want to share with friends or colleagues.
ShippingAddressRepresents a physical address that a purchase can be shipped to.
ShippingAddressBeanSimple mutable data holder for a shipping address, implementing the ShippingAddress contract.
ShippingProviderCalculates the freight cost for a store and decides whether it can be offered for a given cart.
ShoppingCartBeanRead-only projection of a Cart entity, exposing the order's contact, address and fulfilment details.
ShoppingCartItemBeanRead-only line item for the shopping cart, holding the quantity, pricing and product details for one item being purchased.
SigninProvidersListA list of alternative sign-in providers (eg SSO or social login options) offered on the login page, gathered from apps' appendSigninProviders/appendWe...
SignupLogRecords a profile joining or leaving a group within an organisation, along with who or what triggered the change, where it happened, and its previous...
SimpleHtmlTemplaterRenders a page by combining a theme's chrome with a single template body, using the TextTemplater to process the Velocity template and then running th...
SimplePointsRuleTypeGeneral purpose points allocation rule that computes points as a sales record's amount, optionally multiplied and/or added to by fixed configured valu...
SimpleTemporalParserTemporalParser backed directly by a java.time.DateTimeFormatter, used for the built-in ISO and RFC formats that do not need a locale-specific numeric...
SizesHelperCalculates the responsive width of a Bootstrap 3 grid element as a percentage of the viewport at each screen breakpoint, for use in the HTML "sizes" a...
SkipRowsTableActionHandlerStandard table-upload action that skips a row when a configured column is blank.
SmsProviderDetailsHolds the names of the two functions a repository app registers to act as its SMS provider: one to send a message, and one to supply the SMS settings...
SmsStatsSummary statistics for SMS messages sent by an account, covering total volume, total cost and delivery success rate.
SpliffyContentGeneratorMilton.io ContentGenerator that renders a themed HTML error page instead of Milton's plain default response body.
SseEventMessageRepresents a single Server-Sent Events message conforming to the W3C EventSource specification, holding the event type, data payload, id and retry int...
StackSmall last-in-first-out collection for templates and scripts, created via Formatter's newStack helper and exported to GraalJS.
StatusInfoSnapshot of a tracked job's progress and outcome, shared between the async processing framework and JS job functions via TrackedProcessable.getStatusI...
StreamEventBeanRepresents a single event on a profile's activity timeline, such as an enrolment, a purchase, or an email being sent.
SubmissionBeanRead-only snapshot of a single profile's submission to a reward poll, survey or competition, copying the submitted date, quiz attempt outcome and give...
SubTaskListCollects the sub tasks that a map-reduce pipeline job splits its work into, built up by a script's map function.
SummaryPanelA summary card shown on the manage-profile (or manage-org) admin page, giving an at-a-glance view of something the owning app tracks for that profile...
SyntheticExpiredTransactionA stand-in transaction created when an active credit expires unused, so the expiry shows up as a debit-like entry in the line item history even though...
TableRepresents a tabular data source that can be listed, paged and rendered as rows of cells for Kademi's reporting and query engine.
TableDirRepresents a single folder of saved spreadsheets, scoped to a path under the tenant's spreadsheets tree.
TableViewMetaHolds everything a table template needs to render one page of records: the row data, the column definitions, the paginator and a set of CSS classes fo...
TaskOutcomeFieldValidationBase class for a validation rule checked against one of a lead's fields when a TaskOutcome is selected on task completion.
TaskStatsTask completion statistics for a profile or team over a given period: how many tasks were completed by their due date, how many were completed in tota...
TaxCalcProviderCalculates the appropriate tax rate to apply to a sale.
TeamBucketOne team's row in the leads geo/map dashboard: the team's name and location, and its leads broken down into one BaseBucket per stage.
TeamMemberPairs one sales team member's profile with a snapshot of their active, closed and cancelled deal counts, as shown in a single row of the team roster p...
TeamMemberPointsA single entry in one of MyRewardInfo's leaderboards: a participant and their points total for the containing reward.
TeamStatsLead and deal statistics for a sales team over a given period: the count and estimated value of active leads, the number of tasks due soon, and the co...
Temp2FADataHolds a freshly generated two factor authentication secret key and its QR code, produced by userManager.temp2FACode.
TemplateDefDescribes one page or content template that an app makes available for creating new resources, found via TemplatingApplication.appendTemplates and Tem...
TemporalParserPluggable strategy for parsing and formatting date and date-time values against one specific pattern or standard, such as an ISO format or a locale-sp...
TermFacetBucketA facet bucket for a single term (a discrete value such as a reward id or tag name), carrying the term's display title and, optionally, a nested list...
TextOptionTypeAn OptionType backed by a free text input, rendered as an HTML text field.
ThemeBeanImmutable, in-memory implementation of Theme used for the built-in themes registered directly by ThemeManager (for example the "admin" and "admin2" ad...
ThemeDependentHtmlTemplaterDispatching implementation of HtmlTemplater that delegates every call to the HtmlTemplater of the current or a named theme, resolved via ThemeManager.
TimesheetA read-only weekly (or other period) view of a worker's logged hours, built by TimesheetManager.
TopicAchievementSummaryA single topic's achievement status for one participant: their current level status within the topic, and their result for whichever period is current...
TriggerTypeMappingRepresents one registered repository app automation trigger, holding the trigger's identifier, its user-facing description, the format function used t...
UpdateOne row in the available-updates panel: an installed app, theme or lib together with the version currently in use and the version currently published...
UpdatesSummaryThe headline figures for the available updates panel, so that the page doesn't have to aggregate over the list of updates in Velocity.
UploadSanityCheckTableActionHandlerBase class for table-upload actions that evaluate a configurable rule against the aggregate results of a completed import.
UserAgentParserWrapperWraps the uadetector UserAgentStringParser to parse browser user agent strings into structured details such as browser name, version and operating sys...
UserLeadInfoA per-profile breakdown of lead counts by status, returned by Lead.findLeadStatsForProfile.
UserNameDuplicateProfileMatchMethodMatches duplicate profiles by their user name.
ValidationContextValidates named form parameters against an expected type, presence and constraints, collecting field and form level error messages as it goes.
VariantRepresents one row of a product's variant matrix: a specific combination of parameter options (for example a particular size and colour) together with...
VectorSearchResultOutcome of a vector search: the matching documents, and any errors encountered while running it.
VelocityHtmlTemplaterRenders pages by combining a theme with a content template using Apache Velocity, and is the default HtmlTemplater implementation used to serve websit...
VoucherBeanRead-only view of a Voucher entity, flattened for use in Velocity templates and JSON responses.
VoucherCheckoutLineItemCheckout line item representing a voucher redeemed against a cart, adding a negative-priced credit for the voucher's cash value.
VoucherStateSummaryAggregate count and cash total for vouchers of one voucher type in one status.
VoucherStatusChangeBeanRead-only view of a single VoucherStatusChange entry, for use in templates and JSON responses.
VoucherTypeSummaryAggregate voucher counts and cash totals for one voucher type, broken down by status.
WebPushNotificationResponseImmutable wrapper around the HTTP response returned by the push service when a web push notification is sent, letting callers check whether delivery s...
WebPushServiceSends web push notifications to browser subscribers using the Web Push protocol with VAPID authentication, via the underlying nl.martijndwars webpush...
XMLHttpRequestMakes outbound HTTP requests from app scripts, mirroring the browser XMLHttpRequest API so existing client-side knowledge carries over.
XYDataPointRepresents one line chart data point: an x value and a y value.
To get full access to the Kademi Hub existing customers can login here, or new customers can register here.