Guides
Screens
Admin App
The admin app contains all of the general administrative screens such as managing users and groupsDashboard Alerts App
This lets you display alerts to users on their dashboard. They can be sent to groups immediately, or triggered from events with automationAuctions App
The auctions app lets you run auctions on your websites, either using points or as regular cash auctions. Auctions can be of different types including the usual highest bid type, or lowest unique bid.AWS
The AWS app is used to manage and access various Amazon Web Services resources that is used in Kademi.Blogs
This app lets you create blogs, where each blog is a list of blog articles. Blogs have tags which users can select to indicate preference or browse. Articles can be featured for greater prominence and have a set of images.Calendars
Calendars are mobile enabled, and allow you to invite users to events by email which they can register to attend. Includes scheduled reminders and confirmation emails.ContactUs App
The ContactUs app creates contact pages for users of your website to submit forms, typically requesting informtation. These forms can be customised to collect general information, such as surveysDashboard App
The Dashboard app gives each user a dashboard which presents them with a jumping off point when they log in. Other apps might add components to the dashboardEmail App
The email app has featured for sending automated and group emails, and gives users their own inbox for a summary of notificationsEWay Payments App
Provides a connector to the EWay payments processor service. You must get an EWay account to use this app.FileServer App
FileServer app allows you to use Fuse like an internet file server.Forums App
Forums app allows you to run forums for your users.Funnel app (KJourneys)
The funnel app is a powerful tool that lets you create journeys where a multitude of actions trigger a range of reactions.GroupResources App
Group Resources lets you share files with particular user groupsIntegration services
Integrate with external systems and data sources, by implementing email and web endpoints that can send and receive and transform files and dataKongoDB app
The kongo DB app lets you to create a NoSQL style custom database, for developers to build custom apps in the Kademi platform.Online Learning App
The learning app allows you to create courses and incentives and manage learners progressOrgsLocator app
The orgsLocator app lets you show and search for organisations on a map.Payment app
The payment app lets you use and manage payment related resources such as invoices, quotes, purchase orders etc.Products App
The Products app gives you a database that you can add your products to. Users can browse the products and order them. Normally used for ordering samples and marketing materials.Referral app
The referral app lets users send referrals to friends and family, inviting them to the site.Reporting app
The reporting app lets you generate reports and access informative data, with the option to download csv files of information.Salesdata App
The salesdata app lets you upload data and data sales, create queries, data series, and KPI's, and show performance.Scheduler App
Scheduler runs jobs at certain times. Good for sending reports etc to administratorsSearch App
The search app lets your users search for various sorts of content such as products, learning modules and users.SMS App
The sms app lets you send SMS messages from your Kademi account.Team App
The team app lets you manage teams and team members, often used with KCRM.User app
The user app lets you handle and manage user related functionality within Kademi. Some functions include user authentication, profile management, user activity and related data.Video Survey App
The Kvidsurvey app lets you add and manage a video survey, where users can respond to a question by recording themselves answering.Vouchers app
The vouchers app lets you create and allocate vouchers with unique voucher codes and a fixed quantity available, which can be validated and redeemed.Templating reference summaries
AppIndexer
Application
AssetView
DatabaseTableProvider
EngagementScoringFactorType
Event
IDPAction
IDPExpression
JourneyNode
PipelineStep
Resource
Role
Table
EmailTriggerType
Templating
AbortRequestIDPAction
AbstractBranchFolder
Base class for resources which represent a branchAbstractContentResource
AbstractECommerceStoreCollectionResource
The common base class for both the store folder and category folders Provides methods for searching for products within this resource. Eg a search within a ECommerceStoreCategoryFolder only yields results within that category, but a search on ECommerceStoreFolder yields results from all categories in the storeAbstractManageAssetFolder
AbstractManageAssetResource
AbstractResource
Base class for pretty much all resourcesAbstractRewardStoreCollectionResource
AbstractShippingProvider
AcceptQuoteGoal
When a profile is added/removed to a groupAccessBlockIDPAction
Calling this will create an access block on the user in contextAccessLogBean
ActionHandlerConfigBean
ActivateAlertAction
AddKnownIpIDPAction
AddToGroupGoalAction
AddToOrgTypeGoalAction
AddressBean
AggBucket
AlertBean
AlertsApp
AlertsManager.DashboardAlertSafeHelper
AlertsManager
AllocateVoucherGoalAction
AltFormatBean
AltFormatContentView
AltFormatMatcher
AndIDPExpression
AppControlBean
AppReport
AppTransactionManager
A transaction manager intended specifically for use with custom apps This is available as the transactionManager variable. So in custom apps you use this:transactionManager.commit();
ApplicationManager.ResourceBeanList
ApplicationServices
Applications
Provides access to other applications EgAppsPageHelper.Update
AppsPageHelper
AssetChangedEvent.AssetChangedAction
AssetManager
AssetTypeService.ContentTypes
AssetViewsBuilder
AssetsFolder
AssignToGoalAction
AsyncJobManager
AttachLeadFileGoalAction
AttendeeGuest
Used by the calendar managerAuctionApp.AuctionViewerRole
AuctionApp
AuctionBidBean
AuctionBidEvent.AuctionBidAction
AuctionBidEvent
Fired when a bid is placed. Can mean that a user has placed a new bid, or that a user who was previously in teh lead is no longer leadingEvent ID: auctionBid
AuctionBidEventTriggerType
AuctionBidGoal
AuctionBidSimpleBean
AuctionClosedEvent
Fired when an auction closes, it has the following actions:- CLOSED_WITH_WINNER - Fired when there is a winner, the source profile is the winner
- CLOSED_WITHOUT_WINNER - Fired when there is no winner
- CLOSED_BIDDER - Fired for every user that has placed a bid on the auction. Excludes the winner
AuctionClosedEventTriggerType
AuctionFolder.AuctionImageResource
AuctionFolder.Image
An image which has been assigned to the auction with an optional orientation. These are generally used for templatingAuctionFolder
AuctionManager
Used for managing Auction and AuctionSet objectsAuctionsFolder
Represents the root collection of auctionsAuditManager
AutoEmailSearchManager
Methods for accessing automation and mail statsAutomationGoal
When an automation event is triggeredBadgeAwardFunnelAction
BadgeAwardFunnelActionType
BadgeAwardGoalAction
BadgeRevokeFunnelAction
BadgeRevokeFunnelActionType
BarcodeManager
BaseBucket
BaseCriteriaBuilder
BaseSearchPage
Begin
BlogArticleFolder.BlogFileResource
BlogArticleFolder.BlogImageResource
BlogArticleFolder.Image
An image which has been assigned to the blog with an optional orientation. These are generally used for templatingBlogArticleFolder
Represents an article in a blog.An article has a title, body, brief description and blog images. An article is also a folder and can contain resources such as images used in body content
Blog images are images which are specifically assigned to the article with an orientation and they are used for templating purposes.
Articles have an approval process to allow blog authors to have their work checked before being published to the website.
BlogFolder
A BlogFolder is a folder containing blog articles. It also has tags and categories which can be assigned to its articlesBlogManager
BlogsApp.BlogReaderRole
Gives read permission to blogsBlogsApp.BloggerRole
Allows people to author blogs, but NOT to publish themBlogsFolder
Represents a collection of blogs, where a blog is a stream of articlesBlogsResourceList
A specialised type of ResourceList, this has extra methods for handling lists of blog articlesBonusPointsRuleType
BranchGoal
A goal which is linked to multiple other goals. This goal is achieved when one of the subsequent goals is achieved This allows a journey to have branches, like decision nodes but where we wait for an outcome.CalEventAttendeesResource
CalEventResource
Represents a calendar event, ie an invitationUsers can RSVP for this event by posting a form to is containing a parameter 'rsvp'
Calc
CalcContext
CalendarEventAccepted
Event ID: calendar-event
CalendarEventAcceptedTriggerType
Called when a user RSVP's for a calendar eventCalendarEventDeclined
Event ID: calendar-event
CalendarFolder
CalendarHomeFolder
CancelGoalAction
CaptchaManager
Cart.CartShippingAddress
CartManager.CartItemBuilder
CartManager.CheckoutItems
Represents a shopping cart including virtual items.Physical cart items are those the user has explicitly added
Virtual items are those the system has added based on additional rules. This includes vouchers, after a user has entered a valid voucher code. And also promotional items, such as 'free gift with purchase'
Virtual items cant be explicitly removed or have their quantity changed.
CartManager.CheckoutLineItem
CartManager.DefaultCheckoutLineItem
CartManager
CashCurrency
CatalogManager.ProductBuilder
CatalogManager.ProductParameterBuilder
CatalogManager.ProductSkuBuilder
CatalogManager.SkuSearchBuilder
CatalogManager
CategoryBean
CategoryTableProvider
CertificateFolder
Represents a certificate, typically awarded for completed training activities This folder will generate HTML applying a template. The parent folder will usually be a module folder, and if so status for the current user about that module will be referenced in the certificate.ChartManager.CategoryDataPoint
ChartManager.ChartBuilder
ChartManager.DataPoint
ChartManager.XYDataPoint
ChartManager
CheckoutItems
Represents a shopping cart including virtual items.Physical cart items are those the user has explicitly added
Virtual items are those the system has added based on additional rules. This includes vouchers, after a user has entered a valid voucher code. And also promotional items, such as 'free gift with purchase'
Virtual items cant be explicitly removed or have their quantity changed.
CheckoutLineItem
CheckoutRuleType
CheckoutRules
ChildrenOfTypeMap
Column
Maps a column or attribute to a field name. Used for inserting dataColumnsHelper
Provides typed access to the value in a column, including the ability to evaluate expressionsCommentBean
Represents a comment by a user on some resource.CommentEngagementScoringFactorType
CommentFunnelTrigger
CommentFunnelTriggerType
CommentsResource
CommonList
CompareIDPExpression
greater thenComponentBean.AttsMap
ComponentBean
ComponentHtmlTemplater
This HTML Templater assumes page templates contain components, so should not be directly templated. Instead this will look for a master template tag in the page template, and then invoke that passing the template path for it to useConstExpression
ConstIDPExpression
ContactEvent
This event is fired when a user submits a contactus form. It contains an attribute called contactRequest, which returns the ContactRequest recordEvent ID: contact
ContactEventTriggerType
ContactFormEngagementScoringFactorType
Scores engagement based on whether users have opened emails (ie pixel tracker has been hit) , or converted (ie clicked through)ContactFormFunnelTrigger
ContactFormFunnelTriggerType
ContactFormGoal
When a contact form/landing page is accessed or submittedContactFormService
ContactFormSubmittedFunnelEvent
ContactRequest
ContactRequestBean.AttachmentBean
ContactRequestBean.FieldBean
ContactRequestBean
Represents a single contact request, which is a submission from a (possibly anonymous) userContactRequestsJsonResource
Outputs the stream activity as jsonContactUsFormPage
Submit forms to this resource (usually on /contactus) as a POST to send contact email requests The contactus form page is conceptually very similar to the group registration page. Both will create a profile if it doesnt exist and you can submit data to both, and both can trigger events to send emails, etc. The difference is that a contact submission only creates new data, it never changes existing data. Whereas registering a user can allow existing profile data to be modified.Captcha
If a Captcha app is enabled it will be used to verify the response. You can customise the error response message by sending a parameter called invalidCaptchaMessageContentApp.AssetContentType
ContentApp.AssetContentTypes
ContentApp.ContentAuthorRole
ContentApp.ContentViewerRole
ContentApp
Does lots of things to do with content delivery.The main thing it does is convert FileResource objects to RenderFileResource objects, for html files which are accessed within a website. This is what allows templating to occur.
Note that this will not return a RenderFileResource for html files which have a doctype
ContentAuthorRole
ContentFileView
ContentItemAssetResource.ContentAssetData
ContentSearchPage
Use this to do queries, optionally including aggregations and selecting terms Eg contentSearch?q=farm&aggregations=type/categories&term-type=News This will query for: query text = farm (will search in title, content) type = News (will look for a type field of exact value News) aggregations: first by type, then with a nested aggregation of categoriesContentStorageService.ContentInfo
ContentTypes
ContentViewerRole
ContinueIDPAction
ControllerMapping
Is a mapping of a path to a logical controller. For each controller there are a list of methods which can be called based on the http method and parametersControllerMappingBuilder
Use this to create a URL to controller mapping for a custom app or for a website controller. Use either the admin or website controller root objects depending on whether you want to create a controller for websites or for the administration system- controllerMappings.adminController() - For admin screens
- controllerMappings.websiteController() - For website controllers
controllerMappings.adminController().path("/bluefin").enabled(true).defaultView(views.templateView("bluefin/manageProjects")) .addMethod("POST", "addProject", "newProjectName") .addMethod("POST", "setupDatabase", "setupDatabase") // temporary only, needs to be part of initialisation .addMethod("POST", "newCandidate", "newCandidateId") .addMethod("POST", "publish", "publish") .addMethod("POST", "startSync", "sync") // start a sync operation, will redirect if need oauth login .addMethod("POST", "updateFields", "updateFields") // update project fields .build();
ControllerMappingList.AppMenuItem
ControllerMappingList.CheckoutRuleTypeBuilder
Builder to help building custom checkout rule typesControllerMappingList.FieldV2Builder
ControllerMappingList.FunnelActionTypeBuilder
ControllerMappingList.FunnelTriggerTypeBuilder
ControllerMappingList.JsProcessable
ControllerMappingList.PaymentProviderDetails
ControllerMappingList.PaymentProviderDetailsBuilder
ControllerMappingList.PromotionMechanicTypeBuilder
ControllerMappingList.RepoAppEngagementScoringFactorType
ControllerMappingList.RepoAppJourneyFieldV2
Method signature should be evalMyField(parentOb, profile, vars)ControllerMappingList.RepoAppQuery
ControllerMappingList.RepositoryAppRole
ControllerMappingList
ControllerMethod
ControllerResource
This is the resource which gets created when a controller mapping is located. It executes the javascript and templates Scripts executed from a ControllerResource have access to these global variables- controllerMappings
- views - ViewsBuilder
- formatter - Formatter
- log
- applications
- transactionManager - AppTransactionManager
- fileManager - FileManager
ControllerSecurityManager
CookieManager
CopyLeadFileGoalAction
CounterManager
Provides access to Named Counters, which provides a simple transactional counter mechanismCountryCodes.CountryCode
CountryCodes
CourseFolder
A course, which is just a special type of folder that contains modulesCpdAwardBean
CreateCalendarEventGoalAction
CreateDataSeriesRecordGoalAction
CreateNoteGoalAction
CreateTaskGoalAction
CredentialEngagementScoringFactorType
Scores engagement based on whether users have opened emails (ie pixel tracker has been hit) , or converted (ie clicked through)CredentialSetFunnelEvent
CredentialSetGoal
When a user creates a password or other credentialCryptoImpl
CsvInput
Parses CSV files into lines of discrete values which are fed to row processing stepsCsvOutput
Converts incoming rows into a CSV stream sent to the pipeline outputCsvView
Currency
Represents some type of currency which can be used to make payments. Different currencies are not interchangeable. Currencies, in this context, include actual physical currencies like USD, AUD, etc, as well as things which can be considered means of payment within Kademi but are not necessarily actual currencies, such as reward points, Bitcoin, trade dollars, etcCurrentOperationService.CurrentOp
CurrentOperationService.OperationInfo
CurrentOperationService.SimpleLogEvent
CurrentOperationService.TenantStats
CustomCheckoutRule
CustomCheckoutRuleLineItem.CheckoutLineItemBuilder
CustomCheckoutRuleLineItem
CustomFieldDuplicateProfileMatchMethod
CustomerAction
Represents an action in relation to a customerDashboardAlertPage
DashboardPage
Dashboard for the user. Most functions will be provided by PortletApplications which will be invoked from the template using the PortletsDirective Eg: #portlets("messages") , which will render portlets for the messages section of the page Standard sections are intended to be: messages - brief list of messages at top of page primary - this is the main section of the page, with about 70% width secondary - this is a narrowed section of the page, possible lower down for small screen clientsDataSeriesData
DataSeriesFolder
Represents a Data Series, and provides properties for ranking participants etcDataSeriesLeaderBoard.LeaderboardRanking
Represents a ranking of a participant. The rank is zero indexed, and zero is the highest or lowest as appropriate for the method which returned the results The participant is either an OrgData or ProfileBeanDataSeriesLeaderBoard
This represents a period of time (if dates have been specified) for a data series, which can be queried to find the top (or lowest) results Note that results can be attributed either to an individual (ie a profile) or to the organisation they're in (eg store or other business unit)DataSeriesManager.DataPoint
DataSeriesManager.PointsAllocationSourceBuilder
DataSeriesManager
Provides methods for accessing and manipulating data series records and KPIsDataSeriesProvider
NOTE - use the SalesDataInserter instead!!!!DataSeriesValueGoal
When a user (or an org they're connected to) has achieved a certain value in a specified data seriesDatabaseSourceStep
Executes a query against the kademi database and feeds each resulting object to the next step Select the appropriate query source with providerIdDatabaseUpdateStep
Intended to receive rows. Updates, deletes or inserts into the selected provider based on the mode property which can be - update, insert, delete, updateOrInsert Update, Delete and updateOrInsert operations require an identifier This step works with a provider that provides access to a particular table. Available providers are:- CategoryTableProvider
- DataSeriesProvider BUT you should probably use SalesDataInserter instead
- GroupMembershipTableProvider
- OrganisationTableProvider
- PointsRowProvider not complete at time of writing
- CategoryTableProvider
- ProductsTable
- ProductOptionsTable
- ProductInRewardTableProvider
DateFilterFunnelTrigger
DateFilterFunnelTriggerType
DateManagerV1.DateOnlyTemporalParser
DateManagerV1.DateTimeTemporalParser
DateManagerV1.SimpleTemporalParser
DateManagerV1.TemporalParser
DateManagerV1
This will replace formatter for date functions. Note this uses a versioned name, to allow evolution. As changes are made with break backwards compatibility, this will be copied to a new versionDayStat
DbAppSettingsService.AppControlAppSettings
DebitPointsFunnelAction
DebitPointsFunnelActionType
DebitPointsGoalAction
DecisionAction
DecisionStep
Selects the next step from a list of options Configured with a map of next steps, where the key for each step is used to select it Provide with either a column number or an attribute name to use to get the value to select the next stepDefaultCheckoutLineItem
DefaultElasticSearchManager.DefaultKSearchRequestBuilder
DefaultElasticSearchManager.DefaultKSearchResponse
DefaultElasticSearchManager.DefaultMappingMetaData
DefaultShareableItemEvent
DefaultShippingProvider
DefaultStreamEvent
DefaultTaxCalcProvider
Dependency
DependencyMappingBuilder
DerivedFunnelField
DiffieHellmanModule
DirectoryResource
Represents a version of a directory, containing the members which are in that directory in the repository snapshotDiscountPromotionItem
DoPasswordResetPage
DownloadCustomerDataRole
DuplicateProfilesList
This holds a list of duplicated profiles, with one identified as the first, which will be the default merge destinationDynamicComponentService.SizesHelper
Return the percentage of the viewport this element will have at each breakpointECommerceApp.StoreViewerRole
ECommerceCartItemResource
ECommerceShoppingCartResource
ECommerceStoreFolder
The root resource for an e-commerce store. This provides access to categories and products linked to this store See the base class AbstractECommerceStoreCollectionResource for moreEWayTransport.CredentialsBean
EditAssetAction
EditContentItemView
Generates a default html edit formEditFormContentItemAssetView
ElasticSearchManager.RecentQuery
EmailApp.EmailStats
EmailAttachment
Represents an email attachment.EmailAttachmentFile
EmailContentService.EmailContent
EmailContentService
EmailDeliveryEvent
Fired when an email is delivered, failed to deliver, opened, convertedEvent ID: emailDelivery
EmailDeliveryEventTriggerType
This type of event is fired on an email delivery result, ie when delivery has succeeded, failed, opened or convertedEmailDeliveryFunnelEvent
EmailDuplicateProfileMatchMethod
EmailFolder
List emails for this userEmailInteractionGoal
Transitions based on the result of the last email sent by this funnelEmailItem
Represents a task to send an email, which may have been sent or might be queued to be sent. Also represents an email received, if the recipient profile is set it will show in their internal inbox. Email attachments: TODO - probably just have a list of name and crc, then the attachment can be put in any repositoryEmailItemBuilder
Use this to create and send an email. Example use:applications.email.emailBuilder() .recipientAddress('test@yourdomain.co') .fromAddress('noreply@yourdomain.co') .subject('An email from ME! :-)') .html('<p><strong>Hello World</strong></p>') .build();or
var recipient = page.find('/users/test3/').thisProfile; applications.email.emailBuilder() .recipient(recipient) .fromAddress('noreply@yourdomain.co') .subject('An email from ME! :-)') .html('<p><strong>Hello World</strong></p>') .build();
EmailItemFolder
Represents a single email, which might contain attachmentsEmailManager.EmailStatusCounts
EmailManager
Manager class for EmailItemsIncludes API for creating and sending emails. Eg
var builder = services.emailManager.emailBuilder();
builder
.recipientAddress(recipient.email)
.fromAddress(sender.email)
.subject(sender.formattedName + " has sent you an e-card")
.html("Hi "+ recipient.formattedName +"
" +
'' + sender.formattedName + ' has sent you an e-card. Please click here to view
');
builder.build();
EmailNotificationTableActionHandler
EmailOpenAcknowledgePage
Just outputs a one-pixel gif, and records the associated email as being openedEmailReceivedEvent
Fired when a user receives an emailEmailReceivedEventTriggerType
EmailResponseEngagementScoringFactorType
Scores engagement based on whether users have opened emails (ie pixel tracker has been hit) , or converted (ie clicked through)EmailResultGoal
Transitions based on the result of the last email sent by this funnelEmailSendFunnelEvent
EmailSendGoal
Goal acheived when a matching email is **sent**, regardless of delivery statusEmailSenderDetails
EmailSenderDetailsBuilder
EndGoalAction
EndPointMapping
EngagementScoringFactor
EngagementScoringFactorType.EngagementScoringProperty
EngagementScoringFactorType
EntityBean
EventBuilder
EventGoal
When an trigger event is fired. Works with TriggerFunnelEventEventWrapper
EwayApp.DownloadCustomerDataRole
EwayApp
ExcelInputStep.NextSheetStep
ExcelInputStep
Parses incoming stream as an excel workbook (xslx). This step can be configured to pass on the entire workbook, or just a single sheet, or it can process rows optionally skipping headers. You can specify a nexts step for each sheet (either use sheetNum or sheetName) <ExcelInputStep> <skipHeaderRow>false</skipHeaderRow> <processRows>false</processRows> <nextSheetSteps> <ExcelInputStep sheetNum="0"> <next class="JsRowStep"/> </ExcelInputStep> </nextSheetSteps> <useXml>false</useXml> </ExcelInputStep> Or a single next step which will be given the entire workbook as a org.apache.poi.ss.usermodel.Workbook <ExcelInputStep> <skipHeaderRow>false</skipHeaderRow> <processRows>false</processRows> <next class="JsRowStep"/> </ExcelInputStep>ExcelOutputStep
Is intended to be used by other steps to create, populate, and output an excel document dynamically This class has methods to create a workbook which can then be manipulated from a previous stepExpiringPointsList
ExpiringPointsTable
ExpressionShippingProvider
ExtProfileBean
Just like a normal profile bean, but with extra stuff that admins can seeExtraField.ExtraFieldRenderer
ExtraField
Facet
Extracted From FacetsReportFacetsReport.LongRangeFacetBucket
FacetsReport.TermFacetBucket
A term bucket supports sub bucketsFacetsReport
FastPointsDebitRowProvider
FastPointsRowProvider
FederatedLoginProviderBean
Field
FieldBean
FieldMapping
FieldsService
FifoList
FileHashView
FileManager
FilePostBuilder
FileResource
A FileResource represents a file, such as an image or video. It will also represent HTML pages and there are methods for accessing the structured content within a HTML page, such as title, body and data parametersFileStorageManager
Manages file content stored on a per tenant basisFileUploadEvent
Currently only supports automation triggers, not journey nodesFileUploadEventTriggerType
FileUploadFunnelTrigger
FileUploadFunnelTriggerType
FileUtils
FirstLastNameDuplicateProfileMatchMethod
FixedWidthInput
Parses fixed width text files into lines of values which can be fed to row processing stepsForkGoalAction
FormContext.ValidationContext
FormContext
FormData
FormGoal
When a profile is added/removed to a groupFormSubmittedEvent
Formatter
Handy functions exposes to rendering logic for formatting.ForumManager.CommentPostBuilder
ForumManager.ForumPostBuilder
ForumManager.PostBuilder
ForumManager
ForumReplyResource
FreeGiftCheckoutLineItem
FtpManager
FtpSession.FileSpec
FtpSession
Funnel
FunnelActionTypesList
FunnelAutomation
FunnelEdm
Links a Funnel node with a EmailItem or SmsItem, so we can report on EDM statsFunnelExport
FunnelManager
FunnelTester
Added to a funnel so that users with particular email addresses get special treatment to facillitate testingFunnelTriggerTypesList
GeoIPService
GeoIpWrapper
A Wrapper for the MaxMind Geo IP2 lookupGeoLoc
GeoLocationIDPExpression
GeoManager
GiftPromotionItem
GoFunnelEvent
This works with the StopGoGoalGoalAttainedTriggerType
Governor.OperationTimeLimit
GrantRewardsFunnelAction
GrantRewardsFunnelActionType
GrantRewardsGoalAction
GroupExtraField
An extra field that maps to a an editable group select drop down.GroupGoal
When a profile is added/removed to a groupGroupInWebsiteFolder
Represents a group which has access to the current website. This can be used to find information about registration options, etcGroupMembershipExpression
True if the user is in any of the listed groupsGroupMembershipTableProvider
GroupRegistrationEvent
Fired when a user submits a registration form successfullyEvent ID: registration
GroupRegistrationPage
Manages registration of a user when signing up to a groupGroupSignupStat
GroupsFacet
GuestBean
HlsPrimaryBean.HlsProgramBean
HlsPrimaryBean.HlsSegmentBean
HlsPrimaryBean
HttpPushManager
HttpWrapper.CookieBuilder
HttpWrapper
Provides access to the http request and response objects for when handling http operationsIDPContentAccess
Represents a rule for whether items should be specifically included or excluded from the content viewing role.This allows fine grained control, ie specific directories can be enabled or disabled
Note that if this excludes access, other roles can still grant access
ImportContextV2.ColumnInfo
ImportContextV2
InfusionsoftCreateOpportunityAction
IntegrationApp.IntegrationExecutorRole
IntegrationApp
This app assists with getting data in and out of your kademi account, integrating with your external data stores. Integration services are made available through the websites which have the integration app enabled. You configure it by creating an XML file in /theme/integration.xml, which has a list of endpoint mappings. For example:InvoiceBean
InvoiceListHolder
InvoiceListStatus
InvoiceManager
InvoicingService
IpHit
ItemCount
Represents an item and the number of its occurences. Used with blog tagsItemisedPrice
Represents the various factors which contribute to a final costThe final cost is generally the sub of the adjusted extax cost plus tax
Note that if a promotional final cost is set, then that will not be the case, and the tax + adjustedPriceExTax will NOT equal the final cost.
JWTManager
JoinTableBuilder
JourneyFunnelFieldsList
JsAssetAction
JsMetricType.JsMetricTypeBuilder
JsMetricType
JsPointsRuleType.AbstractCheckoutRuleContext
JsPointsRuleType.CheckItemsCheckoutRuleContext
JsPointsRuleType.ProcessCheckoutRuleContext
JsPointsRuleType
function doProcessRecognitionPoints(record, ruleParams, pas, recipientEntity){ }
function isIncluded(record, ruleParams, pas, recipientEntity) { }
JsProcessable
JsRecognitionPointsRuleType
JsRowStep.RowWriter
JsRowStep
Executes javascript for each row. The js is expected to transform or aggregate incoming data, probably holding stateful information between calls to writeRow. Output will be generted from the js by calling writeRow(..) Script context variables:- pipeline - a Pipeline object
- thisStep - also a referene to the current Pipeline
- formatter - the Formatter
- nextStep - a NextStep object, representing the next step to be executed after the current
- log - the logger for generating console log output
- applications - an Applications object, use it to reference other apps and their services, eg applications.search.searchManager.search(...)
- fileManager - a FileManager object
<RecordExecutionStep> <preventDuplicates>false</preventDuplicates> <execIdTemplate>StarClass-Dealer-Targets_2015</execIdTemplate> <next class="TransactionStep" alwaysRollback="false"> <next class="ExcelInputStep"> <useXml>true</useXml> <processRows>true</processRows> <nextSheetSteps> <NextSheetStep sheetNum="0" startRow="2"> <next class="JsRowStep"> <!-- Execute the next step for each month, setting the month number into attribute monthNum --> <jsPath>/integration/integration.js</jsPath> <execFn>foreachMonth</execFn> <next class="SalesDataInserter" mode="updateOrInsert" logInserts="true" logUpdates="true"> <seriesName>star-class-partspurchase-data</seriesName> <column field="attributedTo" columnName="D"> <expr> org = pipeline.thisOrg.findChildOrgByField("StoreCode", value); if(org != null){ return org.orgId; } return null; </expr> </column> <column field="amount" > <!-- column G + 10*month --> <expr><![CDATA[ col = 2 + formatter.toInteger(pipeline.attributes.monthNum); if (0 >= row[col]) { return 1; } else { return row[col]; } ]]></expr> </column> <column field="fromDate"> <expr>formatter.monthStart(formatter.now, pipeline.attributes.monthNum)</expr> </column> <column field="toDate"> <expr>formatter.monthEnd(formatter.now, pipeline.attributes.monthNum)</expr> </column> </next> </next> </NextSheetStep> </nextSheetSteps> </next> </next> </RecordExecutionStep>
JsScheduleBean
JsScheduler
JsStatusInfo
JsTableActionHandler.JsTableActionHandlerBuilder
JsTableActionHandler
JsonDatabase
This represents a database which may contain JSON documents A JsonDatabase will normlly be connected to a website and accessed either through a REST api, or server side through js controllersJsonDatabaseFolder
JsonDatabaseService.OnReindexProgressEvent
JsonDatabasesFolder
JsonDocumentResource
JsonResult
Value object holding the result of some operation in a generic form which is suitable for outputting as JSON.JsonView
Generates JSON output. The source can be a named page attribute, or an actual object. There is an option to wrap the data in a JsonResult object to be compatible with the kademi forms pluginJunctionCriteriaBuilder
KChatApp
KCriteria
KCriteriaBuilders.KCriteriaBuilder
KCriteriaBuilders
See https://github.com/Kademi/kademi-dev/issues/5404
#set( $crit =
$services.criteriaBuilders.points.groupBy("pointsTag").count("id").sum("numPoints")
)
#set( $crit = $crit.ge("issuedDate",
$services.queryManager.commonStartDate) )
#set( $crit = $crit.lt("issuedDate",
$services.queryManager.commonFinishDate) )
#set( $stats = $crit.execute(1000) )
Tag | Num records | Points |
---|---|---|
$!row[0].title | $!row[1] | $!row[2] |
controllerMappings
.websiteController()
.path("/mycontroller")
.enabled(true)
.isPublic(true)
.addMethod("POST", "saveOrder")
.postPriviledge("READ_CONTENT")
.build();
function saveOrder(page, params) {
log.info('saveSession > page={}, params={}', page, params);
transactionManager.runInTransaction(function () {
var product =
services.criteriaBuilders.get("product").eq("name",
"p1").executeSingle();
log.info("product {}", product);
var builder =
services.criteriaBuilders.getBuilder("productOrder");
var newOrder = builder.instantiate();
newOrder.product = product;
builder.save(newOrder);
log.info("Created order with ID={}", newOrder.id);
});
return views.jsonView(true, "Saved!");
}
KCriteriaTable
KHotSpotsMonitor.HotSpot
KPIBean
KSearchQuery.KQueryField
KSearchQuery
KSelectorItem
Used with jquery.kselector to provide a generalised method of selecting users, orgs, groups and org typesKStopWatch
KademiArrayList
KademiCacheStats
KademiCalendarSearchService.AttendeeResource
Represents an explicit invitation to an event for a userKademiCurrentDateService
KademiRequest
KademiResponse
KademiSimpleJdbcEventListener.SqlStats
KademiSubscriptionEvent
KademiSubscriptionGoal
KademiSubscriptionManager.MetricUsageData
KademiSubscriptionManager.UsageFactor
KademiWebsocketWrapper
KnownIpIDPExpression
Returns true if the request IP is contained in the list of IPs of the given classKnownIpRangesIDPExpression
Returns true if the request IP is in one of the IP ranges provided.KpiDataPage.KpiLevelBean
KpiDataPage
A KpiDataPage is a resource class which represents a KPI. The parent of a KpiDataPage is the data series that it belongs to. A KPI has 3 main ingredients:- A way of aggregating records to get a single number. Eg sum, count, average. This is the aggregation
- A time interval, such as weekly, monthly, quarterly. As well as the interval there is a multiples, ie 2 weekly, 3 monthly, etc
- A list of levels which categorise the result. Eg 0-80% is Poor, 80-90% is Good, and 90-100% is Great
KpiLeaderBoard
KpiResultBean
LeadBean
LeadCompaniesFolder
LeadCompanyPage
LeadEndedEvent
LeadFilePage
LeadFileResource
LeadFilesPage
LeadFormBySalesPage
LeadFormNodePage
LeadFormPage
LeadFormsPage
LeadManAnalyticsPage
LeadManApp.FunnelExportTable
LeadManSearchHelperV1
LeadManager
LeadPage
LeadProfilePage
LeadProfilesPage
LeadSearchCriteria
LeadTaskPage
LeadTasksCsvPage
LeadTasksPage
LeadTeamPage.TeamMember
LeadTeamPage
LeadmanService
LeadsFolder.TaskStats
LeadsFolder.TeamStats
LeadsFolder
LeadsForCustomerPage
LearnerProgressEvent
An event triggered by some condition related to learning progress, eg starting, completing or not completing after some period. Event ID: learnerProgressLearnerProgressEventTriggerType
LearnerRole
The learner role is a context-less role, in that any member of a group with this role will get access to learning content. However, content is protected by the Program/Group enrolement, which is checked here.LearningApp
LearningManager
LearningTemplateHelper
This is a collection of functions to assist with templating for learning related contentLevelStatus
ListAndCount
ListOptionType
LogAssetAction
Really just intended for debuggingLogRequestIDPAction
Just logs the request. Doesnt abort or continueLoginsMetric
LookupMetricIDPExpression
LookupTableBean.ComparisonLookupTableField
LookupTableBean.OutputTableField
A field which represents an output from the lookup process, ie this is what is being looked up. A row may have multiple outputsAn output field cannot be used to lookup data
LookupTableBean.PersistedLookupTableField
LookupTableBean.TermLookupTableField
LookupTableBean
MailboxMapping
This is a mapping for a mailbox controller.MailboxMappingBuilder
Use this to create a mailbox for a custom app. This will allow the custom app to capture incoming E-Mails. For example:controllerMappings .mailboxController() .enabled(true) .verifyMailbox('verifyMailbox') .storeMail('storeMail') .build();
MaintCachePage.PerRequestSqlInfo
MaintCachePage.SqlInfo
MaintCachePage.SqlStatsAndInfo
MaintEmailPage.DeliveryThreadInfo
ManageActivityPage.ActivityParticipant
ManageAssetsFolder
ManageBinaryAssetFolder
ManageContactRequestsFolder
ManageContentItemFolder
ManageEmailItemsFolder.EmailItemBean
ManageGroupResourcesPage.GroupInWebsiteItem
ManageImageAssetFolder
ManageJsonDatabaseFolder
ManagePostsFolder.PostBean
ManagePostsPage.RecentPostBean
ManageProfileApplication.ProfileActionBean
ManageProfileApplication.ProfileTab
ManageProfileApplication.SummaryPanel
ManageQueryItemFolder
ManageRepositoryApp.InstalledUser
ManageSalesDataSeriesFolder.DataCaptureField
ManageSalesDataSeriesFolder.KPIBean
ManageSendEmailContentResource
ManageSendEmailResource.LeadBean
ManageShoppingCartFolder
ManageShoppingCartsFolder
ManageSkusFolder.Variant
ManageTextAssetFolder
ManageUsersResultDbDTO
ManageUsersResultElasticDTO
ManageVideoAssetFolder
ManualPaymentApp
This is a simple payment provider, which does not ask for additional payment informationMapBuilder
MapReduceProcessable.MapReduceSubTask
MapReduceStep
Splits incoming data into smaller batches which get processed in parallel The input data is supported as two forms- String - must be a file hash (typicaly used with PersistAsTableStep)
- InputStream - will be saved with TableUploadManager, so supports CSV and Excel. But if Excel only the first worksheet will be used
MapStep
Adds rows to a map keyed on a value generated by an expression. The map is set into a pipeline attribute Rows are also passed through unchanged to the next step Example: <MultiStep> <nextSteps> <DatabaseSourceStep providerId="survey"> <next class="co.kademi.server.integration.impl.MapStep"> <keyColumn column="0"> <expr>value.profile.userId</expr> </keyColumn> <valueColumn column="0"/> <keyAttribute>r1</keyAttribute> </next> <column field="rewardNames"> <value class="string">r17744</value> </column> </DatabaseSourceStep> <DatabaseSourceStep providerId="survey"> <next class="ExcelOutputStep"> <firstSheetTitle>My first sheet</firstSheetTitle> <headers> <string>ID</string> <string>Reward</string> <string>First Name</string> <string>Last Name</string> <string>r1 Pets name</string> <string>r2 Pets name</string> </headers> <column field="id" column="0"> <expr>value.id</expr> </column> <column field="id" column="0"> <expr>value.reward.name</expr> </column> <column field="firstName" column="0"> <expr>value.profile.?firstName</expr> </column> <column field="surName" column="0"> <expr>value.profile.?surName</expr> </column> <column field="ReccomendBasedOnRego" column="0"> <expr>value.answers.?answer_petsName</expr> </column> <column field="ReccomendBasedOnRego" column="0"> <expr>pipeline.attributes.r1[value.profile.userId].answers.?answer_petsName</expr> </column> </next> <column field="rewardNames" > <value class="string">r25562</value> </column> </DatabaseSourceStep> </nextSteps> </MultiStep>MarketPlaceManager
MembershipApplicationRequest
MembershipBean
MembershipList
Just a list of MembershipBean objects, with a variety of filtering and manipulation methodsMenuConfigItem
MenuItem
MenuItemList
MenuManager
MenuMapping
MethodIDPExpression
Metric.MetricBuilder
Metric
MetricCacheConfig
MetricPrecalcConfig
ModuleCompleteAction
Represents something to do when a user completes a module. Typically: - generate a certificate: defines the certificate to generate (by ID) and the number of CPD points to award (if any) - give rewards such as gift vouchers or entries in a draw: defintes the reward (by ID) and the number of rewards to give Type should be one of: - certificate - rewardModuleExpiryGoal
Triggers a goal when a module is expired or open for renewalModuleFolder
ModuleFunnelTrigger
ModuleFunnelTriggerType
ModuleProgressEvent.ModuleProgressAction
ModuleProgressEvent
An event triggered by some condition related to learning progress, eg starting, completing or not completing after some period
The attributes collection contains the ModuleFolder called module.
Event ID: moduleProgress
ModuleProgressEventTriggerType
ModuleProgressGoal
Triggers a goal as attained when theModulesList
MultiAssetAction
Allows multiple actions to be invokedMultiIDPAction
MultiNextRecipeStep
MultiStep
A step which consists of a number of steps, each given the same inputsMultiplierRecognitionPointsRuleType
MvelExpression
MyCalendarsPage
MyFilesPage
MyForumFolder
MyForumsFolder
MyInboxPage
MyLearningPage
This renders the myLearning template, and is accessed from the menu so is not within the context of any program or courseMyPointsDebitInfo
Information about the debits on awarded pointsMyPointsInfo
Information about the award of pointsMyQuestionFolder
MyRewardEntry
Represents an entry for a user in a rewardMyRewardInfo.RankAndPoints
MyRewardInfo.TeamMemberPoints
Information about the award of points to a member of the current user's team (aka organisation)MyRewardInfo
Information about this user and what they've been awarded from this reward, and how this compares to others in their organisationMyRewardsFolder
This is the home page for rewards information for a user, normally accessed on /rewards Within this folder are RewardFolder objects for each rewardNarrative.NarrativeItem
Narrative
NewAssetMatcher
Is true when the asset is newly instantiated, ie not yet persistedNewCommentEvent
An event triggered when a comment is posted Attributes comment - the text of the posted comment pageUrl - the url of the page on which the comment was postedEvent ID: newComment
NewCommentEventTriggerType
NextStep
Just holds a reference to the current pipeline and the next step to allow easy next invocation from scriptsNodeTypeBean
NotIDPExpression
NotificationBuilder
NotifyFBIIDPAction
OAuth2Details
OAuth2ProviderTemplates
OCRManager
OnSearchReindexProgressEvent
OneShotFunnelTrigger
OneShotFunnelTriggerType
OrIDPExpression
OrderBean
OrderStatusGoal
OrgData
Represents an organisation, and allows access to information about members of that organisation You can get the OrgData for the organisation which owns the current website in templating with the orgData property of the WebsiteRootFolder eg $page.find("/").orgData You can also get the OrgData object for a user's membership And once you have an OrgData, if it contains child organisations then you can use the childOrgs and allSubOrgs methods on the OrgData object to get themOrgDataList
A list of OrgData objects, with methods for filtering that listOrgExtraField
An extra field that maps to a an editable org select drop down.OrgMapData
OrgMatchRequest
OrgModulesStats
Contains module statistics for the user's primary organisation. ie the organisation which the user's primary membership is for Typically accessed from a CourseFolder or Module folder via orgStatsOrgTypeBean
OrganisationManager.DuplicateList
OrganisationManager
OrganisationRootFolder
This is the root folder for the admin site. The admin site is used to setup users and websites accessing the serverOrganisationTableProvider
Updates child organisations of the current account Example:<next class="DatabaseUpdateStep" providerId="organisation" mode="updateOrInsert" setIntoAttribute="dealership"> <!-- use star guild code as orgid, with leading zeros - 0000133433 --> <column field="orgId" column="1" > <expr> if(formatter.isNull(value) || value == "N/A"){ return formatter.padWith("0", row[2], 10); }else{ return formatter.padWith("0", value, 10); } </expr> </column> <column field="title" column="0" /> <column field="orgType" > <value class="string">dealership</value> </column> <column field="StarClExDealerCode" column="2" /> <!-- custom field for dealership --> <column field="StarGuildCode" column="1" /> <!-- custom field for dealership --> <column field="address" column="0" /> <column field="addressLine2" column="9" /> <column field="suburb" column="10" /> <!-- custom field --> <column field="state" column="11" /> <column field="postcode" column="12" /> <column field="phone" column="13" /> <column field="country"> <value class="string">AU</value> </column> <skipIfBlankColumns> <int>0</int> <int>2</int> <int>3</int> </skipIfBlankColumns> </next>
OrganisationsFolder.OrgSearchResult
OrganisationsFolderES.OrgSearchResultES
OrgsFacet
PageHitFunnelEvent
PageTemplateContentItemAssetView
PageViewedFunnelTrigger
PageViewedFunnelTriggerType
PageViewedGoal
Paginator
Paginator2
PasswordResetPage
PathIDPExpression
PaymentAddress
PaymentAddressType
PaymentApp.AccountingRole
PaymentApp
PaymentEvent
Called when a payment has been made Defines attributes - payment and recurring (RecurringTransactionBean) for recurring payments and customer (CustomerBean) for non recurring Trigger1 = true/false, where true indicates recurring Trigger2 = payment response code Example of email content: Thanks for your payment! Amount:PaymentEventTriggerType
PaymentItemListAttachment
Represents an email attachment.PaymentLineItem
PaymentLineItemBean
PaymentList
PaymentListBean
PaymentListLineItemAttachment
PaymentManager
PaymentProviderApplication.PaymentResult
PaymentProviderApplication.PurchaseItem
PaymentTransactionBean
Represents a payment through some payment provider, including its status and response codesPdfDocument
PdfManager
PersistAsTableStep
Store incoming tabular data to the TableManager, passes the hash to the next step Note that rows need to be passed as a List, not as a stream or as individueal rowsPipeline
PipelineBean
Contains summary information about the execution of a pipelinePipelineProcessEvent
This event is fired when pipeline processing occurs. Actions are available for started, completed and failedEvent ID: pipelineProcess
PipelineProcessEventTriggerType
Points.EntityAndPoints
Points
Represents the issue of a number of credits in an incentive program, such as a prize draw or a set of gift vouchers to be allocated These are the credit side of the ledger, with PointsDebit being the debit side. The result of credits - debits is the points balancePointsAccount
Represents points for a participant in a points bucketPointsAdminViewerRole
PointsAdministratorRole
PointsBalanceCalculator.ActivePoints
PointsBalanceCalculator.CalcContext
PointsBalanceCalculator.LineItem
PointsCount
PointsExpiredEvent
Fired when reward points expirePointsExpiredEventTriggerType
PointsManager.PointsRequest
PointsManager.PointsStats
PointsManager
PointsRequest
PointsRowProvider
Updates - NOTE DONE YET!!!PointsTransaction
Represents a single transaction, ie a purchase or a creditPointsTransactionAddedGoal
PointsValueReachedGoal
PortletMapping
PortletMappingBuilder
PostAttachmentBuilder
PostBean
PostSearchResource
Search for forum posts, comments, etcPostTagReceivedEvent
This represents a tag being received by a user on a specific post or comment Trigger items:1 - website
2 - the tag comment which is optional
Event ID: postTagReceived
PreRenderEvent
PriceManager.ItemisedPrice
PriceManager
PricingConfiguration
PricingManagerRuleType
PricingRulesService.PricingRule
PricingRulesService.PricingRulesSet
PricingRulesService.ShippingProvider
PricingRulesService
PricingRulesSet
ProcessMembershipGoalAction
ProductBean
ProductBuilder
ProductFolder
ProductImageResource
ProductInCategoryBean
ProductInCategoryTableProvider
This table provider takes care of inserting and updating the product in categories table,which links a product to a category- productName Eg "ABC-123" - Unique product identifier, ie SKU
- categoryName - Eg "Electronics" - Unique identifier for the category to add products to
ProductInRewardResource
ProductInRewardTableProvider
This table provider takes care of inserting and updating the product in rewards table. This adds a product to a reward store.- productName Eg "ABC-123" - Unique product identifier, ie SKU
- rewardStoreName - Eg "myrewardstore" - Unique identifier for the reward store to add products to
- multiplier - Eg "2" - Multiplier for calculating points from base cost
- margin - Eg "0.1" - Override margin from reward store
- margin2 - Eg "2" - Override margin2 from reward store
- gstRate - Eg "2" - Override GST rate from reward store
- pointsOverride - Eg "2" - Final points value, overriding the calculated value
ProductManagerRole
ProductOptionBean
ProductOptionsTable
The ProductOptionsTable handles inserting and updating product parameters and options, often called product variants A ProductParameter is something about a product which can have options, for example "size" and "color" are 2 common parameters. Each ProductParameter can have associated options. For example the "color" parameter could have options of "red" and "blue" The fields supported by this provider are:- productCode - Code for this variant, eg 'black'
- parameterCode - Code for this variant type, eg 'colour'
- parameterTitle - Title for this variant type, eg 'Choose your wonderful colour'
- name - Code for this variant, eg 'black'
- title - A descriptive title for the variant, eg 'Glossy Black'
- cost - The incremental cost of this variant
ProductOrder
ProductOrderBean
ProductOrderOptionBean
ProductOrderStatus
ProductOrdersEngagementScoringFactorType
Scores engagement based on whether users have opened emails (ie pixel tracker has been hit) , or converted (ie clicked through)ProductParameterBean
ProductParameterBuilder
ProductViewerRole
ProductsFolder
ProductsTable
This is a database table provider for Products Note that products can be associated with categories, and product options, and can also be added to reward stores. Use the CategoryTableProvider to setup categories, the ProductOptionsTable to setup variants, parameters and options for each product, and ProductInRewardTableProvider to associate products with reward stores This handles specific fields:- name - Unique identifier, ie health-fitness
- title - A descriptive title for the category
- notes - More description and notes
- status
- baseCost - The base cost of this item
- freightCost - The cost to ship the item
- category - A category to add the product to
ProfileActiveEvent
Fired when a profile is activated, ie not logged in but associated with the current requestProfileAndField
ProfileBean
ProfileIdentifierExtraField
ProfilePage
User's own profile page, for use within a websiteAccess on /profile/
Supports REST access to return JSON data if you set a json content type
curl 'http://version1.airpoints.loopbackdns.com:8080/profile/' -H 'Host: version1.airpoints.loopbackdns.com:8080' -H 'Accept: application/json'
{ "data":{ "optins":{ }, "profile":{ "firstName":"dd", "notes":"", "surName":"dd", "phone":"123123123", "nickName":"admin", "name":"admin", "href":"/users/admin/public", "userName":"admin", "userId":2, "email":"brad@xxxxx", "photoHash":"61084ad4739a840d9983978a48c84ea6cd793251" } }, "fieldMessages":[ ], "messages":[ ], "nextHref":"", "status":false }
ProfilePicResource
ProfileTabMapping
ProfileTableProvider
Updates profile and membership infoProfileTabsBuilder
Actually used for profile and org tabsProfileTimelineMapping
ProfileUpdatedEvent
ProfileUpdatedFunnelTrigger
ProfileUpdatedFunnelTriggerType
ProfileUpdatedGoal
When a profile is added/removed to a groupProgramFolder
ProgramsFolder.ItemCount
ProgramsFolder
This is the root folder for e-learning. Its direct children are all programs in the current website. You can use this to find programs and courses available for the current user, or all which exist.ProgramsModel.EnrolementModel
ProgramsModel
Project
ProjectManager
PromoCodeResult
PromotionEntryGoal
PromotionService.PromotionBean
PromotionService
PromotionsList
PromotionsManager.PromotionBuilder
PromotionsManager.RewardEntryBuilder
PromotionsManager
PropertyIDPExpression
Property names include:absolutePath, absoluteUrl, acceptHeader, contentTypeHeader, refererHeader, userAgentHeader
urlProtocol, urlFile, urlHost, urlPath, urlQuery, urlRef, urlUserInfo
PublicProfilePage
User's own profile page, for use within a websitePurchaseAmount
Represents an amount of a certain currency required to purchase somethingQrCodeBuilder
Queries.AppIndexerField
Queries.QueryTable
Queries.ResultRows
Queries
Cacheable parssed representation of the query config in a repo NOTE: Intention is that this will be evolved into being the top tier account settings object. So it will contain queries but also other account level stuffQueriesFolder
QueryBean
QueryBuilderBean
QueryField
QueryManager
QueryService
QueryTableExportEvent
Event is fired when a Query table export completes. This is within the transaction of the jobQueryWrapperTable
QuizAttemptEvent
An event triggered by some condition related to learning progress, eg starting, completing or not completing after some period
The attributes collection contains the ModuleFolder called module
Event ID: quizAttempt
QuizAttemptEventTriggerType
QuizInfo
QuizResult
QuoteAcceptedEvent
QuoteRejectedEvent
QuoteSentEvent
ReIndexPipelineStep
Recipe
RecipeManager
RecipeStage
RecipeStep
RecognitionEvent
Fired when an award is madeRecognitionFunnelTrigger
RecognitionFunnelTriggerType
RecognitionLevelsRuleType
RecognitionLostEvent
Fired when an award is lost, eg when a user goes down a level. May not be fired when recognitions are removed manuallyRecognitionLostFunnelTrigger
RecognitionLostFunnelTriggerType
RecognitionManager.AbstractRecognitionBuilder
RecognitionManager.AchievementsSummary
RecognitionManager.PeriodProjectedResult
RecognitionManager.RecognitionLevelBuilder
RecognitionManager.RecognitionPeriodLeaderboard
RecognitionManager.TopicAchievementSummary
RecognitionManager
RecognitionPointsRuleType
RecognitionService.LevelStatus
RecognitionService
A service to manage recognition entities like Topic, Badge and LevelRecordBean
RecordExecutionStep
Wraps 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 unqiuely identify an import or export of this pipeline. This can be used to prevent multiple processings of the same data. For example, you might have a file containing points being loaded once each day. You might use an execution ID template which evaluates to (for example) "points-31012015". Then if another execution generated the same ID you would conclude this is a double-import and throw an error.RedeemerRole
RedirectAssetAction
ReferralEvent
This represents a referral step. This will be fired twice on a referral, once for the sender as the source profile, and once with the recipient as the source profile It will also be fired when a referral converts to a signup See the action property for determining which of those.Event ID: referral
ReferralEventTriggerType
ReferralManager.AcceptReferralBuilder
ReferralManager.ReferralBuilder
ReferralManager.ReferralProfile
ReferralManager
ReferralPage
Post to /referral in a website with the following: - toName: the name of the recipient, user entered - toEmail: the email address of the recipient, user entered - message: the optional personal message to send, user entered. - pageHref: the optional page path to invite the user to, defaults to the rootReferralSentGoal
ReferralSignupGoal
RegisterOrLoginPage
RemoveFromGroupGoalAction
RemoveProfileGoalAction
RenderFileResource
This class is for rendering HTML pages. It wraps a normal FileResource and parses its content, expecting it to be a well formed HTML page. It extracts a template, if present in a link tag, and if not present defaults it to theme/page, so it will use the page.html template of the current theme Example:
home page
The title, template and body can be updated with a POST to this
Also supports read/write parameters embedded in the html
Parameters can be accessed via milton/ajax integration with the milton
namespace
Eg: module1/_DAV/PROPFIND?fields=milton:learningTimeMins
And those parameters can be updated via PROPPATCH in a similar manner
Creating new html pages is supported by integration with NewPageResource,
which looks for a .new suffix, and creates an instance of RenderFileResource
on the fly
RepoAppAction
This node executes a method on a custom app.When entered, this node will search through all repo apps looking for a RepoAppActionNodeType (aka customAction) with the same nodeType value. If found it will execute the jsMethod on the app, passing the current rootfolder, lead, funnel and exiting node as arguments
If the function returns a value, this will be returned as the next node idRepoAppActionNodeType
RepoAppCustomCheckoutRuleType.AbstractCheckoutRuleContext
RepoAppCustomCheckoutRuleType.CheckItemsCheckoutRuleContext
RepoAppCustomCheckoutRuleType.ProcessCheckoutRuleContext
RepoAppCustomCheckoutRuleType
RepoAppEventGoal
A goal which is achieved when an event defined by a repo app is fired This is intended to work with repo appsRepoAppEventListener
RepoAppFunnelAction
RepoAppFunnelActionType
RepoAppFunnelEvent
A funnel event to be fired by custom apps. This is intended to work with RepoAppEventGoalRepoAppFunnelTrigger
RepoAppFunnelTriggerType
RepoAppGoalNodeType
RepoAppPaymentResult
RepoAppSettings
RepoAppWebsocket
RepoAppWebsocketMapping
RepoAppsEventManager
This Listens for event's on the platform and Passes it on to custom apps listening for that event. The following event types are captured:- TriggerEvent - This includes all the automation triggers available
- ResourceEvent - This gets fired when a repository resource gets accessed or changed. Includes events like DeleteEvent, AccessedEvent, MoveEvent, PutEvent, NewFolderEvent
RepoMailboxStandardMessage.MyAttachment
Represents an email attachmentRepoMailboxStandardMessage
Represents an email messageRepoQueryTableDef
RepoSmsSettingsBean
ReportBean
ReportParams
Provides a standardised means for parsing common report request parametersReportRunnerRole
ReportingAccessRole
A marker role, when attached to an organisation it permits access to reporting data from that organisationReportingApp.DatePoint
ReportingApp
RepositoryApp.RepoAppPaymentResult
RepositoryApp.RepoQueryTable
RepositoryApp
RepositoryAppTheme
RepositoryAppTriggerEvent
RepositoryAppTriggerType
RepositoryManager
ResourceBean
ResourceList
This is a specialised List used for manipulating and querying resources You'll usually this to sort, group, filter lists, as well as create new lists which you can add to in the templateResourcesPage
Displays resources based on what gruops the current user is enrolled in Reads from a conventional folder structure associated with the website: /resources/[group-name] where group-name is the name of a group which is associated with the current websiteResponseCodeIDPAction
ResultEmailPipelineStep
Reward
Represents an incentive program, such as a prize draw or a set of gift vouchers to be allocatedRewardBean
RewardCurrency
RewardDebitedEvent
An event triggered by some condition related to points debitingEvent ID: rewardDebited
RewardDebitedFunnelEvent
RewardEntryAttachment
This represents the attachment for an entry. Usually for uploading photosRewardFolder
This is for non-learning rewards, ie competitions A RewardsFolder represents a Reward, and is a folder which can contain arbitrary content resources like images etcRewardGrantedEvent
An event triggered by some condition related to learning progress, eg starting, completing or not completing after some periodEvent ID: rewardGranted
RewardGrantedEventTriggerType
RewardGrantedFunnelEvent
Fired for each profile associated with the participantRewardGrantedFunnelTrigger
RewardGrantedFunnelTriggerType
RewardService.PointsTransaction
Represents a single transaction, ie a purchase or a creditRewardStoreApp.ExpiringPointsTable
RewardStoreApp.PointsBalanceBean
Represents the balance of a participant. A participant can be a user or organisationRewardStoreCategoryFolder
RewardStoreEngagementScoringFactorType
Scores engagement based on whether users have opened emails (ie pixel tracker has been hit) , or converted (ie clicked through)RewardStoreFolder
Represents a reward store. Provides methods for accessing the current user;s transaction history, points balance Child resources are category folders, which contain the products
Get recent points activity with the pointsActivity parameter:
?pointsActivity☆tDate=...&endDate...
Get the current points balance with the points parameter: ?points { balance : 1000, availableBalance: 950 }
RewardStoreTemplateHelper
RewardTransactionItem
Interface which represents either a Points credit or debit (PointsDebit)RewardUploadsFolder
This is a special folder which is a child of a RewardFolder, which allows uploaded files to be viewed. There is a child for each entry with an uploaded file as an attachmentRewardsApp.PointsDebitsLinkTable
RewardsApp.RewardEntriesSummaryTable
RewardsApp.RewardEntriesTable
RewardsShoppingCartItemResource
RewardsTemplateHelper
Functions to assist with rewards and Points templatingRole
A user is assigned roles by being put into a group. However, the group membership only applies within some context, and so any roles for that user only apply within that context as well. For example, Sally is in the Sales Rep group for the Southern Region. That group gives Sally the right to edit user accounts within the Southern Region, but it does not allow her any rights in the Northern Region. So when Sally accesses some resource we will look through her groups finding roles. For each role we'll check if it applies to the resource type being accessed, and if so if that resource is within the context of the group membership. If so then the priviledges conveyed will be returned and used to determine whether to allow the requestRootFolder
RowContext
RowsResultCsvView
RunPointsAllocationSourcesPipelineStep
SalesDataApp.SalesByOrgTable
SalesDataApp
SalesDataFolder
This page lets you POST to create, update and delete records of any data series by specifying parameters, including the amount and series name A data series is any series of time stamped values, often used for collecting sales data but can be used for any series.SalesDataInserter
Creates a new sales data record for each call. Requires the following arguments- Amount
- Attributed to - orgId for an organisation, or email or userid for a profile
- From - date/time for the beginning of the period
- To - date/time for the end of the period. Same as from if the data is for a single point in time
SalesDataRecodFunnelEvent
SalesDataRecord
SalesDataRoles.KpiDataEditor
SalesDataRoles.SalesDataEditor
SalesDataRoles.SalesDataViewer
SalesManagerRole
SalesPipeline
SalesRole
SalesTeamViewerRole
ScanJobEvent.ScanJobStatus
ScanJobEvent
An event triggered by some condition related to scanning and ocr, eg completing or not completing
The attributes collection contains the OCRTable and the reason if failed.
Event ID: scanJob
SearchConfig
SearchManager.OmniResult
SearchManager.OmniSearchRequest
SearchManager
This is the goto object for text search and analytics using elasticsearchSearchResponseView
Write an Elastic searchResponse object directly to the output streamSearchResult
Represents a single result in a search result pageSearchResults
Represents a search result, including the number of hits, the page information, the actual search results, and any aggregation resultsSecurityManager
SelectorManager
SendEmailFunnelAction
SendEmailFunnelActionType
SendEmailGoalAction
SendSmsAction
SendToHubspotGoalAction
SentQuoteGoal
When a profile is added/removed to a groupSeoContentBean
SeriesBean
SetAttributesStep
Selects the next step from a list of options Configured with a map of next steps, where the key for each step is used to select it Provide with either a column number or an attribute name to use to get the value to select the next stepSetFieldGoalAction
SetHeaderIDPAction
Sets a response headerSetSourceLeadGoalAction
SharingApplication
Instances of this app can provide items to the social wall, ie information that a user might want to share with friends or colleaguesThis should be used in conjunction with ShareableItemEvent so push events into the forums app
ShippingAddress
ShippingAddressBean
ShippingProvider
ShoppingCartApp.FulfillmentRole
ShoppingCartApp
Integrates with the Products app to allow products to be opted-in to reward programs. Once opted-in these products can be purchased with points acculuated for that program Product rewards can be searched and browsed by category, added to a shopping cart We might have a seperate shopping cart which supports multiple payment methodsShoppingCartBean
ShoppingCartEvent
Fired when a item either gets added to the shopping cart or the checkout process is completedEvent ID: shoppingCart
- ADDED_TO_CART - Fired when a item is added to the cart
- CHECKOUT_COMPLETE - Fired when the checkout process has completed successfully
- PAYMENT_PENDING - Fired when a checkout has been submitted but payment is pending to complete the process
ShoppingCartEventTriggerType
ShoppingCartFolder
ShoppingCartFulfillmentSatusEvent
Fired when the fulfillment status it's changedEvent ID: shoppingCart
ShoppingCartFulfillmentStatusEvent
Fired when the fulfillment status it's changedEvent ID: shoppingCart
ShoppingCartFunnelEvent
ShoppingCartGoal
ShoppingCartItemBean
ShoppingCartItemResource
ShoppingCartResource
ShoppingCartsFolder
SignupLog
Records a user signing up to a groupSimpleHtmlTemplater
SimplePointsRuleType
SizesHelper
Return the percentage of the viewport this element will have at each breakpointSkipRowsTableActionHandler
Skip rows if a certain column is blankSmsApp.SmsStats
SmsDeliveryEventTriggerType
SmsDeliveryFunnelEvent
SmsManager
SmsProviderDetails
SmsProviderDetailsBuilder
SmsResultGoal
SocialInteractionEvent
SocialInteractionGoal
SourceIpIDPExpression
SpliffyContentGenerator.ErrorResource
SpliffyContentGenerator
Stage
StandardBinaryContentView
StartAndWaitFunnelGoal
StartFunnelGoalAction
StartJourneyAssetAction
StartJourneyAssetEventHandler
StatusCodeMetric
StopGoGoal
StreamActivitySearchPage
Outputs the stream activity as jsonStreamActivitySummaryResource
Outputs the stream activity as jsonStreamEventBean
Represents the occurence of a generalised actionStreamEventBeanBuilder
Creates a StreamEventBean object that is used to push items into the profile timelineStreamItemPage
Outputs the stream activity as jsonStreamService
A stream event represents an action on an item. The action has a severity catgegory (eg info, success), a description, an iconSubTaskList
SubmissionBean
Represents a submission to a poll, survey or competitionSubscriptionEvent
Fired when a user joins a groupEvent ID: subscription
SubscriptionEventTriggerType
SubscriptionFunnelEvent
SupplierFilterRole
This is similar to ReportingAccessRole. Rather then provide access to screens, this role controls what data is included when showing sales and (potentially) product datahttps://github.com/Kademi/kademi-dev/issues/12080
All Orgs that the user has this role on are considered suppliers, and the user will be permitted to see data from sales of products for those suppliers
SurveyRowProvider
Updates not supported yet Allows criteria parameters of startDate, finishDate and rewardNamesTable.Row
A row is just a list of values, with an optional source objectTable.RowsResult
This represents the execution result of a table, which is a list of rows (where each row is just a list of values), as well as the number of matched rows.Note that pagination means usually only a subset of matched rows is included in the result. The result includes the pagination parameters - startRow and maxRows
The result also includes a list of headers, identifying each column
Table
TableUploadManager
TableUploaderStep
TableViewMeta.ColumnMeta
TableViewMeta.ColumnMetaBuilder
TableViewMeta.TableViewMetaBuilder
TableViewMeta
Holds information needed to render a set of records in a tableTakeLeadRole
TargetsMap
Just lets you get a target by name for the given resultTaskCompleteFunnelEvent
TaskCompleteGoal
Triggers a goal as attained when theTaskGoal.TaskOutcome
TaskGoal
TaskRecipeStep.TaskRecipeStepOutcome
TaskRecipeStep
TaskReminderDef
TaxCalcProvider
Provides a means of calculating the appropriate tax rateTeamBucket
TeamManager
TemplateOutput
Execute a velocity template, writing the result to the output. This can be used for generating a result which returnes warnings etcTemplateReportAttachmentFile
This is wrapped around Report instaneces of type TemplateReport. Most notably this includes reports defined in custom apps This will generate a downloadable attachment (eg CSV) from the TemplateReport instanceTemplateReportPage
This is wrapped around Report instaneces of type TemplateReport. Most notably this includes reports defined in custom apps This type of report is the most generic, it allows the report author to provide a template which generates any output. There are no filtering options built in so the template must define and apply any which are required However the standard ReportParams object is included as a property for convenience For custom apps, they will normally execute a search using the searchManager which is a property of this resourceTemplatedHtmlPage
This is used for pages which just need to generate a template. Its often extended to provide additional methods Gets its title from the templateTemplatingApplication.TemplateDef
TemplatingManager
TestSplitAction
TestTriggerEvent
TextFromHtmlService
TextOptionType
TextView
ThemeBean
ThemeDependentHtmlTemplater
Allows selecting an instance of HtmlTemplater based on the themeTimerGoal
When an automation event is triggeredTimesheetManager.Timesheet
TimesheetManager
TrackedProcessable.StatusInfo
TransactionStep
Wraps processing in a transaction and commits it in the finished phaseUse alwaysRollback for testing, so the transaction is always rolled back
Use the isolated property so that the transaction is local to each invocation of this step. Ie if the transaction is called for each of 10 rows, the transaction will be started and commited 10 times.
This is useful for sequences of transaction steps, otherwise you will get a "nested transactions not supported" error.
TranslationService
TriggerEvent
A TriggerEvent gets fired when some significant event occurs on the server.
The trigger item properties represent textual values that can be keyed on for event triggers. Typically these will be id's of objects in context of the event, such as the website, group, etc.
The types of events are:
-
AuctionBidEvent
AuctionClosedEvent
CalendarEventAccepted
CalendarEventDeclined
ContactEvent
EmailReceivedEvent
ModuleProgressEvent
NewCommentEvent
PaymentEvent
RepositoryAppTriggerEvent
PipelineProcessEvent
ReferralEvent
RewardGrantedEvent
ReferralEvent
ShoppingCartEvent
SubscriptionEvent
TestTriggerEvent
TriggerFiredEvent
TriggerTimerEvent
VoteReceivedEvent
VotedEvent
TriggerFiredEvent
Fired when another trigger firesTriggerFiredEventTriggerType
This type of event is for chaining triggers. It is triggered when another trigger (possibly delayed) fires.TriggerTimerEvent
TriggerTypeBuilder
Use this to create an automation trigger. This will allow you to add a trigger to the automation page For example:controllerMappings .automationTrigger .triggerId('testTrigger') .description('This is a test trigger') .format('genFormat') .addOption("Type", "populateOptions") .build(); function populateOptions(){ var list = formatter.newListOptionBuilder(); for(var i = 1; i < 11; i++){ list.addOption('t' + i, 'T' + i); } return list.build(); } function genFormat(page, t1, t2, t3, t4, t5){ log.info('page={} t1={} t2={} t3={} t4={} t5={}',page, t1, t2, t3, t4, t5); return 'New post received'; }
TriggerTypeMapping
UserAgentParserWrapper
Provides access to the user agent parserUserApp.EntityAddressesTable
UserDao.ProfileMatchRequest
UserManager.ConfigMessage
UserManager.CustomFieldDuplicateProfileMatchMethod
UserManager.DuplicateProfilesList
This holds a list of duplicated profiles, with one identified as the first, which will be the default merge destinationUserManager.EmailDuplicateProfileMatchMethod
UserManager.FirstLastNameDuplicateProfileMatchMethod
UserManager.HomeOrgInfo
Light weight object containing info about a user's home organisation, which might otherwise be inaccessible due to security constraintsUserManager.ProfileBuilder
UserManager.Temp2FAData
UserManager.UserNameDuplicateProfileMatchMethod
UserManager
UserNameDuplicateProfileMatchMethod
UserResource
UserVisitEvent
A UserVisitEvent is raised when a user first visits a site (ie the first GET request) at least 24 hours since the last visitEvent ID: userVisit
UserVisitEventTriggerType
This trigger type means when a user has received a vote, which is not the user who made the vote!UserVisitFunnelTrigger
When a profile is added/removed to a groupUserVisitFunnelTriggerType
UserVisitGoal
When a profile is added/removed to a groupValidCsrfTokenIDPExpression
Variant
VelocityHtmlTemplater
Builds pages by plugging a few things in together: - a static skeleton for a HTML page, ie the html, header and body tags - a Theme, which defines web resources, such as js and css files, to include in the header. And which defines one or more layouts for the body. - the template itself, which provides more web resources to be included in the header, and the body layout which will be injected into the theme template. Also defines a parameter indicating which theme template to useVelocityOutputStep
Generates HTML template and outputs it to the pipeline outputVideoManager
ViewEmailPage
ViewsBuilder
Provides methods for creating views, for templating, returning JSON, and redirectsVoteReceivedEvent
This represents a vote being received by a user on their post or comment Trigger items:1 - website
2 - the vote amount (usually +1 or -1)
3 - total votes for the post or comment
4 - the type of the post, C=comment, FP=forum post, FR=forum reply
Event ID: voteReceived
VoteReceivedEventTriggerType
This trigger type means when a user has received a vote, which is not the user who made the vote!VotedEvent
This represents a user voting on a post. The user in context is the user doing the voting, not the user receiving the vote! Trigger items:1 - website
2 - the vote amount (usually +1 or -1)
Event ID: VotedEvent
VotedEventTriggerType
VotesFunnelTrigger
votes received on comments etcVotesFunnelTriggerType
VoucherBean
VoucherCheckoutLineItem
VoucherFunnelEvent
VoucherManager.VoucherAllocationBuilder
VoucherManager
VoucherPage
VoucherRedemptionPage
This is the top level resource for voucher redemptions and management Users use this page to search for vouchers and change their status to redeemed, pending, etc, or to reset their status when a mistake has occurred.VoucherStateGoal
When voucher is issued or change it stateVoucherStateSummary
VoucherStatusChangeBean
VoucherTypeFolder
VoucherTypeSummary
VouchersApp.VoucherRedeemerRole
This role is for allowing people to redeem vouchers. That means being the cashier who accepts vouchers for purchase and marks them off as redeemedVouchersApp.VoucherSupervisorRole
A supervisor can see the status of voucher programsVouchersApp
WallPostBuilder
WebEngagementScoringFactorType
Scores engagement based on whether users have opened emails (ie pixel tracker has been hit) , or converted (ie clicked through)WebPushService.WebPushNotificationResponse
WebPushService
WebResource
WebServiceStep
WebUtils.ExtUrl
Holds a fully qualified URL with login tokens, and the precise domain name used in the URL. This is often important because the login token will only work with the precise domain name, and you might need to use it for other thingsWebsiteFacet
WebsiteManager
WebsiteRootFolder
Represents the root of a website. A "website" in this context is a product, its a customer facing side of some activity, such as Learning Management System or business website. Resources within a WebsiteRootFolder will often behave differently then if they were located under a OrganisationRootFolder, because the assumption is that websites are for customers, while aadministrators will accessing the organisation directly While WebsiteRootFolder is a view of a repository (or rather a branch within a repository) it also provides access to other repositories. Any repository within the containing organisation can be access by name from the root folder. For example, if an org has this structure: myOrg - milton.io - maven ... then requests to http://milton.io/maven will show the maven repositoryWebsiteSettings.AppSettingsBean
WebsiteSettings
Reads the contents under WEB-INFExpects to find a settings.xml file which has website settings
Also any files with a json extension are parsed and held in the data attribute in the WebsiteSettingsLoadedEvent