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 acme 6A941A9BC9EBEFAF585A4B936AA958755B1C85E2BD04 Jack Buyer
London United Kingdom 1 London Our Street 10 132027101 1100
jackbuyer@gmail.com 1 1 132031101 33999888 0 1 132035101 990888333 0 1 132033101 3 Dear Adam 131428101
CreateContact Response OK 139663101 Create New Customer Folder CreateSimpleFolder (project.wsdl) Request acme 6A941A9BC9EBEFAF585A4B936AA958755B1C85E2BD04 Buyer, Jack 130944101 139663101 130944101 CreateSimpleFolder Response OK 139676101 Client 132716101 1 0 Create New Deal First Create Project Folder CreateProject (project.wsdl) Request acme 6A941A9BC9EBEFAF585A4B936AA958755B1C85E2BD04 139676101 139676101 133150101 Super Sales 133297101 132740101 CreateProject Response OK 139704101 133295101 Deal 0 2 Second Create Billing Item CreateProjectItem (item.wsdl) Request acme 6A941A9BC9EBEFAF585A4B936AA958755B1C85E2BD04 1234 2020-05-14T00:00:00 3 5 190 CZK 133629101 AAA Batteries 139704101 130 5 6170 6787 10 100 CreateProjectItem Response OK 0 139721101 Create New Invoice Create Invoice from Billing Items in For approval Status CreateInvoicesFromItems (invoice.wsdl) Request acme 6A941A9BC9EBEFAF585A4B936AA958755B1C85E2BD04 139704101 CreateInvoicesFromItems Response OK 139758101 232010001 Create 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 acme 7CDF678513DCBF0379DDD26A6961B604D7F1515CBD04 1234 2020-05-14T00:00:00 2 5 190 CZK 133629101 Repeated service Billing the yearly service. 130 5 139676101 6170 6787 10 100 2020-05-14T00:00:00 1 2020-05-14T00:00:00 2099-05-04T00:00:00 139704101 2 CreateFolderItem (Response) OK 0 139812101 Execute 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 acme 61A...DBD04 new-phone-number 132716101 139663101 www.yourcompany.com/product/page www.company.com/product/page Extranet user added new phone number 2020-07-31 12:00 1 Example Response OK 400097101 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 acme 7CDF678513DCBF0379DDD26A6961B604D7F1515CBD04 1234 2020-05-14T00:00:00 2 5 190 CZK 133629101 Repeated service Billing the yearly service. 130 5 139676101 6170 6787 10 100 2020-05-14T00:00:00 2020-05-14T00:00:00 2099-05-04T00:00:00 139704101 2 Response Example OK 0 139812101 UpdateFormItemValues 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.... 392302101 form-component-name-here 123456 GetDocument WSDL document_library.wsdl Required parameter id - id of saved file Example Request multi BDA7025DFBA9CDF53AE306DB4372AF3492FA59DBBD04 141942102 Example Response OK 1 141942102 AdminAtollon 141942102 DLIB000000008997 1PMP-Canvas.pdf 0 133780102 2020/06/22/141941102 0 134567102 204248 0 3 1PMP-Canvas.pdf 0 0 2020-06-22T16:27:00 2020-06-22T16:27:00 2020-06-22T00:00:00 2020-06-22T00:00:00 134687102 1 application/pdf; charset=binary 134567102 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 multi BDA7025DFBA9CDF53AE306DB4372AF3492FA59DBBD04 100 0 134567102 and aa.doc_parent is null The restriction means no older document versions would be returned as a result of query. Example Response OK 1 AdminAtollon 141942102 DLIB000000008997 1PMP-Canvas.pdf 0 133780102 2020/06/22/141941102 0 134567102 204248 0 3 1PMP-Canvas.pdf 0 0 2020-06-22T16:27:00 2020-06-22T16:27:00 2020-06-22T00:00:00 2020-06-22T00:00:00 134687102 1 application/pdf; charset=binary CreateGlobalText 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 acme 4D2...D04 invoice-footer 131485101 In 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 OK 0 1936935101 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 acme 61A...DBD04 new-phone-number 132716101 139663101 www.yourcompany.com/product/page www.company.com/product/page Extranet user added new phone number 2020-07-31 12:00 1 Example Response OK 400097101 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 acme 5B5EA....8BD04 2 491826101 491827101 1 utf-8 "Your team" <admin@mydomain.com> jan@safka.cz Welcome 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 OK 496505101 MSGS000000151828 0 GetSchedulerSettings 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 acme 6A941A9BC9EBEFAF585A4B936AA958755B1C85E2BD04 1234 2020-05-14T00:00:00 3 5 190 CZK 133629101 AAA Batteries 139704101 130 5 6170 6787 10 100 CreateProjectItem Response OK 0 139721101 ListLanguages Part of translate.wsdl Sample Request saas FB...C3 Sample Response Reduced to one item. iso-8859-2 2607000 Czech CZE cz 0 1 1 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 atollon 4A...04 1685000 contacttype Response Example OK 12 1883000 E-mail (other) 1 1884000 E-mail (personal) 1 1885000 E-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 ... 0 0 0 0 0 //--ID of event owner-user--// 0 //--ID of event owner-user--// Event location text //-- ID of custom state--// 0 0 0 //-- ID of customer folder--// 0 0 0 0 0 0 0 Event description text ... 2023-03-09T12:30:00 2023-03-09T12:00:00 0 //-- ID of type of work--// //----// 0 //--ID of event organizer-user--// Event summary main text 0 0 0 //--ID of event owner-user--// 2 2023-03-09T12:06:23 2023-04-09T00:00:00 1 0 0 0 0 4 12:00 12:30 0 0 1 1 Example Response Operation response: 'CreateEvent' OK create 107751483081 107751484081 107751483081 ContactFormRequest 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