Atollon API
Overview
eShop Example
Overview
Using Atollon to bill/invoice eShop purchases
How to use Atollon to quickly send invoices to eShop clients? See the illustration below describing the scheme necessary to adopt when billing from Atollon.
Used Functions
Functions to create objects:(there may be some other functions necessary, if listing is required)
CreateContact (main.wsdl)
Use for both company & person
CreateSimpleFolder (project.wsdl)
For both company & person clients
CreateProject (project.wsdl)
CreateProjectItem (item.wsdl)
Create New Customer (Person)
First create new contact
CreateContact (main.wsdl) Request
acme6A941A9BC9EBEFAF585A4B936AA958755B1C85E2BD04JackBuyerLondonUnited Kingdom1LondonOur Street 101320271011100jackbuyer@gmail.com111320311013399988801132035101990888333011320331013Dear Adam131428101
CreateContact Response
OK139663101
Create New Customer Folder
CreateSimpleFolder (project.wsdl) Request
acme6A941A9BC9EBEFAF585A4B936AA958755B1C85E2BD04Buyer, Jack130944101
139633101
139663101130944101
CreateSimpleFolder Response
OK139676101Client13271610110
Create New Deal
First Create Project Folder
CreateProject (project.wsdl) Request
acme6A941A9BC9EBEFAF585A4B936AA958755B1C85E2BD04139676101139676101133150101Super Sales133297101132740101
CreateProject Response
OK139704101133295101Deal02
Second Create Billing Item
CreateProjectItem (item.wsdl) Request
acme6A941A9BC9EBEFAF585A4B936AA958755B1C85E2BD0412342020-05-14T00:00:0035190CZK133629101AAA Batteries13970410113056170678710100
CreateProjectItem Response
OK0139721101Create New Invoice
Create Invoice from Billing Items in For approval Status
CreateInvoicesFromItems (invoice.wsdl) Request
acme6A941A9BC9EBEFAF585A4B936AA958755B1C85E2BD04139704101
CreateInvoicesFromItems Response
OK139758101232010001Create Recurring Billing Request
On top of created project (deal), it is possible to create recurring billing request.
See the documentation of CreateFolderItem function for more details.
Example CreateFolderItem (item.wsdl) Request
acme7CDF678513DCBF0379DDD26A6961B604D7F1515CBD0412342020-05-14T00:00:0025190CZK133629101Repeated serviceBilling the yearly service.130513967610161706787101002020-05-14T00:00:0012020-05-14T00:00:002099-05-04T00:00:001397041012
CreateFolderItem (Response)
OK0139812101Execute Workflow Actions Immediately
In case your integration requires executing workflow actions immediately after your request, it is necessary to call CheckWorkflowQueue function that is part of features.wsdl.
yourserver---yoursessionstring---Create New Marketing Trigger
Marketing triggers are used to track any activity of the contact / public user, which have some meaning in your company sales or marketing process.
The example below notifies Atollon about new phone number added to contact. Atollon may therefore create call task.
Example Request
acme61A...DBD04new-phone-number132716101139663101www.yourcompany.com/product/pagewww.company.com/product/pageExtranet user added new phone number2020-07-31 12:001
Example Response
OK400097101
Fields Description
Field name
Example
Description
baseType
new-phone-number
url-visit
goal-achieved
Text identification of the marketing trigger (what actually happened)
contextId
123456789000
Identification of Folder ID, Project ID or Activity ID in Atollon's context structure. It is necessary to enter context ID in case it should be displayed in context Timeline.
contactId
113456789000
Identification of contact, who caused the trigger
url
https://yourcompany.atollon.com/pub/23423432
Page that the contact visited (optional)
trackingCode
yourSuperCampaignXYZ
Any text string representing one particular campaign / marketing activity / message template
description
Contact visited URL
Any descriptive text that will be visible to Atollon users in Timeline
triggerDate
2020-08-12 12:00
When the trigger happened?
numberOfVisits
45
In case the target user is super active (or robot), we may want to avoid spamming Atollon with unnecessary records and aggregate page visits
User Interface Customization
Modules Registry
List of module idents that can be used to store it's own settings (as part of the Features module).
newpioneer=# select * from features_modules ;
id | modulename | moduleid
-----------+----------------------------+-----------------------------------------
97141000 | Atollon Tasks | com.atollon.scheduler.tasks
97142000 | Atollon Timesheets | com.atollon.scheduler.timesheet
97143000 | Atollon Activity panel | com.atollon.project.activitypanel
97144000 | Atollon Views | com.atollon.features.views
112099000 | Atollon Task Workflow | com.atollon.scheduler.workflow.task
112100000 | Atollon Event Workflow | com.atollon.scheduler.workflow.event
112101000 | Atollon Issue Workflow | com.atollon.scheduler.workflow.issue
114529000 | Atollon Messages | com.atollon.messaging.messages
114533000 | Atollon Contact | com.atollon.core.contact
114534000 | Atollon Document | com.atollon.core.document
114535000 | Atollon Features | com.atollon.core.features
114536000 | Atollon Finder | com.atollon.core.finder
114537000 | Atollon Form | com.atollon.core.form
114538000 | Atollon Project | com.atollon.core.project
114539000 | Atollon User | com.atollon.core.user
114540000 | Atollon Budget | com.atollon.finance.budget
114541000 | Atollon Invoice | com.atollon.finance.invoice
114542000 | Atollon Order | com.atollon.finance.order
114543000 | Atollon Item | com.atollon.finance.item
114544000 | Atollon Billing | com.atollon.finance.billing
114545000 | Atollon Desktop | com.atollon.lagoon.desktop
114546000 | Atollon General | com.atollon.lagoon.general
114547000 | Atollon TaskBar | com.atollon.lagoon.taskBar
114548000 | Atollon Dashboard | com.atollon.lagoon.dashboard
114549000 | Atollon MassMessage | com.atollon.messaging.massMessage
114550000 | Atollon Applicant | com.atollon.recruitment.applicant
114551000 | Atollon Vacancies | com.atollon.recruitment.vacancies
114552000 | Atollon Search | com.atollon.recruitment.search
114553000 | Atollon Events | com.atollon.scheduler.events
114554000 | Atollon Issues | com.atollon.scheduler.issues
114555000 | Atollon TSValuation | com.atollon.scheduler.TSValuation
114556000 | Atollon Workers | com.atollon.temporary.workers
114557000 | Atollon Staffing | com.atollon.temporary.staffing
114558000 | Atollon ShiftOrder | com.atollon.temporary.shiftOrder
114559000 | Atollon Wage | com.atollon.temporary.wage
114560000 | Atollon Advanced TimeSheet | com.atollon.temporary.advancedTimeSheet
114561000 | Atollon Reporting | com.atollon.utils.reporting
114562000 | Atollon Recruitment Search | com.atollon.recruitment.search
114563000 | Atollon Desktop | com.atollon.core.desktop
130388000 | Atollon Scheduler Settings | com.atollon.scheduler.settings
130389000 | Atollon Items | com.atollon.item.items
(41 rows)SOAP UI in Atollon Environment
Web Service Exception Listing
WSDL Listing
Web Service Functions
List of Web Services functions examples and their explanation.
CreateFolderItem
Description
Create recurring billing request. Recurring billing request is used to instruct the server to create individual instance of Billing Request, which is a source for Invoice creation.
Important Parameters
amount
Unit price to be charged
billingDate
Sample date, in which the Billing Request will be used as a date for invoicing.
billingStatus
1 .. Pending
2 .. For Approval (Sales Order may be generated here)
3 .. To Be Invoiced (Invoice may be generated here)
totalQuantity
Pcs to be charged per Unit price after free Qty is reduced
catalogPrice
Price before any discounts
item
Product ID
name
Main title of the future Billing Request
note
Future description of Billing Request
purchasePrice
Unit price for which the goods is purchased
Quantity
Pcs to be charged per Unit Price
folder
Customer folder ID
totalAmount
total qty * amount
totalAmountWithVat
totalAmount + VAT
vatValue
VAT rate in numbers
ratio
fixed value (100) = 100%
taxationDate
Date relative to Billing Date, in which you may decide to put the transaction into current / previous / next periods. Put any date close to Billing Date (ie any day in the same/previous month)
isModelItem
1
validFrom
Date, from which the rule becomes active. Difference of dates between validFrom and billingDate is important. Item generated in validFrom = today should have billingDate today + 1 year, in case the first next fee is paid after one year of using the service.
validTo
Expiration date
destinationProject
Target Project ID, where the Billing Request will be created.
billingFrequency
2 .. yearly
4 .. quarterly
6 .. monthly
8 .. weekly
10 .. daily
Request Example
acme7CDF678513DCBF0379DDD26A6961B604D7F1515CBD0412342020-05-14T00:00:0025190CZK133629101Repeated serviceBilling the yearly service.130513967610161706787101002020-05-14T00:00:002020-05-14T00:00:002099-05-04T00:00:001397041012
Response Example
OK0139812101UpdateFormItemValues
There are several scenarios to use this function, based on knowledge you have about the form, where you want to save the data.
FormValuesId + formItemName
You may gather formValuesId from context object using get function (getFolder, getProject, getActivity). FormValuesId is bigint which identifies set of values of one form instance.
formItemName is the name of form field. Form fields may be listed using ListFormItem method.
acme....string_here....392302101form-component-name-here123456GetDocument
WSDL
document_library.wsdl
Required parameter
id - id of saved file
Example Request
multiBDA7025DFBA9CDF53AE306DB4372AF3492FA59DBBD04141942102
Example Response
OK1141942102AdminAtollon141942102DLIB0000000089971PMP-Canvas.pdf01337801022020/06/22/1419411020134567102204248031PMP-Canvas.pdf002020-06-22T16:27:002020-06-22T16:27:002020-06-22T00:00:002020-06-22T00:00:001346871021application/pdf; charset=binary134567102
ListDocument
Function that lists document in given folder. Documents can be stored in most of the folders of tree structure. Therefore any context ID (Folder, Project or Activity) may act as document placeholder = parent
WSDL
document_library.wsdl
Example Request
multiBDA7025DFBA9CDF53AE306DB4372AF3492FA59DBBD041000134567102and aa.doc_parent is null
The restriction means no older document versions would be returned as a result of query.
Example Response
OK1AdminAtollon141942102DLIB0000000089971PMP-Canvas.pdf01337801022020/06/22/1419411020134567102204248031PMP-Canvas.pdf002020-06-22T16:27:002020-06-22T16:27:002020-06-22T00:00:002020-06-22T00:00:001346871021application/pdf; charset=binaryCreateGlobalText
Global texts are used as storage of localizable text blocks, usually used in printing.
Part of translate.wsdl
LANG must be EN.
Below is the example of Invoice footer print.
Request Example
acme4D2...D04invoice-footer131485101In case of any questions, or request for additional details, do not hesitate to contact us by email to invoice@company.com or using phone number +44 00099333. Yours sincerely, Your Team.
Response Example
OK01936935101
Related Functions
ListLanguages
Global Text Idents
Below you can find examples of Global text idents that are used mainly as text blocks when printing documents from ATOLLON.
Document
Global text IDENT
Description
Invoice issued
invoice-footer
Print text at the bottom of invoice
Estimate
estimate-footer
Print text at the bottom of estimate
Invoice/estimate/order/offer
invoice-global-CSS
Use corporate CSS
CreateMarketingTriggers
Description
Marketing triggers are used to track any activity of the contact / public user, which have some meaning in your company sales or marketing process.
Fields Description
Field name
Example
Description
baseType
new-phone-number
url-visit
goal-achieved
mail-url-visit
mail-open
url-visit
unsubscribe
Text identification of the marketing trigger (what actually happened)
contextId
123456789000
Identification of Folder ID, Project ID or Activity ID in Atollon's context structure. It is necessary to enter context ID in case it should be displayed in context Timeline.
contactId
113456789000
Identification of contact, who caused the trigger
url
https://yourcompany.atollon.com/pub/23423432
Page that the contact visited (optional)
trackingCode
yourSuperCampaignXYZ
Any text string representing one particular campaign / marketing activity / message template
description
Contact visited URL
Any descriptive text that will be visible to Atollon users in Timeline
triggerDate
2020-08-12 12:00
When the trigger happened?
numberOfVisits
45
In case the target user is super active (or robot), we may want to avoid spamming Atollon with unnecessary records and aggregate page visits
The example below notifies Atollon about new phone number added to contact. Atollon may therefore create call task.
Example Request
acme61A...DBD04new-phone-number132716101139663101www.yourcompany.com/product/pagewww.company.com/product/pageExtranet user added new phone number2020-07-31 12:001
Example Response
OK400097101
WSDL Listing
web.wsdlNewMail
Description
New mail function is used to send regular e-mail from Atollon. I supports sending both plaintext and html e-mails. In case html e-mail is sent, plaintext part is generated automatically.
Fields Description
Field
Description
Example
priority
E-mail priority handled by other mail clients
1, 2, 3
group
Message group with similar characteristics, required
For e-mails sent in context, there is always default "group" available in the response of request to getFolder, getProject, getActivity. For example:
133185101
treeHandle
Message container (mailbox)
Similar comment to "group" field above:
133186101
html
What is the body format?
0..plaintext
1..html
encoding
Use utf-8 only
utf-8
from
Full format of sender mailbox
to
Recipient address
subject
Subject of the message
body
Either plaintext or html part of the message (based on above html = 0/1 flag)
attachments.attachment
Link to documentId in Atollon. The document will be converted to base64 and added to sent e-mail
forwardEmails
List ids of e-mail messages that will be attached
Example
acme5B5EA....8BD042491826101491827101
1
utf-8"Your team" <admin@mydomain.com>jan@safka.czWelcome to your new world of success
<html><head><title>Welcome to your new world of success</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <style type="text/css"> <!-- body,td,th { font-family: Arial, Helvetica, sans-serif; font-size: 12px; color: #333333; } a:link { color: #666666; } a:visited { color: #999999; } --> </style></head><body><div ALIGN="LEFT"><span style="font-family:helvetica,arial,sans-serif; font-size:12px; color:#000000; ">This is the secret message</span></div>
<br/>
<div ALIGN="LEFT"><span style="font-family:helvetica,arial,sans-serif; font-size:12px; color:#000000; ">Your super powerful team</span></div>
</body></html>
496477101
Response
OK496505101MSGS0000001518280GetSchedulerSettings
Description
Function that takes care about administration of lists connected with Events (calendar), Tasks and Issues.
Settings are administered using one function only - UpdateSchedulerSettings.
Type of settings
ListType
Settings
1
Scheduler status
2
Severity
3
Solution status
4
Type of work
CreateProjectItem
Description
Create billing request. Billing request is used as a source for creating new invoice. That invoice can be created manually from Billing Invoices, using Draft Invoice generation or using one-off function CreateInvoicesFromItems.
Important Parameters
amount
Unit price to be charged
billingDate
Date, in which the Billing Request will become valid for invoicing.
billingStatus
0 .. Sales Items (representing Deal Value)
1 .. Pending
2 .. For Approval (Sales Order may be generated here)
3 .. Approved by manager (Invoice may be generated here, only users with Authorize rights to project may approve billing items)
4 .. Billed5 .. Approved by client
6 .. Postponed
7 .. Canceled
999 .. Installed technology project items // will be canceled
type
1 .. sales items or billing items
2 .. auto-generated time sheet item
3 .. installed technology
catalogPrice
Price before any discounts (also referred as Recommended Price, Price List Price, ...). The original price, from which discount is calculated.
item
Product ID
name
Main title of the Billing Request
note
Description of Billing Request
purchasePrice
Unit price for which the goods is purchased
quantity
Pcs to be charged per Unit Price
folder
Customer folder ID
totalAmount
qty * amount
totalAmountWithVat
totalAmount + VAT
vatValue
VAT rate in numbers
ratio
fixed value (100) = 100% (used only in sales opportunity/deal to evaluate probability of the item in the sales basket)
project
Project ID, where the Billing Request will be created.
Request Example
CreateProjectItem (item.wsdl) Request
acme6A941A9BC9EBEFAF585A4B936AA958755B1C85E2BD0412342020-05-14T00:00:0035190CZK133629101AAA Batteries13970410113056170678710100
CreateProjectItem Response
OK0139721101ListLanguages
Part of translate.wsdl
Sample Request
saasFB...C3
Sample Response
Reduced to one item.
iso-8859-22607000CzechCZEcz011
ListContactList
Description
Function listing basic contact configuration items / lists.
Important Parameters
list
contacttype
industry
nationality
companylegalform
category
department
position
addresstype
relationtype_p (person)
relationtype_c (company)
treeHandle
either use "node" attribute from Login function, DEFAULTS->DEFAULT with "ident" CONTACTCONFIGNODE or use attrib useDefaultTreeHandle = true
Request Example
atollon4A...041685000contacttype
Response Example
OK121883000E-mail (other)11884000E-mail (personal)11885000E-mail (work)1
...
ModifyProjectItemValues
8 metod nastavení cen položek kufříku
SetPurchaseByMargin z: Unit Sales Price a Margin
Změna nákupní jednotkové ceny na základě zadané marže, vychází z jednotkové ceny prodejní.
purchase_price = amount x (1 - value)
SetPurchaseByMargin: purchase_price = amount x (1 - value)
SetSalesByMargin z: Unit Purchase Price a Margin
Změna prodejní jednotkové ceny na základě zadané marže, vychází z jednotkové ceny nákupní.
amount = purchase_price/ (1 - value)
SetSalesByMargin: amount = purchase_price/ (1 - value)
SetPurchaseByPurchase
Změna nákupní jednotkové ceny na základě zadané nové celkové nákupní ceny, postup (zkráceně: zvýšit/snížit jednotkovou cenu dle % změny celkové ceny):
sečíst původní položky sum(purchase_price*quantity (itm_project_item_par)) = total_purchase_old
hodnota value reprezentuje novou celkovou nákupní cenu
zjistit % změnu dif = value / total_purchase_old
změnit hodnotu všech stávajících jednotkových purchase_price = purchase_price(itm_project_item_par) x value
pokud je sum purchase_price = 0, potom se jde na metodu SetUnitPurchaseToTotalPurchaseBySalesUnit
SetPurchaseByPurchase: purchase_price=purchase_price*(value/sum(purchase_price*quantity))
SetPurchaseBySales
pokud jsou všechny nákupní ceny = 0, potom se použije výpočet obdobný, ale bude vycházet na základě cen prodejních (tedy sum(amount))
pokud je sum amount = 0, potom se jde na metodu SetUnitPurchaseToTotalPurchaseByQty
SetPurchaseBySales: purchase_price=amount*(value/sum(amount*quantity))
SetPurchaseByQuantity
pokud jsou všechny prodejní ceny = 0, potom se použije výpočet obdobný, ale bude se vycházet na základě počtu ks (qty) … tedy spočítá se jednotková nákupní cena za položku … purchasePerQty = value / qty a tou se roznásobí hodnota - tedy purchase_price * purchasePerQty
SetPurchaseByQuantity: purchase_price=(value/sum(quantity))
SetSalesBySales
Změna prodejní jednotkové ceny na základě zadané nové celkové prodejní ceny, postup (zkráceně: zvýšit/snížit jednotkovou cenu dle % změny celkové ceny):
sečíst původní položky sum(amount*quantity (itm_project_item_par)) = amount_without_vat_old
hodnota value reprezentuje novou celkovou prodejní cenu
zjistit % změnu diff = value / amount_without_vat_old
změnit hodnotu všech stávajících jednotkových amount = amount (itm_project_item_par) x diff
pokud jsou všechny prodejní ceny sum (amount) = 0, použije se SetUnitSalesToTotalSalesByUnitPurchase
SetSalesBySales: amount=amount*(value/sum(amount*quantity))
SetSalesByPurchase
pokud jsou všechny prodejní ceny = 0, potom se použije výpočet obdobný, ale bude vycházet na základě cen nákupních (tedy sum(purchase_price))
pokud jsou všechny nákupní ceny sum (purchase_price) = 0, použije se SetUnitSalesToTotalSalesByQty
SetSalesByPurchase: amount=purchase_price*(value/sum(purchase_price*quantity))
SetSalesByQuantity
pokud jsou všechny nákupní ceny = 0, potom se použije výpočet obdobný, ale bude se vycházet na základě počtu ks (qty) - vypočítá se pricePerQty = value / Qty, pak pro každou položku Qty * pricePerQty
SetSalesByQuantity: amount=(value/sum(quantity))CreateEvent
WSDL
scheduler.wsdl
Related Services
GetSchedulerSettings
Contains several configurations of lists, incl. Solution Status and Type of Work (entryType) used in creating New Event. Please note that Solution Status should be selected based on Type of work and current user's profile.
Example Request
Operation request: 'CreateEvent'
acme...00000//--ID of event owner-user--//0//--ID of event owner-user--//Event location text//-- ID of custom state--//000//-- ID of customer folder--//0000000Event description text ...2023-03-09T12:30:002023-03-09T12:00:000//-- ID of type of work--////----//0//--ID of event organizer-user--//Event summary main text000//--ID of event owner-user--//22023-03-09T12:06:232023-04-09T00:00:0010000412:0012:300011
Example Response
Operation response: 'CreateEvent'
OKcreate107751483081107751484081107751483081ContactFormRequest Service
Recruitment Functions
Sending applicants to Atollon
The preffered way to send data into system is send them into CV inbox, which is done by the request described below.
Sending candidate into CV inbox
New candidates (for example reactions from web advertisement) should be sent into atollon by channel for data import, based on object TemporaryImportFile (WS link). This is generic object, which can be used for needs of recruitment in the way, that you put candidate data into HR-XML standard (sample-CZ-HR-XML.json). The hr-xml allows us to understand candidate data, the other parameters of TemporaryImportFile gives us information about type of content, source (by source type or trackingCode) and so on.
Link for uploading response is: https://instance.atollon.com//mooring/uploadRecruitmentResponse
RESTful API for candidate import
This is preffered way how to import candidates into atollon.
Please note that the following fields are entered in query as PARAMS. The "data" field contains JSON file in HR-XML format (as mentioned above).
Field name
Mandatory
Meaning
apikey
no
Authentication token in case it is required
treehandle
no
Treenode
session
no
Session id -> else root seesion is used
user
no
Target user id (User can be usually found from tracking code)
team
no
Target team id (Team can eb usually found from tracking code in source)
reference
no
Contact ID, if the import file is referenced to existing contact.
data
yes
Candidate data in JSON based on HR-XML standard
source
yes
Text value of source. If not present, then will be replaced by data found based on tracking code. This information is only stored in the temporary import file and does not have any impact on other folders nor project in the system.
server
yes
Atollon application server
vacancyId
no
ID of vacancy(project)
vacancyRefId
no
reference ID of vacancy (If vacancyId not present it will be found from vacancyRefId. If also vacancyRefId is missing then vacancyId will be looked up with tracking code (if there is one))
letter
no
Text of motivational letter
custom3
no
Field for custom client implementation
trackingCode
no
Tracking code, which represents a link to source medium (for example job advertisement gets its tracking code). When presented, tracking code is to get user and channel of original message action.
FILES
no
attached CV, profile picture and so on. Instead of name of parametr "FILES" use name of the file, so it is properly treated.
attachments
no
Attachments in json format {'attachment_id': 'attachment_filename'} - this is in case attachments are already in our filesystem and there is no need to import them again
Crawler Import Service
SOAP API Design Principles